hoangtran1176
Thành viên mới
- Tham gia
- 30/7/22
- Bài viết
- 31
- Được thích
- 12
Ít nhất cũng nêu các hạn chế ấy ra.Chào mọi người.
Nhờ mọi người hỗ trợ giúp có thể lập trình VBA để xuất thông tin khi có mã sản phẩm trùng nhau với ạ, trong file dính kèm. Dùng pivot có 1 số hạn chế nên mình không dùng ạ.
Mình cảm ơn
Do mình hay cập nhật thêm dữ liệu thô thường xuyên nên khi dùng pivot hơi mất thời gian để làm mới lại, công thêm nếu cột mã không trùng thì không có xuất khi đó mình không biết được pivot có đang đúng hay không.Ít nhất cũng nêu các hạn chế ấy ra.
Chứ bảo người ta cặm cụi viết code, chạm vào các hạn chế ấy lại phải viết lại à?
Trong khi chờ đợi code, nếu dùng Office 365 hãy tham khảo cách không dùng VBA.Chào mọi người.
Nhờ mọi người hỗ trợ giúp có thể lập trình VBA để xuất thông tin khi có mã sản phẩm trùng nhau với ạ, trong file dính kèm. Dùng pivot có 1 số hạn chế nên mình không dùng ạ.
Mình cảm ơn
Hix, mình không dùng Office 365 ạ, bản này của mình không xài được FILTER.Trong khi chờ đợi code, nếu dùng Office 365 hãy tham khảo cách không dùng VBA.
B1: Dùng cột phụ : Ví dụ cột L/Sheet Raw. Tại L5=COUNTIF($I$5:$I$606;$I5)===> Fill down
B2: Tại B13/ sheet xuat =FILTER(Raw!A5:K606;Raw!L5:L606>1), ==> Enter để có được kết quả.
Vậy dùng thử hàm này xem sao:Hix, mình không dùng Office 365 ạ, bản này của mình không xài được FILTER.
=IFERROR((INDEX(Raw!A$5:A$606,AGGREGATE(15,6,ROW($1:$1000)/(Raw!$L$5:$L$606>1),ROW($A1)))),"")
Bạn giải thích theo ý bạn muốn cống gắng thật logic và chi tết nhé. Nó viết cho mình gần 20 đoạn code mới đúng yêu cầu =)), nếu bạn đủ kiên trì nhẫn nại hỏi thì cũng ra ak bạn.Hay vậy bạn, chỉ mình cách hỏi chatGPT sao mà nó làm code cho mình vậy???
Bạn xài bẳn nào, mình không tiền xài bản free, nên không được như ý.Bạn giải thích theo ý bạn muốn cống gắng thật logic và chi tết nhé. Nó viết cho mình gần 20 đoạn code mới đúng yêu cầu =)), nếu bạn đủ kiên trì nhẫn nại hỏi thì cũng ra ak bạn.
Mình xài free nha bạn =))Bạn xài bẳn nào, mình không tiền xài bản free, nên không được như ý.
Mã:Sub CopyDuLieu() Dim wsSource As Worksheet Dim wsDestination As Worksheet Dim lastRow As Long Dim i As Long, j As Long, destRow As Long Dim dict As Object Dim sourceRange As Range, destRange As Range Dim cell As Range Dim sourceRow As Range Dim key As Variant ' Gán các worksheet cho bien Set wsSource = ThisWorkbook.Sheets("Raw") Set wsDestination = ThisWorkbook.Sheets("xuat") ' Xóa du lieu hien có trên Xuat, nhung không xóa tiêu d? c?t wsDestination.Rows("3:" & wsDestination.Rows.Count).ClearContents ' Kh?i t?o dictionary d? luu tr? s? l?n xu?t hi?n c?a m?i giá tr? trong c?t C Set dict = CreateObject("Scripting.Dictionary") ' T́m hàng cu?i cùng trong c?t C c?a Sheet1 lastRow = wsSource.Cells(wsSource.Rows.Count, "J").End(xlUp).Row ' L?p qua d? li?u trên c?t C c?a Sheet1 và t?o danh sách các hàng c?n xu?t For i = 4 To lastRow If Not dict.exists(wsSource.Cells(i, "J").Value) Then ' N?u giá tr? chua t?n t?i trong dictionary, thêm vào dictionary dict.Add wsSource.Cells(i, "J").Value, 1 Else ' N?u giá tr? dă t?n t?i trong dictionary, tang s? l?n xu?t hi?n lên 1 dict(wsSource.Cells(i, "J").Value) = dict(wsSource.Cells(i, "J").Value) + 1 End If Next i ' Xu?t các hàng t? danh sách c?n xu?t ra Sheet2 destRow = 3 ' B?t d?u t? hàng th? 2 trên Sheet2 For Each key In dict.keys If dict(key) > 1 Then ' Xu?t t?t c? các hàng n?u có mă trùng For i = 1 To lastRow If wsSource.Cells(i, "J").Value = key Then Set sourceRange = wsSource.Rows(i) sourceRange.Copy wsDestination.Rows(destRow) destRow = destRow + 1 End If Next i End If Next key ' Xóa d?i tu?ng dictionary kh?i b? nh? Set dict = Nothing MsgBox "Hoàn thành!" End Sub
Cái này khi năng nhấp chuột ở phần nào vậy bạn.Nên đưa vào thẻ code cho gọn.