Insert dòng đồng thời copy nội dung của dòng phía trên theo điều kiện của SP

Liên hệ QC

lmyhien

Thành viên mới
Tham gia
15/5/16
Bài viết
5
Được thích
1
Chào các anh chị,
Hiện tại công việc hằng ngày của em phải insert dòng khá nhiều và mất rất nhiều thời gian
Em cũng đã tìm trên google rất nhiều lần nhưng không có trường hợp nào tương tự của em
Bảng mô tả như bên dưới, đồng thời em đính kèm file mau, mong các anh chị giúp đỡ em nha
Em cảm ơn rất nhiều}}}}}}}}}}
A1
B1
C1
D1
...
O1
S1
T1
...
AN1
10.11...22
XYZ
A
B
...
N
10
11
...
22

Kết quả có được

A1
B1
C1
D1
...
O1
S1
T1
...
AN1
10
XYZ
A
B
...
N
10
11
...
22
11
XYZ
A
B
...
N
10
11
...
22
...
XYZ
A
B
...
N
10
11
...
22
22
XYZ
A
B
...
N
10
11
...
22

 

File đính kèm

  • File.xlsx
    11.8 KB · Đọc: 20
Lần chỉnh sửa cuối:
Chào các anh chị,
Hiện tại công việc hằng ngày của em phải insert dòng khá nhiều và mất rất nhiều thời gian
Em cũng đã tìm trên google rất nhiều lần nhưng không có trường hợp nào tương tự của em
Bảng mô tả như bên dưới, đồng thời em đính kèm file mau, mong các anh chị giúp đỡ em nha
Em cảm ơn rất nhiều}}}}}}}}}}
A1
B1
C1
D1
...
O1
S1
T1
...
AN1
10.11...22
XYZ
A
B
...
N
10
11
...
22

Kết quả có được

A1
B1
C1
D1
...
O1
S1
T1
...
AN1
10
XYZ
A
B
...
N
10
11
...
22
11
XYZ
A
B
...
N
10
11
...
22
...
XYZ
A
B
...
N
10
11
...
22
22
XYZ
A
B
...
N
10
11
...
22


Chắc phải dùng VBA, bạn xem thử.
 

File đính kèm

  • GPE_Insert.rar
    18.2 KB · Đọc: 41
Bạn thử xem file có đúng yêu cầu không nha:
 

File đính kèm

  • File.rar
    12.4 KB · Đọc: 32
Chắc phải dùng VBA, bạn xem thử.
Cảm ơn thầy Ba tê đã giải bài toán này rất gọn gàng
Nhưng em chưa hiểu code của thầy lắm, mong thầy giúp đỡ
Cái đoạn code
Mã:
Dim dArr(1 To 10000, 1 To 29)
có phải mục đích là tạo ra 1 biến mảng 2 chiều có 1 chiều là 1000 và 1 chiều là 29 phần tử không ạ?
Còn đoạn code
Mã:
 sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 29).Value
có phải mục đích là tạo ra 1 mảng bắt đầu từ A4 đến dòng cuối cùng có dữ liệu và kết thúc ở cột 29 không ạ?

Đến đoạn code tiếp theo này em không dịch nổi, mong thầy giải thích giúp em ạ
Mã:
For I = 2 To UBound(sArr)    
Tem = Split(sArr(I, 1), ".")
    For N = 0 To UBound(Tem)
        K = K + 1: dArr(K, 1) = Tem(N)
        For J = 2 To 29
            dArr(K, J) = sArr(I, J)
        Next J
    Next N
Next I


Đối với Đoạn code cuối
Mã:
With Sheets("GPE")  
  .Range("A5").Resize(K, 29) = dArr
End With
Đoạn cuối này Em hiểu gần như là dán kết quả sau khi chạy đoạn code trên vào vùng bắt đầu từ A5. và biến K là đại diện cho tất cả số dòng cần dán đúng không ạ
 
Lần chỉnh sửa cuối:
@Ba Tê: Em cảm ơn thầy rất rất nhiều @$@!^%@$@!^%-=.,,-=.,, (tại em thấy bạn Quang gọi là thầy, nên em gọi theo ạ)
File sẽ giúp em xử lý công việc nhanh chóng và không mất quá nhiều thời gian nữa. Chắc em phải tầm sư học đạo quá -\\/.

@Sharava36: File chưa đúng bạn ơi, với lại mình cũng không thấy chỗ nào để run data hoặc công thức, nhưng dù sao cũng cảm ơn bạn đã quan tâm nha @$@!^%
 
Cảm ơn thầy Ba tê đã giải bài toán này rất gọn gàng
Nhưng em chưa hiểu code của thầy lắm, mong thầy giúp đỡ
Cái đoạn code
Mã:
Dim dArr(1 To 10000, 1 To 29)
có phải mục đích là tạo ra 1 biến mảng 2 chiều có 1 chiều là 1000 và 1 chiều là 29 phần tử không ạ?
Còn đoạn code
Mã:
 sArr = .Range("A4", .Range("A4").End(xlDown)).Resize(, 29).Value
có phải mục đích là tạo ra 1 mảng bắt đầu từ A4 đến dòng cuối cùng có dữ liệu và kết thúc ở cột 29 không ạ?

Đến đoạn code tiếp theo này em không dịch nổi, mong thầy giải thích giúp em ạ
Mã:
For I = 2 To UBound(sArr)    
Tem = Split(sArr(I, 1), ".")
    For N = 0 To UBound(Tem)
        K = K + 1: dArr(K, 1) = Tem(N)
        For J = 2 To 29
            dArr(K, J) = sArr(I, J)
        Next J
    Next N
Next I


Đối với Đoạn code cuối
Mã:
With Sheets("GPE")  
  .Range("A5").Resize(K, 29) = dArr
End With
Đoạn cuối này Em hiểu gần như là dán kết quả sau khi chạy đoạn code trên vào vùng bắt đầu từ A5. và biến K là đại diện cho tất cả số dòng cần dán đúng không ạ

Tôi chỉ học lóm VBA trên GPE, không qua trường lớp nào cả nên không có "khái niệm" đúng sách vở, nên không thể giải thích.
Split() nó giống như Text to Column trong công cụ Excel. Từ đó bạn nghiên cứu thêm nhé.
Mấy chuyện khác hình như bạn hiểu "đúng đúng" rồi đó.
 
Cảm ơn thầy
em sẽ tiếp tục nghiên cứu theo hướng thầy gợi ý.
cho em hỏi thêm 1 câu nữa là khi sử dụng Spit() thì số lượng biến ban đầu khai báo cũng cố định là 4 biến (I,J,K,N) và 2 biến (dArr, sArr) ạ? hay tùy thuộc vào đề tài mà sẽ khai báo thêm
 
Web KT
Back
Top Bottom