Xin giúp đỡ code VBA về hàm Vlookup (1 người xem)

Liên hệ QC

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

tuandat106

Thành viên mới
Tham gia
19/4/11
Bài viết
49
Được thích
2
Chị chào các anh chị trong GPE. Mình có file theo doi xuất nhập vật tư, vì dữ liệu hàng tháng quá lớn nên file quá chậm khi dùng hàm vlookup. Vậy mình xin nhờ anh chị em GPE viết giúp code vba thay thề hàm vlookup.
Cụ thể mình đã ghi chú trong file đính kèm tại sheet "In Phieu".
Xin chân thành cám ơn ACE.
 

File đính kèm

Lần chỉnh sửa cuối:
Sao bạn không thu gọn file lại, biến thành file giả lập & đưa lên diễn đàn;

Diễn đàn đâu có cần file đồ sộ làm chi đâu?!

Nói nhỏ với bạn: Cái đường dẫn đó bạn có chịu trách nhiệm với nó đâu kia chứ!

Tóm lại là ngại & cho qua!
 
Upvote 0
thanks bạn đã góp ý. mình đã sữa lại link file. nếu có thế bạn code giúp mình nhé. thanks
 
Upvote 0
Chị chào các anh chị trong GPE. Mình có file theo doi xuất nhập vật tư, vì dữ liệu hàng tháng quá lớn nên file quá chậm khi dùng hàm vlookup. Vậy mình xin nhờ anh chị em GPE viết giúp code vba thay thề hàm vlookup.
Cụ thể mình đã ghi chú trong file đính kèm tại sheet "In Phieu".
Xin chân thành cám ơn ACE.
Bạn xem như thế này được chưa nhé
 

File đính kèm

Upvote 0
Thanks ban viehoai, file đúng ý mình rồi, mà còn code ở sheet("N-X") nữa, bạn giúp mình code luôn nhé. thanks
 
Upvote 0
Chị chào các anh chị trong GPE. Mình có file theo doi xuất nhập vật tư, vì dữ liệu hàng tháng quá lớn nên file quá chậm khi dùng hàm vlookup. Vậy mình xin nhờ anh chị em GPE viết giúp code vba thay thề hàm vlookup.
Cụ thể mình đã ghi chú trong file đính kèm tại sheet "In Phieu".
Xin chân thành cám ơn ACE.

Chào bạn !

Bạn xem file gởi kèm như thế có đúng ý bạn chưa.

http://www.mediafire.com/download/k331nfqqyaw432e/file hoi.rar

Mình sử dụng "scripting.dictionary", mình rất thích cách này, vừa học lại từ diễn đàn.

Chúc bạn thành công.
 
Upvote 0
Thanks ban viehoai, file đúng ý mình rồi, mà còn code ở sheet("N-X") nữa, bạn giúp mình code luôn nhé. thanks
Bạn xem code này được không nhé. Mình làm theo ý bạn chứ mình chưa hiểu cấu trúc dữ liệu của bạn
[GPECODE=vb]
Sub ThaytheVLookup()Dim Arr()
Dim Rng As Range, MyRng As Range
For Each Rng In Sheet16.Range("L8:L" & Sheet16.[L65500].End(3).Row)
If Rng.Value <> "" Then
Set MyRng = Sheet21.Range("B4:B" & Sheet21.[b65500].End(3).Row).Find(Rng.Value, , , xlWhole)
If Not MyRng Is Nothing Then
Rng.Offset(, 1).Value = MyRng.Offset(, 1).Value
Rng.Offset(, 2).Value = MyRng.Offset(, 3).Value
End If
End If
Next
Set MyRng = Nothing
End Sub
[/GPECODE]
 
Upvote 0
bạn viehoai code đúng rồi nhưng mà mình ko muốn để nó thành sub. mình muốn khi nhập dữ liệu vào cột L thì Cột M và N nó tự nhảy luôn bạn à.
 
Upvote 0
. . . , nhưng mà mình ko muốn để nó thành sub. mình muốn khi nhập dữ liệu vào cột L thì Cột M và N nó tự nhảy luôn bạn à.[/COLOR]
Mình có vài điều khuyên bạn khi chuyển sang xài VBA trong file như sau:

(1) Tên trang tính không nên chứa tiếng Việt có dấu, mà nên là "DMVT';

(2) Tại trang này, bạn nên hoán đổi 2 trường [ĐVT] & [Qui Cách] cách cho nhau;
Chi vậy? Vì trang bên kia ("N-X") hai cột [Tên HH] & [ĐVT] kề nhau;

(*) Khi đó macro sự kiện sẽ có nội dung vầy:

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("L8:L17")) Is Nothing Then
    Dim sRng As Range
    
    Set sRng = Sheets("DMVT").Range("DuLieu").Find(Target.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then _
        Target.Offset(, 1).Resize(, 2).Value = sRng.Offset(, 1).Resize(, 2).Value


 End If
End Sub

Trong đó, "DuLieu" là tên vùng ta gán cho vùng "B21:D31" thuộc trang "DMVT"

Chúc bạn thành công!
 
Upvote 0
Thanks SA_DQ, Mình sẽ rút kinh nghiệm trong các lần sau. Tuy nhiên, file trên là file rút gọn, file thực tế thì nó nằm rời rạc lắm, không liền mạch, nên mình muốn hỏi trường hợp đó để ứng dụng cho các file khác. Mong bạn và mọi người giúp đỡ.
 
Lần chỉnh sửa cuối:
Upvote 0
Bài trên mình lấy code theo đoạn mã sau thì chạy ok

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range, Rng As Range
If Target.Column <> 12 Then Exit Sub
For Each Cll In Intersect(Target, [L:L])
If Cll <> "" Then
Set Rng = Sheet21.[B:B].Find(Cll, LookAt:=xlWhole)
If Rng Is Nothing Then
Cll.Offset(, 1).ClearContents
Cll.Offset(, 1).ClearContents
Else
Cll.Offset(, 1) = Rng.Offset(, 1)
Cll.Offset(, 2) = Rng.Offset(, 3)
End If
End If
Next
End Sub

Tuy nhiên cho mình hỏi ở câu lệnh
'If Rng Is Nothing Then
Cll.Offset(, 1).ClearContents
Cll.Offset(, 1).ClearContents'

mình hiểu là nếu không chọn giá trị tại cột L:L thì cột M, N tương ứng sẽ xoá đi. Nhưng sao khi mình chạy code đó mình xoá dữ liệu cột L thì cột M và N nó không xoá anh chị nhỉ??
 
Lần chỉnh sửa cuối:
Upvote 0
Tuy nhiên cho mình hỏi ở câu lệnh
'If Rng Is Nothing Then
Cll.Offset(, 1).ClearContents
Cll.Offset(, 1).ClearContents'

mình hiểu là nếu không chọn giá trị tại cột L:L thì cột M, N tương ứng sẽ xoá đi. Nhưng sao khi mình chạy code đó mình xoá dữ liệu cột L thì cột M và N nó không xoá anh chị nhỉ??

Vì bạn đã cài điều kiện If Cll <> "".
Nếu theo cách của bạn làm, vậy khi tên hàng hóa bên sheet DMVT thay đổi thì tên hàng hóa tại sheet N-X có thay đổi theo ko? --=0
 
Upvote 0
[thongbao]Tuy nhiên, file trên là file rút gọn, file thực tế thì nó nằm rời rạc lắm, không liền mạch, nên mình muốn hỏi trường hợp đó để ứng dụng cho các file khác. [/thongbao]
Rời rạc là rời rạc làm sao?
Chỉ iêu cầu bạn hoán đổi giữa 2 cột trong 'DMVT' là khó lắm ru?

Bạn thấy rằng, sau khi hoán đổi macro sẽ chạy nhanh hơn gấp rưỡi ấy chứ!
 
Upvote 0
Mựơn file của anh ndu96081631 em cũng có vấn đề muốn hỏi về vlookup khi dữ liệu nằm ở 2 sheet khác nhau. Yêu cầu chi tiết cụ thể em có ghi ở trong file kèm theo
Rất mong nhận được sự giúp đỡ của anh/chị trong diễn đàn. Em cảm ơn rất nhiều !!!!
 

File đính kèm

Upvote 0

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

Back
Top Bottom