Vlookup bằng VBA

Liên hệ QC

tranphuson

Thành viên thường trực
Tham gia
14/8/09
Bài viết
269
Được thích
10
Giới tính
Nam
Vui lòng giúp mình Vlookup bằng VBA - Khi gõ ký tự vào thì dò tìm dữ liệu hiện ra ở phía dòng trên dữ liệu đã gõ

Ví dụ: Gõ chữ A ở Cột B3 thì tự động hiện ra dòng phía trên B2 và B1 nội dung dò tìm ở Sheet "MA"

1638201123887.png

Xin cảm ơn
 

File đính kèm

Bạn thử xài cái này thay cho đứa con của bạn:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim J As Integer, Vung As Range, Ws As Worksheet, sRng As Range
    
    Set Ws = Sheets("MA")
    Set Vung = Ws.[A3].CurrentRegion
    Set Vung = Vung(1).Resize(Vung.Rows.Count)
    'MsgBox Vung.Address, , Vung.Parent.Name    '
    If Not Intersect(Target, Range("B3").Resize(, 9999)) Is Nothing Then
        If Target.Count = 1 Then
            Set sRng = Vung.Find(Target.Value, , xlFormulas, xlWhole)
            If sRng Is Nothing Then
                MsgBox "Nothing!"
            Else
                Target.Offset(-1).Value = sRng.Offset(, 1).Value
                Target.Offset(-2).Value = sRng.Offset(, 2).Value
                MsgBox "Xong Rôi!", , "GPE.COM Xin Chúc Mùng!"
            End If
        End If
    End If
End Sub

Chúc vui nha!
 
Bạn thử xài cái này thay cho đứa con của bạn:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim J As Integer, Vung As Range, Ws As Worksheet, sRng As Range
   
    Set Ws = Sheets("MA")
    Set Vung = Ws.[A3].CurrentRegion
    Set Vung = Vung(1).Resize(Vung.Rows.Count)
    'MsgBox Vung.Address, , Vung.Parent.Name    '
    If Not Intersect(Target, Range("B3").Resize(, 9999)) Is Nothing Then
        If Target.Count = 1 Then
            Set sRng = Vung.Find(Target.Value, , xlFormulas, xlWhole)
            If sRng Is Nothing Then
                MsgBox "Nothing!"
            Else
                Target.Offset(-1).Value = sRng.Offset(, 1).Value
                Target.Offset(-2).Value = sRng.Offset(, 2).Value
                MsgBox "Xong Rôi!", , "GPE.COM Xin Chúc Mùng!"
            End If
        End If
    End If
End Sub

Chúc vui nha!
Đúng như mình cần, cảm ơn bạn đã giúp
 
Đúng như mình cần, cảm ơn bạn đã giúp
Nhân tiện cho mình hỏi là khi kéo dữ liệu ở dòng dưới sang tay phải giống nhau thì phía trên lại không tự động chạy ra mà phải vô nhấn F2 hoặc enter thì mới hiện ra

Cảm ơn

1638244587589.png
 

File đính kèm

Bài này dùng công thức hợp lý hơn VBA.
VBA thì phải gõ công thức. Công thức thì phải "kéo" qua phải.

Người lười kéo công thức, và muốn cho bàng tính của mình "nguy hiểm" thì đòi VBA.
Cho đến khi nhìn ra vấn đề (như bài #7) thì lại hỏi tiếp.
GPE này nhiều người siêng code hơn công thức. Sẵn sàng code ở giai đoạn thô (nhìn yêu cầu bài #1 ai cũng biết nó sẽ còn vấn đề) và chờ phản hồi của thớt để tinh chỉnh sau.

Chú thích: giả thuyết "code cho nhanh" của thớt là hoàn toàn sai lầm.
Trường hợp bảng tính nhiều dữ liệu thì code chạy theo Worksheet_Change chậm hơn công thức.
 
Nhân tiện cho mình hỏi là khi kéo dữ liệu ở dòng dưới sang tay phải giống nhau thì phía trên lại không tự động chạy ra mà phải vô nhấn F2 hoặc enter thì mới hiện ra

Cảm ơn

View attachment 269835
Trong code có
Mã:
If Target.Count = 1 Then
    Set sRng = Vung.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Nothing!"
    Else
        Target.Offset(-1).Value = sRng.Offset(, 1).Value
        Target.Offset(-2).Value = sRng.Offset(, 2).Value
        MsgBox "Xong Rôi!", , "GPE.COM Xin Chúc Mùng!"
    End If
End If
Khi "nắm" góc dưới bên phải của ô B3 rồi kéo tới H3 mới thả chuột thì vùng thay đổi là C3:H3 = Target. Lúc này Target.Count = 6 (C3:H3 có 6 ô) nên điều kiện Target.Count = 1 không thỏa, kết cục là cả cụm IF ... End If không được thực hiện.
 
Web KT

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

Back
Top Bottom