Cập nhật dữ liệu sang sheet khác Có thay đổi trật tự các column theo điều kiện (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hongtu1803

Thành viên chính thức
Tham gia
1/2/13
Bài viết
69
Được thích
15
Nghề nghiệp
Luật sư
Nhờ các bác xem file đính kèm và trợ giúp.
Nội dung tóm tắt như sau:
Trong sheet "DuLieu" có nhiều cột, nhưng khi cập nhật qua sheet "BC" thì chỉ lấy 1 số cột nhất định (theo điều kiện tại dòng 1).
Vì Dữ liệu có rất nhiều cột không muốn đưa qua BC; ngoài ra, trong BC thứ tự các cột cũng thay đổi.
Tôi đã dùng hàm INDEX nhưng chạy quá chậm vì có đến 5000 dòng.
 

File đính kèm

Nhờ các bác xem file đính kèm và trợ giúp.
Nội dung tóm tắt như sau:
Trong sheet "DuLieu" có nhiều cột, nhưng khi cập nhật qua sheet "BC" thì chỉ lấy 1 số cột nhất định (theo điều kiện tại dòng 1).
Vì Dữ liệu có rất nhiều cột không muốn đưa qua BC; ngoài ra, trong BC thứ tự các cột cũng thay đổi.
Tôi đã dùng hàm INDEX nhưng chạy quá chậm vì có đến 5000 dòng.

Không rõ INDEX bạn làm sao???

làm thử CT thế này cho B2 (tiêu đề lun)
=INDEX(DuLieu!$B2:$J2,B$1)

copy cái này cho B2:G7,

là mong muốn,

và chắc là không chậm đâu - vì nó chỉ tra theo từng dòng từng dòng, thử file 5000 dữ liệu xem sao???
 
Upvote 0
Nhờ các bác xem file đính kèm và trợ giúp.
Nội dung tóm tắt như sau:
Trong sheet "DuLieu" có nhiều cột, nhưng khi cập nhật qua sheet "BC" thì chỉ lấy 1 số cột nhất định (theo điều kiện tại dòng 1).
Vì Dữ liệu có rất nhiều cột không muốn đưa qua BC; ngoài ra, trong BC thứ tự các cột cũng thay đổi.
Tôi đã dùng hàm INDEX nhưng chạy quá chậm vì có đến 5000 dòng.
Bạn thử chạy Sub này xem với 5000 dòng nó chạy trong bao lâu.
PHP:
Public Sub GPE()
Dim Arr1(), Arr2(), dArr(), I As Long, J As Long, t As Variant
t = Timer
Arr1 = Sheets("BC").[A1:G1].Value
With Sheets("Dulieu")
    Arr2 = .Range(.[B3], .[B65000].End(xlUp)).Resize(, 9).Value
End With
ReDim dArr(1 To UBound(Arr2, 1), 1 To 7)
For I = 1 To UBound(Arr2, 1)
    dArr(I, 1) = I
    For J = 2 To 7
        dArr(I, J) = Arr2(I, Arr1(1, J))
    Next J
Next I
With Sheets("BC")
    .[A3:G65000].ClearContents
    .[A3].Resize(I - 1, 7).Value = dArr
End With
MsgBox Timer - t
End Sub
 
Upvote 0
cảm ơn bác! chạy trên file đính kèm thì thấy ok. trở ngại lớn nhất là: cột ngày tháng nó không "chịu" định dạng tự động
 
Upvote 0
cảm ơn bác! chạy trên file đính kèm thì thấy ok. trở ngại lớn nhất là: cột ngày tháng nó không "chịu" định dạng tự động
"Má Ơi!"
Trong 2 sheet bạn định dạng trước mấy cột ngày tháng trước đi, rồi cho code chạy xem sao.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom