Code cho hàm Vlookup nhiều lần.

Blue Softs Liên hệ QC

Yeuvoyeucon

Thành viên hoạt động
Tham gia
30/10/09
Bài viết
136
Được thích
21
Kính gửi các anh chị và các bạn,
Mọi người hỗ trợ em code VBA của hàm Vlookup mà có 4 lần như ví dụ với ạ. Em cảm ơn ạ.
 

File đính kèm

  • Ham VLookup nhieu lan.xlsm
    18.6 KB · Đọc: 16

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,049
Được thích
1,315
Giới tính
Nam
Nghề nghiệp
Banker
Kính gửi các anh chị và các bạn,
Mọi người hỗ trợ em code VBA của hàm Vlookup mà có 4 lần như ví dụ với ạ. Em cảm ơn ạ.
Dữ liệu lớn không mà dùng VBA bạn.
Tôi nhìn file thì đoán là bạn chưa biết cố định cột, rồi cách chuyển tự động cột kết quả trong bảng tham chiếu.
Bạn thử công thức:
PHP:
G2=VLOOKUP($C2,Thongtin!$C$4:$G$10,COLUMN(B2),0)
Enter, Fill xuống, Fill sang phải.
 
Upvote 0

Nhattanktnn

Thành viên gắn bó
Tham gia
11/11/16
Bài viết
1,833
Được thích
1,915
Donate (Momo)
Donate
Giới tính
Nam
Dữ liệu lớn không mà dùng VBA bạn.
Tôi nhìn file thì đoán là bạn chưa biết cố định cột, rồi cách chuyển tự động cột kết quả trong bảng tham chiếu.
Bạn thử công thức:
PHP:
G2=VLOOKUP($C2,Thongtin!$C$4:$G$10,COLUMN(B2),0)
Enter, Fill xuống, Fill sang phải.
Nếu kiểu này thì thấy dữ liệu là có 4 lần chứ? chán các thanh niên ra đề thật
 
Upvote 0

VetMini

Chuyên gia GPE
Tham gia
21/12/12
Bài viết
12,350
Được thích
15,911
Dữ liệu lớn không mà dùng VBA bạn.
...
Dữ liệu lớn cũng không hẳn cần dùng VBA.
Kiểu lấy nhiều cột như vầy, người ta đặt name cho cả vùng, thêm một cột phụ với hàm Match để lấy vị trí dòng. Sau đó cứ Index ra từng ô.
 
Upvote 0

Yeuvoyeucon

Thành viên hoạt động
Tham gia
30/10/09
Bài viết
136
Được thích
21
Dữ liệu lớn cũng không hẳn cần dùng VBA.
Kiểu lấy nhiều cột như vầy, người ta đặt name cho cả vùng, thêm một cột phụ với hàm Match để lấy vị trí dòng. Sau đó cứ Index ra từng ô.
Khi em làm code, cần phải ghép dữ liệu nhiều bảng với nhau. Em phải chặt nhỏ ra để làm vì trình độ code của em còn kém. Nên em cần dùng VBA cho liên hoàn anh ạ.
Bài đã được tự động gộp:

Dữ liệu lớn không mà dùng VBA bạn.
Tôi nhìn file thì đoán là bạn chưa biết cố định cột, rồi cách chuyển tự động cột kết quả trong bảng tham chiếu.
Bạn thử công thức:
PHP:
G2=VLOOKUP($C2,Thongtin!$C$4:$G$10,COLUMN(B2),0)
Enter, Fill xuống, Fill sang phải.
Cần anh ạ !
 
Upvote 0

HUONGHCKT

Thành viên tiêu biểu
Tham gia
30/8/12
Bài viết
452
Được thích
595
Kính gửi các anh chị và các bạn,
Mọi người hỗ trợ em code VBA của hàm Vlookup mà có 4 lần như ví dụ với ạ. Em cảm ơn ạ.
Góp vui chống dịch. nếu muốn dùng hàm Vlookup=VBA thì hãy thử xem
Nhập vào ô nào đó trong sh KQ cú pháp ví dụ
G2= Vlookup_VBA(C2;column(A1)) enter và filldown.
nếu fill sang ngang Thì cố định $C$2
nếu bạn thay đổi dữ liệu của sh Thongtin thì Sh cũng đã được cập nhật
 

File đính kèm

  • Ham VLookup nhieu lan.xlsm
    23.5 KB · Đọc: 9
Lần chỉnh sửa cuối:
Upvote 0

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,049
Được thích
1,315
Giới tính
Nam
Nghề nghiệp
Banker
Khi em làm code, cần phải ghép dữ liệu nhiều bảng với nhau. Em phải chặt nhỏ ra để làm vì trình độ code của em còn kém. Nên em cần dùng VBA cho liên hoàn anh ạ.
Bài đã được tự động gộp:


Cần anh ạ !
Nếu bạn không ngại thì nên đưa 1 bài toán tổng thể nên để mọi người cùng tìm hiểu và tư vấn.
 
Upvote 0

snow25

Thành viên gắn bó
Tham gia
24/7/18
Bài viết
2,844
Được thích
2,853
Donate (Momo)
Donate
Giới tính
Nam
Kính gửi các anh chị và các bạn,
Mọi người hỗ trợ em code VBA của hàm Vlookup mà có 4 lần như ví dụ với ạ. Em cảm ơn ạ.
Bạn thử code.
Mã:
Sub laydulieu()
   Dim i As Long, lr As Long, arr, dic As Object, kq, dk As String, data, j As Integer, b As Long
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("thongtin")
       lr = .Range("C" & Rows.Count).End(xlUp).Row
       arr = .Range("C4:G" & lr).Value
       For i = UBound(arr) To 1 Step -1
           dk = arr(i, 1)
           dic.Item(dk) = i
       Next i
  End With
  With Sheets("Kq")
       lr = .Range("C" & Rows.Count).End(xlUp).Row
       data = .Range("C2:D" & lr).Value
       ReDim kq(1 To UBound(data), 1 To 4)
       For i = 1 To UBound(data)
           dk = data(i, 1)
           b = dic.Item(dk)
           If b Then
              For j = 1 To 4
                  kq(i, j) = arr(b, j + 1)
              Next j
           End If
       Next i
       .Range("G2:J" & lr).Value = kq
 End With
 Set dic = Nothing
End Sub
 
Upvote 0

Yeuvoyeucon

Thành viên hoạt động
Tham gia
30/10/09
Bài viết
136
Được thích
21
Góp vui chống dịch.
Nhập vào ô nào đó trong sh
Là sao anh !
Bạn thử code.
Mã:
Sub laydulieu()
   Dim i As Long, lr As Long, arr, dic As Object, kq, dk As String, data, j As Integer, b As Long
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("thongtin")
       lr = .Range("C" & Rows.Count).End(xlUp).Row
       arr = .Range("C4:G" & lr).Value
       For i = UBound(arr) To 1 Step -1
           dk = arr(i, 1)
           dic.Item(dk) = i
       Next i
  End With
  With Sheets("Kq")
       lr = .Range("C" & Rows.Count).End(xlUp).Row
       data = .Range("C2:D" & lr).Value
       ReDim kq(1 To UBound(data), 1 To 4)
       For i = 1 To UBound(data)
           dk = data(i, 1)
           b = dic.Item(dk)
           If b Then
              For j = 1 To 4
                  kq(i, j) = arr(b, j + 1)
              Next j
           End If
       Next i
       .Range("G2:J" & lr).Value = kq
 End With
 Set dic = Nothing
End Sub
Cảm ơn Anh đã trợ giúp code hay ạ !
 
Upvote 0

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
12,693
Được thích
19,350
Xem thêm 1 tham khảo: Hàm mảng người dùng:
 

File đính kèm

  • UDF.rar
    15.2 KB · Đọc: 5
Upvote 0
Top Bottom