code vba vlookup thiếu các giá trị sau khi xoá những dòng không mong muốn (1 người xem)

  • Thread starter Thread starter lhtu
  • Ngày gửi Ngày gửi
Liên hệ QC

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

lhtu

Thành viên mới
Tham gia
22/5/10
Bài viết
23
Được thích
1
Em chào các anh/chị,

Em có thực hiện 1 đoạn code cho 1 vấn đề như sau:

Cho bảng
1.JPG
Bảng giá trị để vlookup là
3.JPG

Kết quả mong muốn là xoá những dòng có chứa ô blank hoặc xoá những dòng mà không có giá trị để vlookup (vlookup ra #N/A)

--> Trong VD trên sẽ xóa dòng 4,5 (do không có chứa ô blank) và dòng 3, 6 do có "f" nhưng f lại không có giá trị f trong bảng tham chiếu để vlookup).
--> Kết quả mong muốn
4.JPG

Tuy nhiên, khi chạy code kết quả lại bỏ qua mất việc vlookup các giá trị sau khi xoá dòng có chứa giá trị #N/A
2.JPG
Mong các anh chị góp ý bổ sung và tối ưu đoạn code giúp em ạ.

Mã:
Private Sub CommandButton1_Click()

Dim i As Integer

Columns("A:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  
i = 2
Do While Cells(i, 1) <> ""
    Cells(i, 3) = Application.VLookup(Cells(i, 1), Sheets("sheet2").Range("A:C"), 2, False)
        If IsError(Cells(i, 3)) Then
            Cells(i, 1).EntireRow.Delete
        Else
            Cells(i, 3).Value = Cells(i, 3)
        End If
        i = i + 1
Loop

i = 2
Do While Cells(i, 1) <> ""
    Cells(i, 4) = Application.VLookup(Cells(i, 2), Sheets("sheet2").Range("A:C"), 2, False)
        If IsError(Cells(i, 4)) Then
            Cells(i, 1).EntireRow.Delete
        Else
            Cells(i, 4).Value = Cells(i, 4)
        End If
        i = i + 1
Loop

End Sub

Em cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào các anh/chị,

Em có thực hiện 1 đoạn code cho 1 vấn đề như sau:

Cho bảng
View attachment 117974
Bảng giá trị để vlookup là
View attachment 117975

Kết quả mong muốn là xoá những dòng có chứa ô blank hoặc xoá những dòng mà không có giá trị để vlookup (vlookup ra #N/A)

--> Trong VD trên sẽ xóa dòng 4,5 (do không có chứa ô blank) và dòng 3, 6 do có "f" nhưng f lại không có giá trị f trong bảng tham chiếu để vlookup).
--> Kết quả mong muốn
View attachment 117976

Tuy nhiên, khi chạy code kết quả lại bỏ qua mất việc vlookup các giá trị sau khi xoá dòng có chứa giá trị #N/A
View attachment 117977
Mong các anh chị góp ý bổ sung và tối ưu đoạn code giúp em ạ.

Mã:
Private Sub CommandButton1_Click()

Dim i As Integer

Columns("A:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  
i = 2
Do While Cells(i, 1) <> ""
    Cells(i, 3) = Application.VLookup(Cells(i, 1), Sheets("sheet2").Range("A:C"), 2, False)
        If IsError(Cells(i, 3)) Then
            Cells(i, 1).EntireRow.Delete
        Else
            Cells(i, 3).Value = Cells(i, 3)
        End If
        i = i + 1
Loop

i = 2
Do While Cells(i, 1) <> ""
    Cells(i, 4) = Application.VLookup(Cells(i, 2), Sheets("sheet2").Range("A:C"), 2, False)
        If IsError(Cells(i, 4)) Then
            Cells(i, 1).EntireRow.Delete
        Else
            Cells(i, 4).Value = Cells(i, 4)
        End If
        i = i + 1
Loop

End Sub

Em cảm ơn
+ Kết quả dò tìm Cells(i, 3) và Cells(i, 4) bạn để ở Sheet nào vậy???(Sheet1 hay Sheet2).
+ Vùng tìm kiếm theo mình nên ghi rõ là: Sheets("sheet2").Range("A2:B6")
 
Lần chỉnh sửa cuối:
Upvote 0
Phần dữ liệu để tìm em tạm để ở sheet2 ạ.
Phần range em để "A:C" do dữ liệu có thể nhiều nên không giới hạn là Range"Ai:Bj" ạ (trên chỉ là ví dụ nên em đưa 1 vài giá trị giả định thôi ạ).
 
Upvote 0
Phần dữ liệu để tìm em tạm để ở sheet2 ạ.
Phần range em để "A:C" do dữ liệu có thể nhiều nên không giới hạn là Range"Ai:Bj" ạ (trên chỉ là ví dụ nên em đưa 1 vài giá trị giả định thôi ạ).
Bạn đưa File giả định nên để tôi còn Test thử.
 
Upvote 0
em đính kèm vào bài viết chính rồi ạ.
 
Upvote 0
Em đã thử đổi Private thành Public nhưng kết quả vẫn còn thừa 1 dòng cuối chưa được vlookup

Nếu "click" lại đến lần thứ 2 mới có giá trị.
 
Upvote 0
Bạn thử chưa vậy? Sao không thấy hồi âm???
 
Upvote 0
Em đã thử đổi Private thành Public nhưng kết quả vẫn còn thừa 1 dòng cuối chưa được vlookup

Nếu "click" lại đến lần thứ 2 mới có giá trị.
Bạn bấm nút "Vlookup" để xem kết quả.
Bạn kiểm tra xem code tôi đã sửa lại.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hình như anh hiểu nhầm ý em.

Phần dữ liệu cần xử lý chỉ ở sheet1,
sheet2: Cột từ A và B là giá trị tham chiếu để vlookkup còn phần bên cạnh là em để ví dụ, sau khi test macro ở sheet1 sẽ bị mất 1 số dòng nên em để phần đó để copy sang cho đỡ phải gõ lại để test ạ.
 
Upvote 0

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

Back
Top Bottom