Thay Code cho hàm Vlookup() (1 người xem)

Liên hệ QC

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

0905744404

Thành viên thường trực
Tham gia
26/10/10
Bài viết
333
Được thích
107
Nghề nghiệp
Trước là : Thủ Kho - còn giờ thì :"Tài Xế"
Em nhờ mọi cả nhà giúp em viết code chuyển từ hàm Vlookup() sang Code VBA
 
...
chỉ góp ý vậy thôi, tùy ý thích của mỗi người mà..........hihihihih

Ý thích? bạn đưa cây tiểu liên cho một cậu thanh niên mới lớn, cậu ta sẽ quẳng cây súng trường, không xài nữa.

Một khi người ta làm quen với code rồi thì 10 người có hết 9 lấy cớ công thức "dễ sai", hoặc "dữ liệu nhiều nặng file" để sử dụng code VBA.
 
Upvote 0
Cảm ơn anh VetMini góp ý. Chắc không hẳn vậy đâu. Nhưng trong trường hợp này cũng có một chút lười trong đó thật anh ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Sheet2.Range("C1:C5") = Ham.VLookup(Sheet2.Range("B1:B5").Value, Sheet1.Range("B1:C5"), 2, 0)


Dạ, cấu trúc file thật của em đây.
Code này của anh Hoàng Trọng Nghĩa viết mới tìm 1 cột em muốn tìm thêm 1 cột nữa.
Sub Test()
Dim Ham As WorksheetFunction
Set Ham = WorksheetFunction
Sheet2.Range("D1") = Ham.VLookup(Sheet2.Range("A1").Value, Sheet1.Range("A1:B50"), 2, 0)
End Sub

Thử với code này xem sao:

Mã:
Sub Find()
    Dim i&, LookUp(), KQ(), Rng As Range
    
    LookUp = Range(Sheet3.[B3], Sheet3.[B65000].End(3))
    ReDim KQ(1 To UBound(LookUp), 1 To 2)
    For i = 1 To UBound(LookUp)
        Set Rng = Sheet2.[A1:A65000].Find(LookUp(i, 1), , , 1)
        If Not Rng Is Nothing Then
            KQ(i, 1) = Rng(, 2)
            KQ(i, 2) = Rng(, 3)
        End If
    Next
    Sheet3.[C3].Resize(i - 1, 2) = KQ


End Sub

Chỉ có điều là trường hợp nhiều tên trùng nhau thì sao ta? với code này chỉ tìm được dòng đầu tiên thôi nha.
 
Lần chỉnh sửa cuối:
Upvote 0
sẳn đề tài này, góp một ý như sau:
anh em viết cho một đoạn code vlookup có giá trị trùng.
cho dữ liệu nhiều nhiều mọt chút, ví dụ 10,20 ngàn dòng
 
Upvote 0
sẳn đề tài này, góp một ý như sau:
anh em viết cho một đoạn code vlookup có giá trị trùng.
cho dữ liệu nhiều nhiều mọt chút, ví dụ 10,20 ngàn dòng

Tôi chưa hiểu ý bạn lắm, dù trùng thì vlookup vẫn ra kết quả là dòng đầu tiên tìm thấy, hay bạn muốn nó lấy kết quả ở dòng cuối cùng?
 
Upvote 0
Tôi chưa hiểu ý bạn lắm, dù trùng thì vlookup vẫn ra kết quả là dòng đầu tiên tìm thấy, hay bạn muốn nó lấy kết quả ở dòng cuối cùng?

lấy giá trị kế tiếp chứ
ví dụ bảng do
a1 --- 1
a2 --- 2
a1 --- 3
a1 --- 4
thì kết quả dò trả về theo thứ tự trên
a1 ---1
a1 ---3
a1 ---4
tức là để áp ụp trong trường hợp không thể áp dụng vlookup đó
cám ơn
 
Upvote 0
lấy giá trị kế tiếp chứ
ví dụ bảng do
a1 --- 1
a2 --- 2
a1 --- 3
a1 --- 4
thì kết quả dò trả về theo thứ tự trên
a1 ---1
a1 ---3
a1 ---4
tức là để áp ụp trong trường hợp không thể áp dụng vlookup đó
cám ơn

Bạn cho file giả lập trên xem thử (với bảng dò chừng 20 dòng là được)
 
Upvote 0
lấy giá trị kế tiếp chứ
ví dụ bảng do
a1 --- 1
a2 --- 2
a1 --- 3
a1 --- 4
thì kết quả dò trả về theo thứ tự trên
a1 ---1
a1 ---3
a1 ---4
tức là để áp ụp trong trường hợp không thể áp dụng vlookup đó
cám ơn
Có phải bạn muốn Filter những giá trị a1?
 
Upvote 0
lấy giá trị kế tiếp chứ
ví dụ bảng do
a1 --- 1
a2 --- 2
a1 --- 3
a1 --- 4
thì kết quả dò trả về theo thứ tự trên
a1 ---1
a1 ---3
a1 ---4
tức là để áp ụp trong trường hợp không thể áp dụng vlookup đó
cám ơn
Em cũng đang mong code cho bài dạng này. Lót dép ngồi hóng ^^
 
Upvote 0
Bạn cho file giả lập trên xem thử (với bảng dò chừng 20 dòng là được)

thực ra thì dự đ5nh để anh em mới dzọc code tập chơi, sư phụ nhả vô thì hết đề tài nói rồi........hhiihihihihih
anh em mới học code làm thử
cám ơn
 

File đính kèm

Upvote 0
thực ra thì dự đ5nh để anh em mới dzọc code tập chơi, sư phụ nhả vô thì hết đề tài nói rồi........hhiihihihihih
anh em mới học code làm thử
cám ơn

không có bạn nào hứng thú hết.........hihihihihi
================
các phương án:
1- làm trên range: 2 vòng lặp lồng vào nhau
2- làm trên range: dùng Find method, kết quả trả trực tiếp trên range
3- làm trên range: dùng Find method, kết quả trả kết quả trên mảng.
4- làm trên mảng: dùng 2 vòng lặp lồng nhau
5- dùng dictionary
 
Upvote 0
Không phải là không hứng thú, mà là đề bài này không thực tế, nếu bố trí dữ liệu mà trùng nhau như vậy thì làm cho vui thôi
 
Upvote 0
Không phải là không hứng thú, mà là đề bài này không thực tế, nếu bố trí dữ liệu mà trùng nhau như vậy thì làm cho vui thôi

cám ơn anh đã góp ý
về tính thực tế thì tôi thấy người ta hỏi đầy trên diễn đàn này về vấ đề này, số liệu thực tế mà người ta áp dụng trong công việc của người ta
tôi nghĩ là trong trường hợp nào đó, đối với người nào đó thì nó là thực tế
cái thứ 2 thì dùng để những bạn nào mới làm quen với code thực tập vòng lặp cũng tốt
====================
thôi thì nhờ mod nào đi ngang qua xóa dùm các bài này

cám ơn
 
Upvote 0
Em thấy chủ đề này cũng hay thế cơ mà. Thực tế thì phải tùy người tùy yêu cầu công việc. Ai thấy không thực tế, không hứng thú thì có thể đọc rồi bỏ qua. Còn xóa thì nghĩ chắc là không cần thiết. Với những người trình độ "gà vịt" như em thì vẫn muốn học mà.
 
Upvote 0
Thực tế là em đang cần áp dụng đó!nên vẫn hóg dép cho cao thú cho e học
 
Upvote 0
thôi thì nhờ mod nào đi ngang qua xóa dùm các bài này

cám ơn

Sao lại xóa?
Cái chuyện có thực tế hay không ta tạm bỏ qua đi nha. Vấn đề là tôi nhận thấy để viết được code cho bài này cũng không phải chuyện dễ ăn đâu... và nếu viết mà có thể bẫy được các lỗi "tào lao" thì càng mệt hơn nữa
Bởi vậy, đây là cơ hội cho các bạn có "việc" để làm nè
Ẹc... Ẹc...
 
Upvote 0
lấy giá trị kế tiếp chứ
ví dụ bảng do
a1 --- 1
a2 --- 2
a1 --- 3
a1 --- 4
thì kết quả dò trả về theo thứ tự trên
a1 ---1
a1 ---3
a1 ---4
tức là để áp ụp trong trường hợp không thể áp dụng vlookup đó
cám ơn

người hỏi cũng phải có người trả lời mới sinh động chứ sao lại xóa ?
người hỏi không nói trường hợp nếu gọi đến a1 lần thứ >4 thì trả về giá trị nào ? vẫn là a1---4 hay quay ngược về a1---1
giải quyết cho a1---4 khi gọi đến a1 lần thứ >4
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom