Giúp đỡ cập nhập dữ liệu khi lọc và dùng mảng

Liên hệ QC

hoanganhvo2612

Thành viên thường trực
Tham gia
15/11/16
Bài viết
250
Được thích
129
Chào các bạn,
Mình có viết code VBA để cập nhật dữ liệu. Bài toán như sau:
Mình có bảng dữ liệu từ A9:D20, nhưng bảng dữ liệu này mình đang để chế độ lọc theo 1 số mã hàng. Mình cần cập nhật dữ liệu vào bảng này theo dữ liệu nhập ở G2:J2.
1622084963431.png

Mình có viết code để cập nhật như sau:
Mình đưa bảng data vào 1 mảng sau đó dùng vòng lặp để check, sau khi cập nhật mảng thì em dán lại vào sheet. Nhưng vấn đề là khi bảng dữ liệu đang lọc thì dán lại sẽ bị sai ạ.
Mong các bạn xem giúp mình. có cách nào vẫn để lọc và dùng mảng mà cập nhật dữ liệu được đúng không ạ?

Em nghĩ hướng là xét từng ô (cell) nhưng nếu dữ liệu lớn và cần cập nhập nhiều thì không khả thi vì nó sẽ gây chậm ạ. Đây chỉ là dữ liệu giả định để mọi người lắm được vấn đề ạ.

Cảm ơn cả nhà
Mã:
Sub test()
    Dim i As Integer, ar()
    ar = Range("A10:D20").Value
    For i = 1 To UBound(ar)
        If ar(i, 1) = Range("G2") Then
            ar(i, 3) = Range("I2"): ar(i, 4) = Range("J2")
        End If
    Next
    Range("A10").Resize(UBound(ar), UBound(ar, 2)) = ar
End Sub
 

File đính kèm

  • updateloc.xlsm
    16.1 KB · Đọc: 12
Upvote 0
Tôi không có tham vọng giải quyết thứ mà người ta chưa cần, chưa yêu cầu. Cứ thớt cần đến đâu làm đến đó.
Thớt hỏi sai người rồi.
Ở diễn đàn này có khoảng 2 người thích làm công việc"bao hết mọi yêu cầu". Hiện tại 1 người đã không còn thường xuyên vào đây. Người kia nếu thớt không biết thì đừng nên đòi hỏi nhiều, học cách tìm người có khả năng và nhã hứng đáp ứng nhu cầu của mình trước đã.
 
Upvote 0
Tôi làm theo dữ liệu của thớt. Vì dữ liệu của thớt có thế nên không dùng đít-sần.
Rich (BB code):
Sub CapNhat()
Dim arr(), ar()
Dim endR As Long, i As Long, k As Long
Dim rg As Range, cl As Range

    Set rg = Range("A10:A20").SpecialCells(xlCellTypeVisible)
    
    For Each cl In rg
        k = k + 1
        ReDim Preserve arr(1 To k)
        arr(k) = CStr(cl.Value)
    Next
    ar = Range("A10:D20").Value
    For i = 1 To UBound(ar)
        If ar(i, 1) = Range("G2") Then
            ar(i, 3) = Range("I2"): ar(i, 4) = Range("J2")
        End If
    Next
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    Range("A10").Resize(UBound(ar), UBound(ar, 2)) = ar
    Range("A9:A20").AutoFilter Field:=1, Criteria1:=arr, Operator:=xlFilterValues
End Sub
 
Upvote 0
em chào cả nhà., em đang mới về VBA nên cần các anh, chị support em với ạ.

Em đang làm công việc điều phối container đóng hàng, hàng ngày thì bên các hãng vận tải sẽ gửi trucking cho em (là các file Delta trucking, KART Trucking, NEC trucking..., các file này chứa thông tin số Container(CONT No), số chì ( SEAL NO)) của từng ngày đóng hàng (cột VANNING DATE). Tại file tổng Drop2 (file này chứa tất cả thông tin của mọi hãng vận tải , bao gồm 6 hãng tương ứng với 6 file), để update số CONT, số Chì thì em sẽ phải lọc ở file Drop2 ngày đóng hàng tương ứng(VANNING DATE) và Tên công ty vận tải (Cột TRUCKING COMPANY) , sau đó mở từng file ra (Delta Trucking, NEC Trucking, KART Trucking, ...) lấy số CONT, SỐ SEAL tương ứng, copy và paste vào cột CONT NO, SEAL NO (khi paste thì đối chiếu số PO_NO, SFX, QTY ở từng file nhỏ và file tổng).
Em đã tạo 1 file "Button" gồm 2 button "RUN" và "UPLOAD" để chạy macro, button RUN để tự động UPDATE số CONT, số SEAL mà không phải copy paste bằng tay nữa. Ví dụ ở đây, tại file Drop2 em sẽ lọc ngày VANNING DATE (cột L) là ngày 05/04/2021 (= E1) và lọc ở cột D (HP BRAND, CANON BRAND), Sau đó em copy tất cả dữ liệu em đã lọc sang sheet "DATA". Nhưng em không biết làm thế nào để copy số CONT, SỐ SEAL tương ứng ở các file con (các hãng vận tải ) vào. Chú ý là trước khi paste số CONT, số SEAL thì phải đối chiếu số PO_NO, SFX, QTY(những ô em bôi vàng) ở file tổng và file hãng vận chuyển có trùng nhau hay không, nếu trùng nhau thì mới paste vào.

Bỏ qua button UPLOAD cho em ạ.
File dưới là file em đính kèm.
Rất mong nhận được sự giúp đỡ của mọi người ạ.
 

File đính kèm

  • tr.zip
    5.8 MB · Đọc: 0
Upvote 0
em chào cả nhà., em đang mới về VBA nên cần các anh, chị support em với ạ.

Em đang làm công việc điều phối container đóng hàng, hàng ngày thì bên các hãng vận tải sẽ gửi trucking cho em (là các file Delta trucking, KART Trucking, NEC trucking..., các file này chứa thông tin số Container(CONT No), số chì ( SEAL NO)) của từng ngày đóng hàng (cột VANNING DATE). Tại file tổng Drop2 (file này chứa tất cả thông tin của mọi hãng vận tải , bao gồm 6 hãng tương ứng với 6 file), để update số CONT, số Chì thì em sẽ phải lọc ở file Drop2 ngày đóng hàng tương ứng(VANNING DATE) và Tên công ty vận tải (Cột TRUCKING COMPANY) , sau đó mở từng file ra (Delta Trucking, NEC Trucking, KART Trucking, ...) lấy số CONT, SỐ SEAL tương ứng, copy và paste vào cột CONT NO, SEAL NO (khi paste thì đối chiếu số PO_NO, SFX, QTY ở từng file nhỏ và file tổng).
Em đã tạo 1 file "Button" gồm 2 button "RUN" và "UPLOAD" để chạy macro, button RUN để tự động UPDATE số CONT, số SEAL mà không phải copy paste bằng tay nữa. Ví dụ ở đây, tại file Drop2 em sẽ lọc ngày VANNING DATE (cột L) là ngày 05/04/2021 (= E1) và lọc ở cột D (HP BRAND, CANON BRAND), Sau đó em copy tất cả dữ liệu em đã lọc sang sheet "DATA". Nhưng em không biết làm thế nào để copy số CONT, SỐ SEAL tương ứng ở các file con (các hãng vận tải ) vào. Chú ý là trước khi paste số CONT, số SEAL thì phải đối chiếu số PO_NO, SFX, QTY(những ô em bôi vàng) ở file tổng và file hãng vận chuyển có trùng nhau hay không, nếu trùng nhau thì mới paste vào.

Bỏ qua button UPLOAD cho em ạ.
File dưới là file em đính kèm.
Rất mong nhận được sự giúp đỡ của mọi người ạ.
Bạn đã đăng bài giông giống như thế này ở box Google Spreadsheets. Vậy thực sự bạn cần là vba hay gì?
 
Upvote 0
Web KT

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

Back
Top Bottom