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

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
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!
Thì ít ra bạn cũng lôi cái code đó lên đây.Và xem nó lỗi ở đâu.Tốt nhất gửi file lỗi lên.
 

Cá ngừ F1

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
1 Tháng một 2008
Bài viết
2,104
Được thích
3,224
Điểm
910
Tuổi
37
Nơi ở
Đảo Đào Hoa
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!
lỗi cụ thể là lỗi j bạn? bạn thử chụp hình lên đây xem sao
 

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
lỗi cụ thể là lỗi j bạn? bạn thử chụp hình lên đây xem sao
Em gửi file đính kèm. nhờ mọi người xem giúp em. bình thường em mở file là nó chạy bình thường nhưng giờ nó không chạy được. nhưng đem qua máy khác thì vẩn chạy bình thường. em cám ơn!
 

File đính kèm

1+1=2

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
5 Tháng bảy 2020
Bài viết
62
Được thích
9
Điểm
20
Tuổi
34
Mình gửi vd lên nhờ các bắc bớt chút thời gian chỉ dùm vài chiêu
Cảm ơn các bạn nhiều!!!
Ngắn nhất cho bạn. Dể hiểu nhất cho bạn......Buye

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
        Range("C4") = "=IFERROR(VLOOKUP(RC[-1],MA!R3C2:R7C4,2,0),"""")"
        Range("D4") = "=IFERROR(VLOOKUP(RC[-2],MA!R3C2:R7C4,3,0),"""")"
        Range("C4:d4").Value = Range("C4:d4").Value
End If
End Sub
 

File đính kèm

phuocam

Thành viên mới
Tham gia ngày
16 Tháng năm 2013
Bài viết
2,812
Được thích
3,926
Điểm
560
Ngắn hơn một chút:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
    Range("C4").Value = Evaluate("=IFERROR(VLOOKUP(B4,MA!$B$3:$D$7,2,0),"""")")
    Range("D4").Value = Evaluate("=IFERROR(VLOOKUP(B4,MA!$B$3:$D$7,3,0),"""")")
End If
End Sub
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,204
Được thích
12,380
Điểm
1,560
Ngắn hơn một chút:
...
Cái mồ này đã tám năm rồi mà.
Cu cậu Âm Mộc sau khi đội mồ cứng da cứng thịt rồi, bắt đầu đi đào mồ. Vốn là chỉ để dùi mài mấy câu quen thuộc: "quá đơn giản", "đẳng cấp", ...
 

Cá ngừ F1

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
1 Tháng một 2008
Bài viết
2,104
Được thích
3,224
Điểm
910
Tuổi
37
Nơi ở
Đảo Đào Hoa
Em gửi file đính kèm. nhờ mọi người xem giúp em. bình thường em mở file là nó chạy bình thường nhưng giờ nó không chạy được. nhưng đem qua máy khác thì vẩn chạy bình thường. em cám ơn!
Tôi có mở file, nhìn code vậy tôi cũng chưa ra được lỗi gì? Máy này chạy được, máy kia ko chạy được có thể do phần Path (không tồn tại đường dẫn này).
Như một số chuyên gia có tư vấn, việc gộp File bạn nên dùng thử Power Query, có tài liệu của thầy @ptm0412.
Thử xem sao nhé
 

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
Tôi có mở file, nhìn code vậy tôi cũng chưa ra được lỗi gì? Máy này chạy được, máy kia ko chạy được có thể do phần Path (không tồn tại đường dẫn này).
Như một số chuyên gia có tư vấn, việc gộp File bạn nên dùng thử Power Query, có tài liệu của thầy @ptm0412.
Thử xem sao nhé
dạ em cám ơn ạ!
 

locbui1295

Thành viên mới
Tham gia ngày
22 Tháng hai 2019
Bài viết
4
Được thích
0
Điểm
163
Tuổi
24
Ngắn nhất cho bạn. Dể hiểu nhất cho bạn......Buye

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
        Range("C4") = "=IFERROR(VLOOKUP(RC[-1],MA!R3C2:R7C4,2,0),"""")"
        Range("D4") = "=IFERROR(VLOOKUP(RC[-2],MA!R3C2:R7C4,3,0),"""")"
        Range("C4:d4").Value = Range("C4:d4").Value
End If
End Sub
Ngắn hơn một chút:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
    Range("C4").Value = Evaluate("=IFERROR(VLOOKUP(B4,MA!$B$3:$D$7,2,0),"""")")
    Range("D4").Value = Evaluate("=IFERROR(VLOOKUP(B4,MA!$B$3:$D$7,3,0),"""")")
End If
End Sub
Chào bạn,
Tương tự như yêu cầu của chủ đề,
Bạn ban đầu Vlookup cho 1 giá trị. Nếu mở rộng thêm nhiều giá trị tương tự thì code VBA thế nào vậy, có thể giúp mình được không.
Thanks
 

File đính kèm

Cá ngừ F1

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
1 Tháng một 2008
Bài viết
2,104
Được thích
3,224
Điểm
910
Tuổi
37
Nơi ở
Đảo Đào Hoa
Chào bạn,
Tương tự như yêu cầu của chủ đề,
Bạn ban đầu Vlookup cho 1 giá trị. Nếu mở rộng thêm nhiều giá trị tương tự thì code VBA thế nào vậy, có thể giúp mình được không.
Thanks
Dùng thử phương thức tìm kiếm Find xem sao, click Update
Code
Mã:
Sub FindMethod()
Dim i&, Rng As Range, KQ(), Ma()
Ma = Range(Sheets("CT").[B4], Sheets("CT").[B500].End(3))
ReDim KQ(1 To UBound(Ma), 1 To 2)
For i = 1 To UBound(Ma)
    Set Rng = Sheets("MA").[B3:B500].Find(Ma(i, 1), , , 1)
    If Not Rng Is Nothing Then
        KQ(i, 1) = Rng(, 1)
        KQ(i, 2) = Rng(, 2)
    End If
Next
Sheets("CT").[C4].Resize(i - 1, 2) = KQ
End Sub
 

File đính kèm

vuongtoituonglai

Thành viên thường trực
Tham gia ngày
7 Tháng năm 2014
Bài viết
341
Được thích
48
Điểm
385
yêu câu thứ 1: khi thay đổi bất kỳ bên sheet "LLNV" thì sheet "chitiet" cập nhật theo (giống tính năng của hàm vlookup)
cái này có thể sử dụng find method trong sự kiện worksheet change cho sheet "LLNV"
tuy nhiên cho hỏ là: các mã cột C của sheet "chi tiet" có trùng nhau ko?

câu hỏi 2: nếu nằm ở file khác thì phức tạp hơn là phải mở file đó ra rồi dùng phương pháp Find
(hoặc dùng ADO, cái này thì tôi chỉ biết là vậy chứ chưa biết làm)
yêu câu thứ 1: khi thay đổi bất kỳ bên sheet "LLNV" thì sheet "chitiet" cập nhật theo (giống tính năng của hàm vlookup)
cái này có thể sử dụng find method trong sự kiện worksheet change cho sheet "LLNV"
tuy nhiên cho hỏ là: các mã cột C của sheet "chi tiet" có trùng nhau ko?

câu hỏi 2: nếu nằm ở file khác thì phức tạp hơn là phải mở file đó ra rồi dùng phương pháp Find
(hoặc dùng ADO, cái này thì tôi chỉ biết là vậy chứ chưa biết làm)
Câu 2 bạn đã nhận được sự giúp đỡ chưa? Mình cũng đang tìm đề tài này.
Rất mong bạn và các bạn trên diễn đàn chia sẻ
Cảm ơn
 

kientung

Thành viên mới
Tham gia ngày
16 Tháng năm 2020
Bài viết
8
Được thích
0
Điểm
13
Tuổi
23
chào mọi người
cho em hỏi nếu link từ 1 file khác sang thi nên dùng code nào ạ

Mong mọi người giúp đỡ
 

tigertiger

Coming back ...
Tham gia ngày
25 Tháng một 2007
Bài viết
1,646
Được thích
1,570
Điểm
860
chào mọi người
cho em hỏi nếu link từ 1 file khác sang thi nên dùng code nào ạ

Mong mọi người giúp đỡ
Link File thì không cần dùng code, cứ gõ dấu = ; hoặc copy - paste link thông thường của Excel là được
Nhưng link file của Excel càng thêm rắc rối
 

thetrungkien

Thành viên mới
Tham gia ngày
19 Tháng mười hai 2007
Bài viết
40
Được thích
14
Điểm
665
Tuổi
49
Cái ni cũng vừa đủ sòai nề

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4:B99")) Is Nothing Then
    Dim Rng As Range, sRng As Range, Sh As Worksheet
   
    Set Sh = ThisWorkbook.Worksheets("MA")
    Set Rng = Sh.Range(Sh.[b2], Sh.[b2].End(xlDown))
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If sRng Is Nothing Then
        MsgBox "Nothing"
    Else
        Target.Offset(, 1).Resize(, 2).Value = sRng.Offset(, 1).Resize(, 2).Value
    End If
End If
End Sub
Code viết rất hay, cảm on bạn sẽ để dành dùng khin cần
 

Nguyen Cuong 955

Thành viên mới
Tham gia ngày
20 Tháng hai 2020
Bài viết
1
Được thích
0
Điểm
0
Tuổi
25
Chào các bác.
Nhờ các bác thêm giúp e đoạn code để có thể tìm từ cột MA sang nhiều sheet với ạ.
Hiện tại ở File e đã lấy từ một bác ở trên, chạy khá ổn, giờ e muốn nó chạy thêm vài sheet nữa để.
 

File đính kèm

Top Bottom