Copy và paste khi đang filter (1 người xem)

Liên hệ QC

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

donhungtin2013

Thành viên mới
Tham gia
14/8/14
Bài viết
171
Được thích
4
Trong file đính kèm em muốn copy cột J sang cột E cho những dòng có giá trị vì em đang filter bỏ những dòng #N/A. Nếu copy và paste thông thường thì nó không qua hết, em đã tìm hiểu trên diễn đàn nhưng các hướng dẫn em áp dụng vẫn không được, chắc phải dùng đến code nhờ mọi người cho em đoạn code này với, em cảm ơn nhiều.
 

File đính kèm

Bạn bỏ Filter ra

Dùng 1 cột phụ với công thức sau
Mã:
=IF(ISERROR(J5),E5,J5)
Sau đó Paste ngược trở lại cột E
 
Bạn bỏ Filter ra

Dùng 1 cột phụ với công thức sau
Mã:
=IF(ISERROR(J5),E5,J5)
Sau đó Paste ngược trở lại cột E

Cách này không ổn anh ơi vì cột E em trước đó đã có dữ liệu nếu mình xả filter ra dùng cột phụ rồi paste ngược lại cột E thì dữ liệu sau sẽ đè lên dữ liệu cũ, ý em muốn là để nguyên filter rồi paste sang vậy có cách nào khác không anh?
 
Cách này không ổn anh ơi vì cột E em trước đó đã có dữ liệu nếu mình xả filter ra dùng cột phụ rồi paste ngược lại cột E thì dữ liệu sau sẽ đè lên dữ liệu cũ, ý em muốn là để nguyên filter rồi paste sang vậy có cách nào khác không anh?
Bạn cần xét lại mục đích.

Mục đích là lấy giá trị filter để thay thế vào cột E, những gì còn lại tại cột E thì giữ nguyên

Vậy tại sao bạn không làm công thức cho toàn dữ liệu để lấy những gì filter rồi paste ngược trở lại, cách làm tương tự bài #2?
 
Bạn cần xét lại mục đích.

Mục đích là lấy giá trị filter để thay thế vào cột E, những gì còn lại tại cột E thì giữ nguyên

Vậy tại sao bạn không làm công thức cho toàn dữ liệu để lấy những gì filter rồi paste ngược trở lại, cách làm tương tự bài #2?

Anh ơi cột J của em là nó tham chiếu với các file khác nó luôn luôn biến động. Nếu em dùng cột phụ rồi copy như vậy thì dữ liệu mới sẽ đè lên dữ liệu cũ. Chắc là bó tay rồi anh ơi hic..
 
Bạn dùng code này thử xem:
Mã:
Sub GPE()
Dim dArr, rArr, i As Integer
 dArr = Sheet1.Range("E5:E" & Sheet1.Range("J65000").End(3).Row)
 rArr = Sheet1.Range("J5:J" & Sheet1.Range("J65000").End(3).Row)
For i = 1 To UBound(dArr, 1)
    If Application.WorksheetFunction.IsNA(rArr(i, 1)) = False Then dArr(i, 1) = rArr(i, 1)
Next i
Sheet1.Range("E5").Resize(UBound(dArr, 1)) = dArr
End Sub
 
Bạn sửa code lại như sau:
Mã:
Sub GPE()
Dim rArr As Range, i As Range
 Set rArr = Sheet1.Range("J5:J" & Sheet1.Range("J65000").End(3).Row)
For Each i In rArr
    If Application.WorksheetFunction.IsNA(i) = False Then i.Offset(, -5).Value = i.Value
Next i
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom