Chia sẻ_ Hàm Glookup_ Tìm kiếm dữ liệu giao nhau giữa cột và hàng

Liên hệ QC

NHG

Thành viên hoạt động
Tham gia
15/1/07
Bài viết
148
Được thích
126
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
Glookup.jpg
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
 

File đính kèm

  • Glookup.xlsm
    19.8 KB · Đọc: 27
Lần chỉnh sửa cuối:
tiện đây bác cho hỏi là e có file dữ liệu như sau,muốn dựa vào cột
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
View attachment 237776
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
tiện đây bác cho e hỏi là e có file dữ liệu như sau muốn dựa vào ngày ở hàng ngang xong đó tìm ra cột dữ liệu,rồi tìm trong cột đó có chứa dữ liệu phù hợp điều kiện thứ hai là họ tên để lấy số lượng,bác xem có hướng nào giúp e với file và mô tả ở dưới ah
Bài đã được tự động gộp:

trong file có 2 sheet một shet tổng hợp là nơi nhập dữ liệu để tìm kiếm và một sheet chứ dữ liệu.e muốn là khi nhập tên khách hàng ở sheet tổng hợp thì sẽ dựa vào tên khách hàng và điều kiện là ngày để đến sheet dữ liệu tìm là lấy ra số lượng của khách hàng đó,mong anh chi em trong diễn đàn giúp đỡ
kết quả mong muốn và yêu cầu tìm kiếm
 

File đính kèm

  • 1590053957904.png
    1590053957904.png
    135.7 KB · Đọc: 9
  • 1590054111141.png
    1590054111141.png
    160 KB · Đọc: 9
  • test.xlsx
    11.6 KB · Đọc: 11
Upvote 0
tiện đây bác cho hỏi là e có file dữ liệu như sau,muốn dựa vào cột

tiện đây bác cho e hỏi là e có file dữ liệu như sau muốn dựa vào ngày ở hàng ngang xong đó tìm ra cột dữ liệu,rồi tìm trong cột đó có chứa dữ liệu phù hợp điều kiện thứ hai là họ tên để lấy số lượng,bác xem có hướng nào giúp e với file và mô tả ở dưới ah
Bài đã được tự động gộp:

trong file có 2 sheet một shet tổng hợp là nơi nhập dữ liệu để tìm kiếm và một sheet chứ dữ liệu.e muốn là khi nhập tên khách hàng ở sheet tổng hợp thì sẽ dựa vào tên khách hàng và điều kiện là ngày để đến sheet dữ liệu tìm là lấy ra số lượng của khách hàng đó,mong anh chi em trong diễn đàn giúp đỡ
kết quả mong muốn và yêu cầu tìm kiếm
Mình ko có nhiều thời gian nên không hỗ trợ đc bạn, nhưng về cách thiết kế cơ sở dữ liệu hiện tại của bạn là chưa phù hợp; dữ liệu người ta thường nhập theo dòng chữ không nhập theo cột. Ví dụ của bạn dữ liệu chỉ cần thiết kế 4 cột:
Số Thứ tự Ngày thực hiện Người thực hiện Số lượng
Như thế sau này mới dễ lập công thức và quản lý dữ liệu
 
Upvote 0
Mình ko có nhiều thời gian nên không hỗ trợ đc bạn, nhưng về cách thiết kế cơ sở dữ liệu hiện tại của bạn là chưa phù hợp; dữ liệu người ta thường nhập theo dòng chữ không nhập theo cột. Ví dụ của bạn dữ liệu chỉ cần thiết kế 4 cột:
Số Thứ tự Ngày thực hiện Người thực hiện Số lượng
Như thế sau này mới dễ lập công thức và quản lý dữ liệu
cảm ơn bác đã góp ý,cái này của e tổng hợp theo ngày,và mỗi ngày thì số ng và danh sách tên trong đó không giống nhau,và dữ liệu mỗi ngày là tầm 3 nghìn dòng ah,nếu để dữ liệu ngày theo dòng thì 1 ngày thế tầm 3 nghìn dòng và tới ngày thứ 2 đã tầm 6 nghìn dòng rồi bác
 
  • Thích
Reactions: NHG
Upvote 0
tiện đây bác cho hỏi là e có file dữ liệu như sau,muốn dựa vào cột

tiện đây bác cho e hỏi là e có file dữ liệu như sau muốn dựa vào ngày ở hàng ngang xong đó tìm ra cột dữ liệu,rồi tìm trong cột đó có chứa dữ liệu phù hợp điều kiện thứ hai là họ tên để lấy số lượng,bác xem có hướng nào giúp e với file và mô tả ở dưới ah
Bài đã được tự động gộp:

trong file có 2 sheet một shet tổng hợp là nơi nhập dữ liệu để tìm kiếm và một sheet chứ dữ liệu.e muốn là khi nhập tên khách hàng ở sheet tổng hợp thì sẽ dựa vào tên khách hàng và điều kiện là ngày để đến sheet dữ liệu tìm là lấy ra số lượng của khách hàng đó,mong anh chi em trong diễn đàn giúp đỡ
kết quả mong muốn và yêu cầu tìm kiếm
Bạn thử dùng công thức này xem sao
Mã:
=VLOOKUP($F2,OFFSET('số liệu mỗi tháng'!$A$2:$A$3000,,MATCH($E$1,'số liệu mỗi tháng'!$B$1:$BK$1,0),,2),2,0)
 
Upvote 0
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột

Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
Nếu là mình thì mình sẽ phải tách ra tham biến 'Giá trị cần tìm' thành 2; Như vậy cú pháp hàm sẽ phải là:

GPELookUp(MaNV As String, TenCot As String; BangCantim As Range )
 
Upvote 0
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
View attachment 237776
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
Gặp trường hợp này là em Index Match liền vì mới học lỏm được của các anh chị trong GPE, hi. Trước đó nữa thì em phải tạo dòng tiêu đề phụ ra 1 chỗ khác rồi đặt STT cột cho mỗi tiêu đề. Xong vào ô công thức chính dùng vlookup (có hlookup bên trong) . hiiii, ngại ghê. Em chưa biết VBA.

PS: bác đặt tên hàm dài thòn mắc cười vậy. Chắc là để mọi người nhìn vào sẽ biết luôn cấu trúc hàm hén !
Cám ơn bác.
 
Upvote 0
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
View attachment 237776
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
Vậy bạn có code VBA của hàm này không? Cho mình với
Bài đã được tự động gộp:

Nếu là mình thì mình sẽ phải tách ra tham biến 'Giá trị cần tìm' thành 2; Như vậy cú pháp hàm sẽ phải là:

GPELookUp(MaNV As String, TenCot As String; BangCantim As Range )
Bạn có code VBA không cho minh với
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
View attachment 237776
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
Code bạn viết thế này chạy sẽ rất chậm nếu dữ liệu nhiều. Theo tôi với cái đề này thì dùng công thức là được rồi.
 
Upvote 0
Upvote 0
Bạn thử dùng công thức này xem sao
Mã:
=VLOOKUP($F2,OFFSET('số liệu mỗi tháng'!$A$2:$A$3000,,MATCH($E$1,'số liệu mỗi tháng'!$B$1:$BK$1,0),,2),2,0)
rất cảm ơn bác,e đã thử và chuẩn như ý e muốn ah,một lần nữa cảm ơn bác rất nhiều
 
Upvote 0
Hi các bạn
Chắc nhiều bạn đã gặp tình huống tìm giá trị giao nhau giữa hàng và cột
View attachment 237776
Có nhiều cách giải quyết, nhưng để tiện trong công việc mình đã tạo ra hàm Glookup để việc tìm kiếm đỡ nhọc hơn
Glookup(Giá trị cần tìm; Bảng cần tìm)
Mình đưa file ví dụ lên để các bạn tham khảo, nếu có thể tối ưu code chạy tốt hơn thì càng tốt :)
Có khi nào có trường hợp như hình dưới đây không

Annotation 2020-05-22 110828.jpg


Lúc ấy nếu tôi muốn kết quả là 33 thì phải làm sao?
 
Upvote 0
Có khi nào có trường hợp như hình dưới đây không

View attachment 237789


Lúc ấy nếu tôi muốn kết quả là 33 thì phải làm sao?
Có bạn ạ, vì nó ghộp mã cột và mã hàng để thành mã tìm kiếm, nên khi đặt mã lúc đầu cố tránh thôi b :)
Chắc các cao thủ sẽ tìm ra cách bẫy lỗi, nhưng hàm có thể chạy chậm hơn vì phải kiểm tra nhiều điều kiện
 
Upvote 0
Sao không dùng cặp VLOOKUP + MATCH ? Hahaha ...
Hình như còn giai đoạn phải tách cái chuỗi cần tìm ra thành 2 phần rổi từ đó mới dò.
Thớt chả giải thích hàm nhận tham số gì và trả về gì cho nên tôi lười xem code. (vả lại tôi cũng không thích nói tiếng Tây)
 
Upvote 0
Có bạn ạ, vì nó ghộp mã cột và mã hàng để thành mã tìm kiếm, nên khi đặt mã lúc đầu cố tránh thôi b :)
Chắc các cao thủ sẽ tìm ra cách bẫy lỗi, nhưng hàm có thể chạy chậm hơn vì phải kiểm tra nhiều điều kiện
"Bẫy lỗi" bằng cách làm giống như bài #16 được không bạn?
 
  • Thích
Reactions: NHG
Upvote 0
SA_DQ đã viết:
Nếu là mình thì mình sẽ phải tách ra tham biến 'Giá trị cần tìm' thành 2; Như vậy cú pháp hàm sẽ phải là:
GPELookUp(MaNV As String, TenCot As String; BangCantim As Range )

Bạn có code VBA không cho minh với

4​
5​
8​
9​
LMD01Tiền 3
Mã tênHọ và tênTiền 1Tiền 2Tiền 3Tiền 9Ghi chúGhi chú1
LMD00Lê Mỹ Dung
1​
2​
jk
50​
Ghi chú 15.4 =traBang(K6,M6,B7:I19)
LMD01Lê T. Mỹ Dung
5​
7​
5.4​
16​
Ghi chú 2
LMD02Lâm Mạnh Dũng
8​
6​
10​
LMD03Lý Mỹ Dung
50​
60​
70​
Ghi chú 4
LMD04Lê Võ Mạnh Danh
1​
Ghi chú 5
LMD05Lại Minh Danh
LMD06Lý Minh Dùng
3​
Ghi chú 7
LMD07Lê Văn Mai DyGhi chú 8
LMD08Lại Mai Du
LMD09Lại T. Mỹ Du
13​
HeheGhi chú 10
LMD00Ngô & Ba
NTA50Nhâm T. An
160​
#DIV/0!​
300​
Ghi chú 13

Nội dung hàm:
Mã:
Function TraBang(MaNV As String, Col As String, CSDL As Range)
Dim J As Long, W As Integer
Dim Arr()

Arr() = CSDL.Value
For J = 1 To UBound(Arr())
    If Arr(J, 1) = MaNV Then
        For W = 2 To UBound(Arr(), 2)
            If Arr(1, W) = Col Then
                TraBang = Arr(J, W)
                Exit Function
            End If
        Next W
    End If
Next J
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
4​
5​
8​
9​
LMD01Tiền 3
Mã tênHọ và tênTiền 1Tiền 2Tiền 3Tiền 9Ghi chúGhi chú1
LMD00Lê Mỹ Dung
1​
2​
jk
50​
Ghi chú 15.4 =traBang(K6,M6,B7:I19)
LMD01Lê T. Mỹ Dung
5​
7​
5.4​
16​
Ghi chú 2
LMD02Lâm Mạnh Dũng
8​
6​
10​
LMD03Lý Mỹ Dung
50​
60​
70​
Ghi chú 4
LMD04Lê Võ Mạnh Danh
1​
Ghi chú 5
LMD05Lại Minh Danh
LMD06Lý Minh Dùng
3​
Ghi chú 7
LMD07Lê Văn Mai DyGhi chú 8
LMD08Lại Mai Du
LMD09Lại T. Mỹ Du
13​
HeheGhi chú 10
LMD00Ngô & Ba
NTA50Nhâm T. An
160​
#DIV/0!​
300​
Ghi chú 13

Nội dung hàm:
Mã:
Function TraBang(MaNV As String, Col As String, CSDL As Range)
Dim J As Long, W As Integer
Dim Arr()

Arr() = CSDL.Value
For J = 1 To UBound(Arr())
    If Arr(J, 1) = MaNV Then
        For W = 2 To UBound(Arr(), 2)
            If Arr(1, W) = Col Then
                TraBang = Arr(J, W)
                Exit Function
            End If
        Next W
    End If
Next J
End Function
Cám ơn SA_DQ rất nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom