Cần hướng dẫn và trợ giúp về sử dụng Vlookup trong VBA excel! (1 người xem)

Liên hệ QC

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

tiendo1988

Thành viên chính thức
Tham gia
6/8/09
Bài viết
82
Được thích
11
Trợ giúp CODE VBA để thay thế cho hàm Vlookup

1. Nhờ AE GPE chỉ giúp CODE VBA để thay thế cho hàm VLookup.

2. Mình dựa trên đoạn code VBA của anh Trần Văn Hoành (sử dụng trong chương trình quản lý nhân sự mã nguồn mở bằng VBA). sau khi xem đoạn code thì em nghĩ rằng mục đích của đoạn code là để thay thế cho việc sử dụng hàm "Vlookup" trên bảng tính và đã sửa để cho phù hợp với yêu cầu của minh:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
k = 1
i = Cells(Rows.Count, 2).End(xlUp).Row
If Target.Column = 2 Then
j = Target.Row
If j < 12000 And j > 5 Then
m = Target.Value
Select Case Target.Value
    Case ""
    Range("C" & j & ":D" & j & ":E" & j & ":F" & j & ":G" & j & ":H" & j & ":I" & j & ":J" & j & ":K" & j & ":L" & j & ":M" & j & ":N" & j & ":O" & j & ":P" & j & ":Q" & j & ":R" & j).ClearContents
     Range("S" & j & ":T" & j & ":U" & j & ":V" & j & ":W" & j & ":X" & j).ClearContents
    Application.EnableEvents = False
    Range("A6:A65000").ClearContents
    If Not Intersect(Range("A6:B65000"), Target) Is Nothing Then
    For j = 6 To i
    If Cells(j, 2) <> "" Then
    Cells(j, 1) = k
    k = k + 1
    End If
    Next
    End If
    Application.EnableEvents = True
    Case Is <> ""
    Range("D" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 2, 0)
    Range("E" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 3, 0)
    Range("G" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 5, 0)
    Range("H" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 6, 0)
    Range("I" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 14, 0)
    Range("K" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 7, 0)
    Range("L" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 8, 0)
    Range("M" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 11, 0)
    Range("N" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 15, 0)
    Range("O" & j).Value = Application.WorksheetFunction.VLookup(m, LLNV.Range("NVArray"), 4, 0)
    Application.EnableEvents = False
    Range("A6:A65000").ClearContents
    If Not Intersect(Range("A6:B65000"), Target) Is Nothing Then
    For j = 6 To i
    If Cells(j, 2) <> "" Then
    Cells(j, 1) = k
    k = k + 1
    End If
    Next
    End If
    Application.EnableEvents = True
End Select
Range("B6:A12000").EntireRow.Hidden = False
Range("B" & Range("B65000").End(xlUp).Row + 1 & ":B12000").EntireRow.Hidden = False
Range("B" & j).Select
End If
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Song kiến thức về VBA của mình còn quá yếu nên không biết sửa sao cho doạn code này nó chạy được.

Rất mong sự giúp đỡ của Các Pro trên GPE:

- chỉ cho em đoạn code để có thể thay thế hàm Vlookup trên bảng tính.
- Pro nào hiểu được ý tưởng trong đoạn code trên thì giúp em hoàn thiện đoạn code đó.

Mong các Pro trên GPE dành chút thời gian giúp đỡ!
Chân thành cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Rất mong nhận được giúp đỡ của các AE GPE trong thời gian sớm nhất
 
Upvote 0
Khỏi cần đưa code lên làm gì cho mất công, chỉ cần bạn mô tả chỉ tiết: bạn muốn làm gì trong file của bạn là được rồi

Vâng có thể do em chưa nói rõ nên các Pro không biết em muốn làm gì trong file để giúp đỡ.
Bình thường thì em nhập liệu ở cột C (cột SỐ THẺ) trong sheet ChiTiet, và các cột còn lại em sử dụng hàm "Vlookup" trên các cột còn lại để dò tìm các thông tin theo SỐ THẺ, các thông tin : NGÀY VÀO, NGÀY SINH, SỐ CMND... sẽ được lấy từ Sheet "LLNV" để điền vào tự động.

Em Muốn nhờ anh ndu96081631 cùng các AE GPE viết code VBA giúp để: trên Sheet ChiTiet:
- Khi nhập dữ liệu vào cột SỐ THẺ thì dữ liệu trên các cột NGÀY VÀO, NGÀY SINH, GIỚI TÍNH... sẽ được tự động điển vào.
- Khi xóa dữ liệu trên cột SỐ THẺ THÌ dữ liệu trên các cột NGÀY VÀO, NGÀY SINH, GIỚI TÍNH... sẽ được tự động biến mất.
- Khi này em không còn phải sử dụng hàm Vlookup ở các cột NGÀY VÀO, NGÀY SINH, GIỚI TÍNH... nữa.

Rất mong các Anh ndu96081631 và các AE GPE giúp đỡ.
Em xin gửi lời cảm ơn tới AE GPE đã quan tâm!
 
Upvote 0
Xin cả nhà giúp em công thức VBA với.

Em có một file cần lọc dữ liệu. File của em rất nhiều dòng cần lọc lên dùng công thức nó không chạy lên được. Em đã biết công thức VBA rất hay, nhưng không thể nào mà học được, file này em cũng đang rất cần nên nó không thể chờ em tự mày mò được. hihi em rất mong được sự giúp đỡ của cả nhà. Em cảm ơn mọi người nhiều ạ. Em xin gửi file lên như sau.
 

File đính kèm

Upvote 0
Em có một file cần lọc dữ liệu. File của em rất nhiều dòng cần lọc lên dùng công thức nó không chạy lên được. Em đã biết công thức VBA rất hay, nhưng không thể nào mà học được, file này em cũng đang rất cần nên nó không thể chờ em tự mày mò được. hihi em rất mong được sự giúp đỡ của cả nhà. Em cảm ơn mọi người nhiều ạ. Em xin gửi file lên như sau.

Copy code này vào 1 Module

PHP:
Sub loc()
Dim kq(), dl(), i As Long, j As Long, k As Long, sh As Worksheet, n As Byte
Set sh = ActiveSheet
With Sheets("TH")
    dl = .Range(.[a11], .[a65536].End(3)).Resize(, 14).Value
End With
ReDim kq(1 To UBound(dl), 1 To 14)
n = Switch(sh.Name = "TQ", 1, sh.Name = "CT", 2, sh.Name = "DT", 3, sh.Name = "KMCP", 4)
For i = 1 To UBound(dl)
    If dl(i, 3 + n) <> "" Then
        If dl(i, 3 + n) = sh.[c9].Value Then
            k = k + 1
            For j = 1 To 14
                kq(k, j) = dl(i, j)
            Next
        End If
    End If
Next
sh.[a11:n20000].ClearContents
sh.[a11].Resize(k, 14) = kq
End Sub
Copy code này vào 4 sheets cần lọc
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [c9].Address Then loc
End Sub
 
Upvote 0
Em có một file cần lọc dữ liệu. File của em rất nhiều dòng cần lọc lên dùng công thức nó không chạy lên được. Em đã biết công thức VBA rất hay, nhưng không thể nào mà học được, file này em cũng đang rất cần nên nó không thể chờ em tự mày mò được. hihi em rất mong được sự giúp đỡ của cả nhà. Em cảm ơn mọi người nhiều ạ. Em xin gửi file lên như sau.
Thất nghiệp, làm "thí thí" theo kiểu 4 in 1, không xài được thì thôi.
Sheet GPE, chọn dữ liệu cho ô C8 rồi chọn cho ô D8, nheo một cái là xong.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom