Xin viết dùng mã vba thay thế cho hàm vlookup

classicgt

Thành viên mới
Tham gia ngày
4 Tháng bảy 2009
Bài viết
12
Được thích
0
Điểm
663
Tuổi
35
Bạn gởi file cụ thể lên đi, tưởng tượng ra ý bạn muốn thì khó quá.
Vâng, vẫn là file cũ ah!
Bài đã được tự động gộp:

Bạn gởi file cụ thể lên đi, tưởng tượng ra ý bạn muốn thì khó quá.
Ý em là ở Sheet "MA" thứ tự các cột là "mã, tên, đơn vị, đơn giá" khi giá trị tìm kiếm ở sheet "CT" thì thứ tự các cột có thể thay đổi "mã, xx,xx tên, đơn giá, đơn vị..." chẳng hạn. Không theo thứ tự cột thì phải làm thế nào ah?
 

File đính kèm

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

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,705
Được thích
2,647
Điểm
360
Vâng, vẫn là file cũ ah!
Bài đã được tự động gộp:


Ý em là ở Sheet "MA" thứ tự các cột là "mã, tên, đơn vị, đơn giá" khi giá trị tìm kiếm ở sheet "CT" thì thứ tự các cột có thể thay đổi "mã, xx,xx tên, đơn giá, đơn vị..." chẳng hạn. Không theo thứ tự cột thì phải làm thế nào ah?
Thử cái này.
 

File đính kèm

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,705
Được thích
2,647
Điểm
360
Em cảm ơn anh rất nhiều, tuy ở đây có 1 cái lỗi là khi quét giá trị ở cột "MA" của sheet "CT" thì giá trị tìm kiếm không tự xóa theo mà phải xóa từng mã một. Có cách nào khắc phục không ah.
Không hiểu ý của bạn lắm.Nói rõ xem nào.
 

classicgt

Thành viên mới
Tham gia ngày
4 Tháng bảy 2009
Bài viết
12
Được thích
0
Điểm
663
Tuổi
35
Không hiểu ý của bạn lắm.Nói rõ xem nào.
Quét xóa giá trị ở cột "MA" của sheet "CT" thì các giá trị tìm kiếm không xóa theo, mà chỉ xóa được từng mã một. Anh cứ xóa giá trị ở cột "MA" sẽ thấy ah.
Bài đã được tự động gộp:

Không hiểu ý của bạn lắm.Nói rõ xem nào.
Quét vùng đó và xóa thì giá trị tìm kiếm không tự xóa ah, chỉ xóa từng mã một thì mới được. Và còn 1 cái chưa hoàn thiện nữa nhờ anh giúp em là khi copy mã paste vào cột "MA" thì các giá trị tìm kiếm không nhận được mà chỉ nhập từng mã một mới nhận giá trị tìm kiếm ah. Anh giúp em khắc phục được điểm này nữa thì sẽ hoàn thiện hơn ạ. Em xin chân thành cảm ơn!
 

File đính kèm

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

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,711
Được thích
16,718
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
Vâng, vẫn là file cũ ah!
Bài đã được tự động gộp:


Ý em là ở Sheet "MA" thứ tự các cột là "mã, tên, đơn vị, đơn giá" khi giá trị tìm kiếm ở sheet "CT" thì thứ tự các cột có thể thay đổi "mã, xx,xx tên, đơn giá, đơn vị..." chẳng hạn. Không theo thứ tự cột thì phải làm thế nào ah?
Bạn xem thử file này.
 

File đính kèm

classicgt

Thành viên mới
Tham gia ngày
4 Tháng bảy 2009
Bài viết
12
Được thích
0
Điểm
663
Tuổi
35
Thật tuyệt, cảm ơn anh rất nhiều.
Em còn một điểm mong các anh giúp em nữa. Đó là Khi em tạo một Spinner như trong file, khi biến chạy tăng thì bảng dữ liệu tự cập nhật. Các anh giúp em một lần nữa, nếu được như vậy em xin chân thành cảm ơn ạ!
 

File đính kèm

classicgt

Thành viên mới
Tham gia ngày
4 Tháng bảy 2009
Bài viết
12
Được thích
0
Điểm
663
Tuổi
35
Thật tuyệt, cảm ơn anh rất nhiều.
Em còn một điểm mong các anh giúp em nữa. Đó là Khi em tạo một Spinner như trong file, khi biến chạy tăng thì bảng dữ liệu tự cập nhật. Các anh giúp em một lần nữa, nếu được như vậy em xin chân thành cảm ơn ạ!
Mong các anh giúp em với ạ? có như vậy mới thay thế được Vlookup khi có dùng công cụ Spinner. Em xin chân thành cảm ơn!
 
Lần chỉnh sửa cuối:

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,705
Được thích
2,647
Điểm
360
Thật tuyệt, cảm ơn anh rất nhiều.
Em còn một điểm mong các anh giúp em nữa. Đó là Khi em tạo một Spinner như trong file, khi biến chạy tăng thì bảng dữ liệu tự cập nhật. Các anh giúp em một lần nữa, nếu được như vậy em xin chân thành cảm ơn ạ!
Bạn xem.
 

File đính kèm

DarKLov3

Thành viên chính thức
Tham gia ngày
20 Tháng mười hai 2010
Bài viết
59
Được thích
17
Điểm
370
Mã:
Dim i As Long
                For i = 1 To Range("K10000").End(xlUp).Row - 5
                    Range("D" & i + 5).Value = WorksheetFunction.VLookup(Range("K" & i + 5).Value, Sheet7.Range("B3:G400"), 2, 0)
                    Range("E" & i + 5).Value = WorksheetFunction.VLookup(Range("K" & i + 5).Value, Sheet7.Range("B3:G400"), 3, 0)
                    Range("F" & i + 5).Value = WorksheetFunction.VLookup(Range("K" & i + 5).Value, Sheet7.Range("B3:G400"), 4, 0)
                    Range("L" & i + 5).Value = WorksheetFunction.VLookup(Range("K" & i + 5).Value, Sheet7.Range("B3:G400"), 6, 0)
                    Range("O" & i + 5).Value = WorksheetFunction.VLookup(Range("K" & i + 5).Value, Sheet7.Range("B3:G400"), 5, 0)
                    Range("J" & i + 5).Value = WorksheetFunction.VLookup(Range("P" & i + 5).Value, Sheet7.Range("H3:I400"), 2, 0)
                Next
Ai có thể giúp em viết code dùng mảng để thay thế đoạn code này của em với ạ. Code này chạy hơi chậm do phải load lại tất cả các dòng.nếu sau này Data có vài nghìn dòng thì đơ luôn quá. Em mày mò viết, không học cơ bản nên có gì các anh chị thông cảm.

Em muốn là khi ấn nhập dữ liệu hoặc sửa dữ liệu thì các cột D, E, F, L, O, J sẽ tự điền luôn ạ.
Em xin chân thành cám ơn ạ.
 

File đính kèm

leduongfhs

Thành viên mới
Tham gia ngày
27 Tháng mười một 2017
Bài viết
5
Được thích
0
Điểm
163
Tuổi
30
Tôi thấy có vẻ nhiều người hơi lạm dụng Dictionary. Dictionary mạnh và không dễ thay thế được trong một vài trường hợp không có nghĩa là nó tốt cho mọi trường hợp. Tỏi nếu nấu với món "này" thì tuyệt nhưng không có nghĩa là nấu món nào cũng cho tỏi. Không phải mổ trâu, lợn, gà, bóc tỏi, gọt táo đều dùng dao mổ trâu. Lợi thì chắc không mà hại thì nhiều.
Sửa một chút code trên thành

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I, Vung, Ws
    Set Ws = Sheets("MA")
    Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 4)
    If Not Intersect(Target, Range("B4:B1000")) Is Nothing Then
        If Target.Count = 1 Then
            For I = 1 To UBound(Vung)
                If Vung(I, 1) = Ucase(Target.Value) Then
                    Target.Offset(, 1) = Vung(I, 2)
                    Target.Offset(, 2) = Vung(I, 3)
                    Target.Offset(, 5) = Vung(I, 4)
                    Exit For
                End If
            Next I
        End If
    End If
End Sub
nếu tôi không lầm thì code tốt hơn. Trong trường hợp xấu nhất thì cũng chỉ phải duyệt (FOR) tất cả các dòng của Vung, còn trong trường hợp tốt nhất thì chỉ duyệt có 1 dòng. Dùng Dictionary như trên luôn phải duyệt tất cả các dòng, rồi với mỗi dòng đó làm "động tác" d.Add ... (thừa)
Nếu số dòng không phải là "vài" mà là "mấy trăm" (mã không phải là A --> Z mà là vd. wxyz) thì chắc chắn code dùng Dictionary như trên sẽ làm nhiều việc hơn, lâu hơn.
MỌI NGƯỜI CHO EM HỎI, EM DÙNG CODE NÀY NHƯNG KHI E THAY MÃ ABCD THÀNH SỐ 1234 THÌ LẠI KHÔNG ĐƯỢC NHỈ?
 

leduongfhs

Thành viên mới
Tham gia ngày
27 Tháng mười một 2017
Bài viết
5
Được thích
0
Điểm
163
Tuổi
30

File đính kèm

anhtuan2939

Thành viên mới
Tham gia ngày
5 Tháng bảy 2016
Bài viết
34
Được thích
28
Điểm
165
chào cả nhà, e có file như ở dưới nhờ mọi người sửa lại mã code để khi e sửa dữ liệu nguồn ở sheet11111 thì dữ liệu ở sheet22222 sẽ tự động cập nhật theo giống như hàm vlookup đó. Trong sheet22222 thì cột S dùng để nhập mã tham chiếu, các cột còn lại là kết quả cần hiện. E xin cám ơn!
 

File đính kèm

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

phuongmda

Thành viên mới
Tham gia ngày
28 Tháng ba 2009
Bài viết
6
Được thích
0
Điểm
663
Tuổi
31
Xin chào các anh chị ạ
Em xin hỏi câu hỏi như chủ top nhưng sheet MA lại là 1 file khác không cùng trên worksheet này thì làm như thế nào ạ
em muốn dán đường dẫn file MA đó vào ô nào đâý ở sheet CT, để khi thay đổi thì chỉ cần paste đường dẫn mới của MA vào đó là ok ạ
cảm ơn các anh chị
 

kaominh.90

Thành viên mới
Tham gia ngày
18 Tháng bảy 2020
Bài viết
2
Được thích
0
Điểm
13
Tuổi
29
1595218677683.png

Nhờ cả nhà giúp đỡ với ah.
Em chạy công thức này trên file của e nó cứ báo Micro name. Vậy nghĩa là sao vậy ah.
1595219359803.png
Em gửi file của e nhờ các bác chỉ dạy. Em ko có hiểu gì về VBA hết nên chỉ biết copy, paste vô thôi ah.
 

File đính kèm

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

nh0c_nhoem

Thành viên mới
Tham gia ngày
12 Tháng hai 2014
Bài viết
14
Được thích
1
Điểm
365
Tuổi
28
Chào mọi người

Cho em hỏi là cùng 1 đoạn code mà trên máy em lại không chạy được nhưng qua máy khác lại chạy được.

Mọi người chỉ cho em khắc phục lỗi này với ạ. Em cám ơn!
 
Top Bottom