Nguyên Hồng
Nguyên Hồng
Thảo luận 3 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 30 lượt xem

Copy từ sheet này sang sheet khác không hiệu quả với 2 column

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

Thảo luận 3 câu trả lời
Lượt xem 30 lượt xem
Vỗ tay vỗ tay
Nguyên Hồng 11:02 - Feb 23, 2023

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.

Vỗ tay vỗ tay
Nguyên Hồng 13:02 - Feb 23, 2023

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 ạ

 

Vỗ tay vỗ tay
Nguyên Hồng 17:02 - Feb 23, 2023

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)

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông