Em đang bị trục trặc như sau nhờ các thầy giải giúp:
Bài toán gồm Lọc dữ liệu ở sheet1, cop sang sheet 2 để lọc trùng và cop cột vừa lọc trùng và cột bên cạnh để paste value sang sheet 3, nhưng lúc chạy thì VBA chỉ cop Column đã lọc trùng paste sang chứ không kèm theo cột bên cạnh.
Sub timd()
Dim i As Long
i = Sheet1.Range("B2").End(xlDown).Row
' Sort sheet đầu tiên
Sheet1.Activate
ActiveSheet.Range("$B$2:$O$" & i).AutoFilter Field:=13, Criteria1:=Array( _
"NH", "XM", "ZT"), Operator:=xlFilterValues
'copy những giá trị được chọn của column F và paste sang column K của sheet 2
Range("F2:F" & i).Select
Selection.Copy
sheet2.activate
Range("K1").Select
ActiveSheet.Paste
'Lọc trùng Column K của sheet 2
ActiveSheet.Range("$K:$K").RemoveDuplicates Columns:=1, Header:=xlNo
'Tìm dòng cuối sau khi lọc trùng
Dim J As Long
J = Sheet2.Range("K2").End(xlDown).Row
'Cop từ K1 tới L và dòng cuối
Range("K1:L" & J).Copy
Selection.Copy
Selection.Copy
Sheet3.Activate
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Kết quả: VBA chỉ cop 1 cột K mà không có cột L
End Sub
Không nên dùng copy/paste để code bạn nhé, vì nó dễ lỗi và khó xác định đúng vị trí.
Bạn nên làm dạng:
Sheet1.Range(…).Value = Sheet2.Range(…).Value
Sau đó thực hiện các code định dạng riêng
Tức là chỉ lấy value sang thôi, còn định dạng là riêng. Và không phải copy paste trực tiếp từ nơi này sang nơi khác.
Cám ơn thầy nha, em đã hoàn thành được rồi.
Còn em tính thay cụm “Không có đá” thành “ĐH KO ĐÁ” trong VBA thì em nên viết thế nào được thầy, do VBA k có hỗ trợ tv nhưng hệ thống cty thì toàn tviet thôi ạ
Bạn viết chữ đó trong 1 ô, sau đó trong VBA bạn dùng ô đó để lấy giá trị.
Ví dụ: Điền chữ “ĐH ko đá” vào ô B2 trong sheet1
Sau đó muốn dùng code gán vào ô D6 trong sheet2 thì viết như sau:
Sheet2.Range("D6").Value = Sheet1.Range("B2").Value
(không viết trực tiếp mà viết theo giá trị tham chiếu)