em xin hướng dẫn kĩ về hàm dò tìm theo 2 giá trị

Liên hệ QC

canlangtu511

Thành viên mới
Tham gia
20/7/08
Bài viết
6
Được thích
1
ta thường dùng 2 hàm dò tìm là hlookup và vlookup. nhưng em tìm ở rất nhiều bài thì thấy toàn dùng 2 hàm tren dò tìm theo 1 ẩn số thôi.chứ chưa thấy dò theo 2 giá trị cùng 1 lúc. sau đây em có 1 ví dụ sau với hlookup theo 2 giá trị em cũng hiểu dc 1 ít nhưng chưa cặn kẽ lắm. bác nào biết thì giải thích dùm em tý,ví dụ ta dùng hàm vlookup với kiểu bài tương tự thì ta dùng như thế nào các anh cho ví du minh họa luôn nha. làm phiền các anh nhiều.cho em cảm ơn trước@#!^%;;;;;;;;;;;
 

File đính kèm

ta thường dùng 2 hàm dò tìm là hlookup và vlookup. nhưng em tìm ở rất nhiều bài thì thấy toàn dùng 2 hàm tren dò tìm theo 1 ẩn số thôi.chứ chưa thấy dò theo 2 giá trị cùng 1 lúc. sau đây em có 1 ví dụ sau với hlookup theo 2 giá trị em cũng hiểu dc 1 ít nhưng chưa cặn kẽ lắm. bác nào biết thì giải thích dùm em tý,ví dụ ta dùng hàm vlookup với kiểu bài tương tự thì ta dùng như thế nào các anh cho ví du minh họa luôn nha. làm phiền các anh nhiều.cho em cảm ơn trước@#!^%;;;;;;;;;;;
Bài này có thể dùng HLOOKUP, VLOOKUP hay INDEX đều được
Ví dụ
1> Dùng VLOOKUP
=VLOOKUP(MID($B4,2,1),$A$13:$E$15,MATCH(LEFT($B4),$A$13:$E$13,0),0)
2> Dùng INDEX
=INDEX($A$13:$E$15,MATCH(MID($B4,2,1),$A$13:$A$15,0),MATCH(LEFT($B4),$A$13:$E$13,0))

 
mình thấy cũng có gì đâu hả bạn, hàm match sẽ trả về vị trí của giá trị dó tìm trong bảng (của hàm match) bạn sẽ dựa vào vị trí này để linh dộng giá trị trả về của hàm vlookup, kết hợp hàm match với hàm vlookup, hlookup, index sẽ cho giá trị giống nhau không chỉ ở 2 cột (hàng) mà còn có thế vô số cột(hàng) -> khi vi trí dò tìm của hàm match tăng lên
 
[h=2]em cũng có file ví dụ để xin hướng dẫn về hàm dò tìm theo 2 giá trị cột. anh chị diễn đàn hỗ trợ dùm e. e xin cảm ơn./.[/h]
 

File đính kèm

Bạn dùng công thức sau cho ô C17:

=LOOKUP(2,1/(($A$4:$A$10=$A17)*($B$4:$B$10=$B17)),C$4:C$10)
Cảm ơnmhung12005
e chưa hiểu lắm về hàm này, để e tìm hiểu. Công thức rất hay. Thanks.
 
Bạn dùng công thức sau cho ô C17:



copy sang các ô còn lại

a mhung12005 cho e hỏi thêm là số 2 và 1/(($A$4:$A$10=$A17)*($B$4:$B$10=$B17)) là hiểu như thế nào vậy a.
e xem hàm rồi nhưng vẫn chưa hiểu nghĩa của nó để áp dụng. tại e có file cần dò tìm theo giá trị 2 cột nhiều hơn file ví dụ nhưng e không hiểu cách sử dụng. mong a giải đáp. e xin cam ơn./.
 
a mhung12005 cho e hỏi thêm là số 2 và 1/(($A$4:$A$10=$A17)*($B$4:$B$10=$B17)) là hiểu như thế nào vậy a.
e xem hàm rồi nhưng vẫn chưa hiểu nghĩa của nó để áp dụng. tại e có file cần dò tìm theo giá trị 2 cột nhiều hơn file ví dụ nhưng e không hiểu cách sử dụng. mong a giải đáp. e xin cam ơn./.

bạn cứ bôi đen từng cụm rồi nhấn F9, hoặc dùng chức năng Auditing formular của ẽxcel xem nó tính từng bước ra sao, với các này bạn có thể tìm hiểu được hầu hết các cthức trên diễn đàn
 
Giả sử tôi có bảng sữ liệu mà giá trị cần dò tìm có từ 2 giá trị trở lên (bảng màu xanh), muốn dùng hàm vlookup để dò tìm dữ liệu cho bảng màu vàng. Nếu mỗi giá trị "Mã nhân viên" chỉ có 1 giá trị cần tìm thì rất OK, nhưng khổ nỗi mỗi mã nhân viên có từ 2 giá trị công cụ trở lên. Không biết làm thế nào!
 

File đính kèm

Giả sử tôi có bảng sữ liệu mà giá trị cần dò tìm có từ 2 giá trị trở lên (bảng màu xanh), muốn dùng hàm vlookup để dò tìm dữ liệu cho bảng màu vàng. Nếu mỗi giá trị "Mã nhân viên" chỉ có 1 giá trị cần tìm thì rất OK, nhưng khổ nỗi mỗi mã nhân viên có từ 2 giá trị công cụ trở lên. Không biết làm thế nào!
Chào nguyenhai,

Bạn dùng công thức "mảng" như sau:
Mã:
E13=IFERROR(INDEX($B$2:$B$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(E$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.

tương tự:
Mã:
G13=IFERROR(INDEX($C$2:$C$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(G$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống.

Bạn có thể tham khảo file kèm.

Chúc bạn ngày vui
 

File đính kèm

Chào nguyenhai,

Bạn dùng công thức "mảng" như sau:
Mã:
E13=IFERROR(INDEX($B$2:$B$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(E$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.

tương tự:
Mã:
G13=IFERROR(INDEX($C$2:$C$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(G$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống.

Bạn có thể tham khảo file kèm.

Chúc bạn ngày vui
Thế em biết vì sao anh lại bảo nhìn e làm hàm small khiếp quá rồi, liệu có phải tại ROW($1:$8) không ạ. E luôn luôn dùng row(quét cột chứa dữ liệu)- row(ô đầu tiên trong vùng đó)+1 :). E đi học mót đấy ạ. Thế sẽ đỡ phải đếm số "row"
P/s: Hôm nay là em vào phá anh :))
 
Chào nguyenhai,

Bạn dùng công thức "mảng" như sau:
Mã:
E13=IFERROR(INDEX($B$2:$B$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(E$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.

tương tự:
Mã:
G13=IFERROR(INDEX($C$2:$C$9,SMALL(IF(COUNTIF($D13,$A$2:$A$9),ROW($1:$8),""),RIGHT(G$12,1)*1)),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống.

Bạn có thể tham khảo file kèm.

Chúc bạn ngày vui
Bài này không dùng mảng vẫn được, nhưng em lại thích mảng hơn, em đưa ra cách khác dùng Vlookup:
Mã:
E13=IFERROR(VLOOKUP($D13,IF($B$2:$B$9<>D13,$A$2:$C$9),2,0),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.
Mã:
G13=IFERROR(VLOOKUP($D13,IF($C$2:$C$9<>F13,$A$2:$C$9),3,0),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống

Hoặc CT dùng cho nguyên bảng:
Mã:
E13=IFERROR(VLOOKUP($D13,IF(CHOOSE(INT(COLUMN(B1)/2),$B$2:$B$9,$C$2:$C$9)<>D13,$A$2:$C$9),INT(COLUMN(D1)/2),0),"")
Ctrl+Shift+Enter fill sang phải rồi fill xuống!!!

P/s: rảnh quá nên phá anh chơi --=0--=0--=0--=0!!!
 
Bài này không dùng mảng vẫn được, nhưng em lại thích mảng hơn, em đưa ra cách khác dùng Vlookup:
Mã:
E13=IFERROR(VLOOKUP($D13,IF($B$2:$B$9<>D13,$A$2:$C$9),2,0),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.
Mã:
G13=IFERROR(VLOOKUP($D13,IF($C$2:$C$9<>F13,$A$2:$C$9),3,0),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống

Hoặc CT dùng cho nguyên bảng:
Mã:
E13=IFERROR(VLOOKUP($D13,IF(CHOOSE(INT(COLUMN(B1)/2),$B$2:$B$9,$C$2:$C$9)<>D13,$A$2:$C$9),INT(COLUMN(D1)/2),0),"")
Ctrl+Shift+Enter fill sang phải rồi fill xuống!!!

P/s: rảnh quá nên phá anh chơi --=0--=0--=0--=0!!!
Tui vẫn thích dùng offset
 
Giả sử tôi có bảng sữ liệu mà giá trị cần dò tìm có từ 2 giá trị trở lên (bảng màu xanh), muốn dùng hàm vlookup để dò tìm dữ liệu cho bảng màu vàng. Nếu mỗi giá trị "Mã nhân viên" chỉ có 1 giá trị cần tìm thì rất OK, nhưng khổ nỗi mỗi mã nhân viên có từ 2 giá trị công cụ trở lên. Không biết làm thế nào!

Nếu bạn không dành về hàm mảng thì có thể dùng CT này:
E9=IF(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$B$9,2,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($D13:D13)-1,1))=D13,"",IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$B$9,2,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($D13:D13)-1,1)))
FIll sang phải rồi xuống dòng
G9=IF(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$C$9,3,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($G13:G13)-1,2))=F13,"",(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$C$9,3,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($G13:G13)-1,2))))
Fill sang phải rồi xuống dòng
 
Thế em biết vì sao anh lại bảo nhìn e làm hàm small khiếp quá rồi, liệu có phải tại ROW($1:$8) không ạ. E luôn luôn dùng row(quét cột chứa dữ liệu)- row(ô đầu tiên trong vùng đó)+1 :). E đi học mót đấy ạ. Thế sẽ đỡ phải đếm số "row"
P/s: Hôm nay là em vào phá anh :))
Chào lehuong1409,

Không! em lầm ý anh rồi, anh khen em sử dụng SMALL() rất "điệu nghệ", không như các chị em khác thường hay sợ các hàm dài ngoằng, đọc vào thấy trời đi đằng trời, mà đất đi đằng đất.

Em là "Hương" khác biệt. --=0

Chúc em ngày khởi đầu thiệt vui.

p/s: không sao đâu rảnh cứ phá anh tới luôn đi, để em không còn thời gian check mail với anh chàng đẹp trai "Vokka.Men" có e.mail rất "lỏn mọn" dungchucanhhanhphuc@..xxxxxx --=0--=0--=0
 
Nếu bạn không dành về hàm mảng thì có thể dùng CT này:
E9=IF(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$B$9,2,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($D13:D13)-1,1))=D13,"",IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$B$9,2,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($D13:D13)-1,1)))
FIll sang phải rồi xuống dòng
G9=IF(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$C$9,3,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($G13:G13)-1,2))=F13,"",(IF(COUNTIF($A$2:$A$9,$D13)=1,VLOOKUP($D13,$A$2:$C$9,3,),OFFSET($A$1,MATCH($D13,$A$2:$A$9,)+COLUMNS($G13:G13)-1,2))))
Fill sang phải rồi xuống dòng
Nếu offset thì có thể như vầy cho gọn:
Mã:
E13=IFERROR(VLOOKUP($D13,OFFSET($A$1:$C$1,MATCH($D13,$A$2:$A$9,)+COLUMN(A1)-1,,1000),2,0),"")
G13=IFERROR(VLOOKUP($D13,OFFSET($A$1:$C$1,MATCH($D13,$A$2:$A$9,)+COLUMN(A1)-1,,1000),3,0),"")
 
Bài này không dùng mảng vẫn được, nhưng em lại thích mảng hơn, em đưa ra cách khác dùng Vlookup:
Mã:
E13=IFERROR(VLOOKUP($D13,IF($B$2:$B$9<>D13,$A$2:$C$9),2,0),"")
Ctrl+Shift+Enter, copy qua F13, rồi chọn cả hai ô E13:F13 rồi fill xuống.
Mã:
G13=IFERROR(VLOOKUP($D13,IF($C$2:$C$9<>F13,$A$2:$C$9),3,0),"")
Ctrl+Shift+Enter, copy qua H13, rồi chọn cả hai ô G13:H13 rồi fill xuống

Hoặc CT dùng cho nguyên bảng:
Mã:
E13=IFERROR(VLOOKUP($D13,IF(CHOOSE(INT(COLUMN(B1)/2),$B$2:$B$9,$C$2:$C$9)<>D13,$A$2:$C$9),INT(COLUMN(D1)/2),0),"")
Ctrl+Shift+Enter fill sang phải rồi fill xuống!!!

P/s: rảnh quá nên phá anh chơi --=0--=0--=0--=0!!!
Chào em trai!

Phá cách Vlookup() lấy ngang "như cua" anh thấy khá thú vị đó em trai, thay vì thường thường hay gặp chủ đề lấy dọc nên sử dụng Match(0,countif()). Các số 2 - 3 có thể biến tấu thêm cho hàm. Hay há!! }}}}}

Chắc mai mốt anh phải ngồi suy nghĩ thống kê và đặt tên các "chiêu" mà anh em GPE tạo ra để anh dễ nhớ.
Ví dụ công thức này anh sẽ gọi là "Hoành tảo thiên quân" - "Quét ngang cả đội quân nhà trời", chiêu Match(0,countif()) anh gọi "Kình dương nhất trụ" - "Một trụ chống trời"
khà khà!!

Còn "cháu út" mà em giới thiệu trong bài: tuy nhỏ mà có võ há, chơi một lúc 4 cột không đổi "sắc thái" - "Tứ trụ vô tư" là danh.

Cảm ơn em và chúc em trai ngày thiệt vui
/-*+//-*+//-*+/
 
Chào em trai!

Phá cách Vlookup() lấy ngang "như cua" anh thấy khá thú vị đó em trai, thay vì thường thường hay gặp chủ đề lấy dọc nên sử dụng Match(0,countif()). Các số 2 - 3 có thể biến tấu thêm cho hàm. Hay há!! }}}}}

Chắc mai mốt anh phải ngồi suy nghĩ thống kê và đặt tên các "chiêu" mà anh em GPE tạo ra để anh dễ nhớ.
Ví dụ công thức này anh sẽ gọi là "Hoành tảo thiên quân" - "Quét ngang cả đội quân nhà trời", chiêu Match(0,countif()) anh gọi "Kình dương nhất trụ" - "Một trụ chống trời"
khà khà!!

Còn "cháu út" mà em giới thiệu trong bài: tuy nhỏ mà có võ há, chơi một lúc 4 cột không đổi "sắc thái" - "Tứ trụ vô tư" là danh.

Cảm ơn em và chúc em trai ngày thiệt vui
/-*+//-*+//-*+/
Nếu mà dò tìm từ trái sang phải, e thích dùng vlookup hơn index (tại vì vlookup là hàm dò tìm đầu tiên em biết --=0--=0), không được nữa mới dùng index!!!
Chúc anh ngày vui!!!
 
Chào lehuong1409,

Không! em lầm ý anh rồi, anh khen em sử dụng SMALL() rất "điệu nghệ", không như các chị em khác thường hay sợ các hàm dài ngoằng, đọc vào thấy trời đi đằng trời, mà đất đi đằng đất.

Em là "Hương" khác biệt. --=0

Chúc em ngày khởi đầu thiệt vui.

p/s: không sao đâu rảnh cứ phá anh tới luôn đi, để em không còn thời gian check mail với anh chàng đẹp trai "Vokka.Men" có e.mail rất "lỏn mọn" dungchucanhhanhphuc@..xxxxxx --=0--=0--=0

:) bảo sao mọi người hỏi em toàn gọi e là anh trong khi chữ ký của em rõ ràng thế kia cơ mà :D e thấy cái anh trong Vokka Men k quay mặt ra nên e k biết có đẹp trai không ạ :)
 
Nếu mà dò tìm từ trái sang phải, e thích dùng vlookup hơn index (tại vì vlookup là hàm dò tìm đầu tiên em biết --=0--=0), không được nữa mới dùng index!!!
Chúc anh ngày vui!!!
xì pam một tí vì lý do giống hệt của leoheocon nhưng 1 cái nữa vì t thấy dùng vlookup và match thì công thức cho nhiều cột không liên tục vẫn sử dụng rất tốt :) hoặc là do ở Index t chưa biết cách làm đc như thế
Chúc 2 anh em ngày nào cũng vui :)
 
Web KT

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

Back
Top Bottom