Có khi nào hàm Lookup không thể thay thế được Vlookup (2 người xem)

Liên hệ QC

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

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Em cứ hay nhầm lẫn mấy cái Lookup với nhau, đã có Vlookup và Hlookup tại sao lại có Lookup nữa. Em xin hỏi có trường hợp nào chỉ sử dụng được Vlookup mà không thể thay thế nó bằng Lookup không ah? Nghĩa là em muốn hiểu trong trường hợp nào nên sử dụng cái nào ? (Liệu có phải Lookup = Vlookup+Hlookup?)
 
Em cứ hay nhầm lẫn mấy cái Lookup với nhau, đã có Vlookup và Hlookup tại sao lại có Lookup nữa. Em xin hỏi có trường hợp nào chỉ sử dụng được Vlookup mà không thể thay thế nó bằng Lookup không ah?

LOOKUP nó đa dạng hơn chứ!
Lý ra phải hỏi ngược lại: Có khi nào dùng LOOKUP được mà VLOOKUP hoặc HLOOKUP lại thua không?
Câu trả lời là có đây! Nhất là những bài toán liên quan đến mảng, dò tìm nhiều điều kiện hoặc tìm ngược từ phải sang trái (VLOOKUP và HLOOKUP không chơi được với loại này)
Còn câu hỏi của bạn thì xin trả lời rằng: Nếu bài toán có thể giải quyết bằng HLOOKUP hoặc VLOOKUP thì chắc chắn LOOKUP làm được thừa sức
 
Lần chỉnh sửa cuối:
Và có những bài toán dùng LOOKUP công thức sẽ trông ngắn hơn rất nhiều so với dùng Vlookup và Hlookup đó.
Trong bài toán và có thể sử dụng được Vlookup hoặc HLookup hoặc Lookup thì người dùng thường THÍCH dùng Vlookup or Hlookup hơn vì hai hàm này dễ hiểu và họ được học bài bản trong các trường...còn Lookup được ít người biết đến mặc dù nó rất hay!
 
Và có những bài toán dùng LOOKUP công thức sẽ trông ngắn hơn rất nhiều so với dùng Vlookup và Hlookup đó.
Trong bài toán và có thể sử dụng được Vlookup hoặc HLookup hoặc Lookup thì người dùng thường THÍCH dùng Vlookup or Hlookup hơn vì hai hàm này dễ hiểu và họ được học bài bản trong các trường...còn Lookup được ít người biết đến mặc dù nó rất hay!

Bên cạnh các thày Ndu96081631, thày Ptm0412, thày Concogia...trình quá siêu việt rồi, mình rất khâm phục kiến thức, tư duy của hoamattroicoi, đặc biệt về tài dùng Lookup của bạn rất hay. Nói thực mình đọc rất rất nhiều về Lookup nhưng cứ thấy ấy ấy thế nào ý, khi đọc cũng có vẻ hiểu hiểu, đôi khi còn sử dụng được, nhưng nếu một bài toán mà để bỗng nhiên nghĩ ra chiêu như hoamattroicoi thì...chịu (từ trước đến giờ mình toàn sử dụng Vlookup thôi).

Mình rất mong muốn mọi người giải thích dùm để mình dễ nắm bắt thêm tại sao lại phải đẻ ra cái Lookup phức tạp thế không biết (có thể không cần phải ví dụ cụ thể mà chỉ cần nói nôm na cho mình hiểu một số trường hợp sử dụng nó sẽ rất có lợi so với sử dụng các cách khác).
 
Mình rất mong muốn mọi người giải thích dùm để mình dễ nắm bắt thêm tại sao lại phải đẻ ra cái Lookup phức tạp thế không biết (có thể không cần phải ví dụ cụ thể mà chỉ cần nói nôm na cho mình hiểu một số trường hợp sử dụng nó sẽ rất có lợi so với sử dụng các cách khác).

Một số cách s/d Lookup
http://www.giaiphapexcel.com/forum/showthread.php?72367-Hàm-IF-trong-excel
http://www.giaiphapexcel.com/forum/showthread.php?47388-Dò-tìm-theo-nhiều-điều-kiện
http://www.giaiphapexcel.com/forum/...ìm-kiếm-giá-trị-với-2-ô-điều-kiện-Lookupvalue
http://www.giaiphapexcel.com/forum/showthread.php?7669-Những-công-thức-độc-đáo
http://www.giaiphapexcel.com/forum/showthread.php?72370-Hỏi-Cách-tính-tổng-theo-ngày-tháng
 
Em cứ hay nhầm lẫn mấy cái Lookup với nhau, đã có Vlookup và Hlookup tại sao lại có Lookup nữa. Em xin hỏi có trường hợp nào chỉ sử dụng được Vlookup mà không thể thay thế nó bằng Lookup không ah? Nghĩa là em muốn hiểu trong trường hợp nào nên sử dụng cái nào ? (Liệu có phải Lookup = Vlookup+Hlookup?)

Có một số điểm khác biệt giữa LOOKUP và VLOOKUP, HLOOKUP:
thứ nhất, bảng dữ liệu của LOOKUP phải được sắp xếp theo thứ tự tăng dần, còn VLOOKUP hoặc HLOOKUP thì không.
Thứ 2, nếu chúng ta muốn tìm chính xác, không tìm thấy thì phải trả về lỗi #N/A để mình còn biết đường tính tiếp, thì LOOKUP không làm được.
Cho nên, theo mình, bạn nên cân nhắc giữa LOOKUP và VLOOKUP, HLOOKUP. Suy nghĩ trước khi sử dụng chớ không nên lạm dụng.
 
thứ nhất, bảng dữ liệu của LOOKUP phải được sắp xếp theo thứ tự tăng dần, còn VLOOKUP hoặc HLOOKUP thì không.
Bậy à nha
Bạn thử đưa 1 ví dụ về bảng chưa sắp xếp, tôi làm bằng LOOKUP cho bạn xem
Thứ 2, nếu chúng ta muốn tìm chính xác, không tìm thấy thì phải trả về lỗi #N/A để mình còn biết đường tính tiếp, thì LOOKUP không làm được.
Cho nên, theo mình, bạn nên cân nhắc giữa LOOKUP và VLOOKUP, HLOOKUP..
Với LOOKUP, nếu không tìm thấy nó cũng N/A vậy, khác gì đâu chứ?
 
Dữ liệu không sort mà dùng lookup, nếu không tìm thấy sẽ cho #N/A, dữ liệu có sort, nếu sort Ascending sẽ cho giá trị gần đúng, nếu sort Descending sẽ cho #N/A
 
File ví dụ cho anh ndu đây
link tham khảo đây: http://support.microsoft.com/kb/324986 , người ta nhấn mạnh việc sort dữ liệu.
Đôi khi ta chỉ muốn tìm chính xác, không có đúng giá trị mình cần tìm thì để #N/A. Cái này e Lookup không làm được.
Vài dòng trao đổi với các anh.
 

File đính kèm

File ví dụ cho anh ndu đây
link tham khảo đây: http://support.microsoft.com/kb/324986 , người ta nhấn mạnh việc sort dữ liệu.
Đôi khi ta chỉ muốn tìm chính xác, không có đúng giá trị mình cần tìm thì để #N/A. Cái này e Lookup không làm được.
Vài dòng trao đổi với các anh.

Đó là vì bạn chưa biết cách dùng thôi
Khỏi cần tham khảo link gì gì đó tôi cũng viết được công thức thế này:
Mã:
=LOOKUP(2,1/(A1:A4=[COLOR=#ff0000][B]3[/B][/COLOR]),B1:B4)
Sort hay không sort gì cũng cho kết quả chính xác tuốt
Kiểm tra xem nhé
 
Lần chỉnh sửa cuối:
LOOKUP nó đa dạng hơn chứ!
Câu trả lời là có đây! Nhất là những bài toán liên quan đến mảng, dò tìm nhiều điều kiện

Em chưa thật sự nhuần nhuyễn hàm này lắm, kính mong thày cho em 1 ví dụ về dò tìm nhiều điều kiện mà 2 cái kia không giải quyết được mà phải dùng Lookup.
 
Em chưa thật sự nhuần nhuyễn hàm này lắm, kính mong thày cho em 1 ví dụ về dò tìm nhiều điều kiện mà 2 cái kia không giải quyết được mà phải dùng Lookup.

Ví dụ ta có 5 cột dữ liệu (A1:E50), ta muốn dò tìm 4 điều kiện trên 4 cột B, C, D, E và kết quả trả về là cột A. Vậy LOOKUP như sau:
Mã:
=LOOKUP(2, 1/(B1:B50= đ/k1)/(C1:C50= đ/k2)/(D1:D50= đ/k3)/(E1:E50= đ/k4), A1:A50)
Cú pháp chung cho loại bài toán dò tìm nhiều điều kiện dùng LOOKUP là vầy:
Mã:
=LOOKUP(2, 1/(Biểu thức điều kiện 1)/(Biểu thức điều kiện 2)/.... /(Biểu thức điều kiện n), Mảng cần lấy kết quả)
Bạn nghĩ nếu dùng VLOOKUP hoặc HLOOKUP thì có giải quyết bài này được không?
-----------------------------------------
Đương nhiên bài toán này vẫn có thể dùng SUMPRODUCT hoặc INDEX + MATCH để giải quyết, nhưng nên nhớ rằng:
- Nếu tìm thấy từ 2 kết quả trở lên (dạng Number) thì SUMPRODUCT sẽ cộng dồn, dẫn đến sai kết quả
- Nếu giá trị cần tìm thuộc dạng Text, đương nhiên không thể dùng SUMPRODUCT
- Nếu dùng INDEX + MATCH với dò tìm nhiều điều kiện, có thể bạn phải dùng tổ hợp phím Ctrl + Shift + Enter (trong khi LOOKUP chỉ cần Enter bình thường)
- Lưu ý: Nếu tìm thấy từ 2 kết quả trở lên thì LOOKUP sẽ lấy kết quả cuối mà nó tìm thấy (còn INDEX + MATCH sẽ lấy kết quả đầu tiên)
 
Lần chỉnh sửa cuối:
LOOKUP nó đa dạng hơn chứ!
Nếu bài toán có thể giải quyết bằng HLOOKUP hoặc VLOOKUP thì chắc chắn LOOKUP làm được thừa sức

Về tốc độ tính toán dữ liệu nhiều thì Lookup có chậm hơn 2 cái kia không ah? Nếu nó đa năng như vậy thì có lẽ em sẽ chuyển luôn luôn sử dụng Lookup (không cần học Vlookup và Hlookup nữa).
 
Về tốc độ tính toán dữ liệu nhiều thì Lookup có chậm hơn 2 cái kia không ah? .

Tốc độ tùy thuộc vào số lượng phép tính, vậy dù dùng cái gì thì cũng thế thôi
Nếu nó đa năng như vậy thì có lẽ em sẽ chuyển luôn luôn sử dụng Lookup (không cần học Vlookup và Hlookup nữa).
Người ta chế ra 1 hàm đương nhiên có tác dụng của nó, không thể nói vì LOOKUP đa năng mà khỏi cần đến VLOOKUP hay HLOOKUP ---> Đôi lúc vẫn dùng cặp hàm này chứ (vì sự đơn giản)
Cũng giống như so sánh SUMIF với SUMPRODUCT vậy! Hầu như bài nào có thể dùng SUMIF hay COUNTIF thì cũng có thể dùng SUMPRODUCT nhưng có những bài chỉ có thể dùng SUMPRODUCT mà không thể dùng SUMIF hay COUNTIF . Vậy chẳng lẽ khỏi cần SUMIF và COUNTIF sao?
 
Đó là vì bạn chưa biết cách dùng thôi
Khỏi cần tham khảo link gì gì đó tôi cũng viết được công thức thế này:
Mã:
=LOOKUP(2,1/(A1:A4=[COLOR=#ff0000][B]3[/B][/COLOR]),B1:B4)
Sort hay không sort gì cũng cho kết quả chính xác tuốt
Kiểm tra xem nhé

Cái này là anh không lấy số 3 đi dò tìm, mà anh đi dò tìm giá trị đúng. Nó không có ý nghĩa là lấy số 3 đi dò nữa. Tất nhiên nó vẫn cho kết quả đúng, nhưng mà tốc độ xử lý rõ ràng là sẽ chậm hơn VLOOKUP. Theo em, đây chỉ là một mẹo, chứ không phải là lấy giá trị 3 đi dò. Đây chỉ là quan điểm riêng của em thôi. Có gì không phải mong các anh bỏ qua.
 
nhưng mà tốc độ xử lý rõ ràng là sẽ chậm hơn VLOOKUP..
Cái này thì tôi đồng ý!
Nhưng dò tìm có 1 điều kiện, lại tìm từ trái sang thì chẳng ai dại mà đi dùng LOOKUP cả. Chẳng qua muốn chứng minh cho bạn thấy rằng LOOKUP nó làm được


Theo em, đây chỉ là một mẹo, chứ không phải là lấy giá trị 3 đi dò. Đây chỉ là quan điểm riêng của em thôi. Có gì không phải mong các anh bỏ qua.
Cái này thì sai!
Bạn cho đó là mẹo vì bạn chưa hiểu sâu về LOOKUP ---> Từ từ nghiên cứu đi
Bản thân LOOKUP có tính năng này (giống như hàm COUNT có thể bỏ qua lỗi khi đếm) ---> Thử cái "mẹo" này với hàm MATCH xem nó có làm được điều tương tự không?
 
Lần chỉnh sửa cuối:
Cái này thì tôi đồng ý!
Nhưng dò tìm có 1 điều kiện, lại tìm từ trái sang thì chẳng ai dại mà đi dùng LOOKUP cả. Chẳng qua muốn chứng minh cho bạn thấy rằng LOOKUP nó làm được

Thư thày nếu dò tìm từ phải qua trái thì ta dùng Macth hay hơn hay dùng Lookup hay hơn ah?

(Tốc độ cái nào nhanh hơn, nhẹ hơn)
 

File đính kèm

Thư thày nếu dò tìm từ phải qua trái thì ta dùng Macth hay hơn hay dùng Lookup hay hơn ah?

(Tốc độ cái nào nhanh hơn, nhẹ hơn)

- Thứ nhất: Đây là do tìm chính xác
- Thứ hai: Cột dò tìm đã được sort
Vậy thì ngại gì mà không dùng LOOKUP
=LOOKUP(E4,B2:B17,A2:A17)
Tốc độ thì chắc cái này cũng thế thôi (nhưng với dữ liệu chưa sort trước thì không chắc)
 
Thưa thày trong file đính kèm, tại sao kết quả của em không ra là 5 (dòng em bôi đỏ là dòng mong muốn ra kết quả), mà nó lại ra là 10 ah. Kính nhờ thày giảng dạy cho
 

File đính kèm

Em vẫn biết tìm thế là chuẩn nhất, nhưng em muốn tìm hiểu viết như em tại sao kết quả bị sai.
-------------------
(Mặc dù trong cột đó là tìm theo phương pháp đúng mà).

Bạn quên mấy bài đầu topic này rồi. Lookup dò tìm thông thường đòi hỏi dữ liệu cột dò tìm phải được sort ascending. Sau khi sort ascending, nó sẽ cho số đúng nếu tìm thấy hoặc số gần đúng nếu không tìm thấy.

Công thức của bạn tìm 360 trong 1 cột bắt đầu là 200, kế là 300, kế là 20, kế là 432. Nó dò từ trên xuống thấy số đầu tiên lớn hơn 360 là 432, nó sẽ lùi lại lấy số bên trên 432 là 20. Chiếu sang cột A là 10.

Bạn test bằng cách thay số 20 thành 370, số đầu tiên >360 là 370, lui lại sẽ lấy số trên nó là 300, chiếu sang cột A, kết quả là 2.
 
Giải thích lại cho công thức thứ 2 (của hong.van) tại sao đúng:

=LOOKUP(2,1/(B2:B17=E4),A2:A17)

(B2:B17=E4) tạo ra 1 mảng mang các giá tri True, False

Lấy 1 chia các giá trị True, False sẽ cho các giá trị 1, #DIV/0!, trong đó số lớn nhất là 1.

Số lớn nhất là 1, mà lại đi tìm 2 thì chắc chắn không có. Tìm đến cuối vẫn không có thì nó nhảy lùi lại số có nghĩa gần nhất (số 1), và là vị trí có giá trị = E4.

Nói thêm để bổ sung bài trên là:

Nếu lookup tìm thấy số đầu tiên > số đang tìm, nó sẽ lui lại lấy giá trị có nghĩa đầu tiên bên trên (bỏ qua ô lỗi)

Nếu lookup không tìm thấy, kể cả tìm không thấy giá trị nào lớn hơn giá trị cần tìm, nó sẽ lấy giá trị cuối cùng. Nếu giá trị cuối cùng là giá trị lỗi, nó lấy kết quả có nghĩa bên trên gần nhất.
 
lookup có thể làm thay Vookup trong bài toán sau không?

Em biết Lookup khi tìm dưới dạng điều kiện nó sẽ lấy giá trị dòng cuối cùng trong trường hợp tìm thấy nhiều giá trị giống nhau, nhưng em muốn nó lấy dòng trên cùng (tức dòng bôi đỏ) thì hàm này có dạng cú pháp nào để làm được không ah?
Lookup.jpg


------
(không dùng hàm Index + Match, vì em đang cần tìm hiểu các dạng viết của Lookup).
 

File đính kèm

Lần chỉnh sửa cuối:
Em biết Lookup khi tìm dưới dạng điều kiện nó sẽ lấy giá trị dòng cuối cùng trong trường hợp tìm thấy nhiều giá trị giống nhau, nhưng em muốn nó lấy dòng trên cùng (tức dòng bôi đỏ) thì hàm này có dạng cú pháp nào để làm được không ah?


------
(không dùng hàm Index + Match, vì em đang cần tìm hiểu các dạng viết của Lookup).

Nhưng với dữ liệu của bạn như thế + điều kiện tìm như thế thì LOOKUP chỉ có thể lấy giá trị cuối cùng mà nó tìm thấy (kết quả =8)
Muốn kết quả = 5 thì phải MATCH + INDEX thôi
 
Như vậy, em hiểu, nếu dữ liệu dò tìm từ trái sang phải thì trong trường hợp này, Lookup không thay được Vlookup.

---------------
Nhưng hình như em cảm giác Lookup dò theo kiểu điều kiện sẽ lâu hơn Vlookup bởi nó phải tính thêm phép tính

PHP:
1/(A2:A9=C1)
 

File đính kèm

  • Untitled-1.jpg
    Untitled-1.jpg
    42.4 KB · Đọc: 225
Lần chỉnh sửa cuối:
Như vậy, em hiểu, nếu dữ liệu dò tìm từ trái sang phải thì trong trường hợp này, Lookup không thay được Vlookup.

Bạn hiểu như vậy là không chính xác. Nếu tìm với điều kiện như Vlookup thì bạn chỉ cần công thức

Nếu bạn dùng
Thì bản chất hoàn toàn khác
Khi dùng hàm này trước tiên nó sẽ tạo 1 mảng giá trị tại A2:A9 = c1, kết quả đúng cho true(=1), kết quả sai la false. mảng đó sẽ là :{False;False;False;False;True;False;False;True} tương đương {0;0;0;0;1;0;0;1}
Khi dò tìm 2 trong mảng đó sẽ không có kết quả chính xác là 2 do đó Lookup sẽ cho kết quả nhỏ nhất so với 2, ở đây có 2 kết quả True(=1) song nó sẽ lấy kết quả cuối cùng nó tìm được và đối chiếu sang mảng B2:B9
 
Bạn hiểu như vậy là không chính xác. Nếu tìm với điều kiện như Vlookup thì bạn chỉ cần công thức
PHP:
=lookup(c1,a2:a9,b2:b9)

Sorry bác, em nhầm. Trong ví dụ đính kèm em so sánh cách cách dùng, em thắc mắc tại dòng công thức số 3, em dùng Lookup nó vẫn ra là 5 nhỉ

Lookup2.jpg
 

File đính kèm

Lần chỉnh sửa cuối:
Sorry bác, em nhầm. Trong ví dụ đính kèm em so sánh cách cách dùng, em thắc mắc tại dòng công thức số 3, em dùng Lookup nó vẫn ra là 5 nhỉ

Bạn không chịu đọc kỹ những gì người ta viết gì cả
Cách thứ 3 (LOOKUP(C1, A2:A9, B2:B9)...) chỉ có thể áp dụng khi bảng dò đã sort trước
Bạn nhìn đi, cột A dữ liệu có sort tăng dần đâu mà dùng cách đó ---> Nó cho kết quả trật lất là phải rồi
 
Bạn không chịu đọc kỹ những gì người ta viết gì cả
Cách thứ 3 (LOOKUP(C1, A2:A9, B2:B9)...) chỉ có thể áp dụng khi bảng dò đã sort trước
Bạn nhìn đi, cột A dữ liệu có sort tăng dần đâu mà dùng cách đó ---> Nó cho kết quả trật lất là phải rồi

Bổ sung:
Qua khỏi 220 thứ nhì, nó đã thấy 600 (là số đầu tiên > 220), nó cho rằng theo quy luật tăng dần thì hết rồi, nên nó quay lại.

TB:
Hôm nay thấy ndu cũng bắt đầu mắng kìa!
 
Bổ sung:
Qua khỏi 220 thứ nhì, nó đã thấy 600 (là số đầu tiên > 220), nó cho rằng theo quy luật tăng dần thì hết rồi, nên nó quay lại.

TB:
Hôm nay thấy ndu cũng bắt đầu mắng kìa!

Xin lỗi các thày, lần sau em sẽ nghiên cứu kỹ hơn, lỗi do em nghĩ mãi khi đến 220 đầu tiên sao nó không chiu dừng mà lại đi tiếp.
 
Xin lỗi các thày, lần sau em sẽ nghiên cứu kỹ hơn, lỗi do em nghĩ mãi khi đến 220 đầu tiên sao nó không chiu dừng mà lại đi tiếp.

Tôi có cách này khiến bạn nhớ lâu nè...
Chắc bạn thừa biết rằng VLOOKUP(trị dò, bảng dò, cột dò, kiểu dò) ---> Với kiểu dò = 0 là dò chính xác, và = 1 là dò không chính xác, đúng không? Đương nhiên với kiều dò =1, bắt buộc dữ liệu phải được sort trước
Vậy thì:
LOOKUP(trị dò, bảng dò, bảng kết quả) sẽ tương đương với VLOOKUP mà kiểu dò =1 ---> như vậy cũng như VLOOKUP, bắt buộc dữ liệu phải sort trước
LOOKUP(2, 1/(....), ) sẽ tương đương với VLOOKUP mà kiểu dò =0 ---> Cũng như VLOOKUP, dữ liệu không cần sort
Vậy thôi
 
Tôi có cách này khiến bạn nhớ lâu nè...
Chắc bạn thừa biết rằng VLOOKUP(trị dò, bảng dò, cột dò, kiểu dò) ---> Với kiểu dò = 0 là dò chính xác, và = 1 là dò không chính xác, đúng không? Đương nhiên với kiều dò =1, bắt buộc dữ liệu phải được sort trước
Vậy thì:
LOOKUP(trị dò, bảng dò, bảng kết quả) sẽ tương đương với VLOOKUP mà kiểu dò =1 ---> như vậy cũng như VLOOKUP, bắt buộc dữ liệu phải sort trước
LOOKUP(2, 1/(....), ) sẽ tương đương với VLOOKUP mà kiểu dò =0 ---> Cũng như VLOOKUP, dữ liệu không cần sort
Vậy thôi
Bạn quên mấy bài đầu topic này rồi. Lookup dò tìm thông thường đòi hỏi dữ liệu cột dò tìm phải được sort ascending. Sau khi sort ascending, nó sẽ cho số đúng nếu tìm thấy hoặc số gần đúng nếu không tìm thấy.

Công thức của bạn tìm 360 trong 1 cột bắt đầu là 200, kế là 300, kế là 20, kế là 432. Nó dò từ trên xuống thấy số đầu tiên lớn hơn 360 là 432, nó sẽ lùi lại lấy số bên trên 432 là 20. Chiếu sang cột A là 10.

Bạn test bằng cách thay số 20 thành 370, số đầu tiên >360 là 370, lui lại sẽ lấy số trên nó là 300, chiếu sang cột A, kết quả là 2.
Bổ sung:
Qua khỏi 220 thứ nhì, nó đã thấy 600 (là số đầu tiên > 220), nó cho rằng theo quy luật tăng dần thì hết rồi, nên nó quay lại.


Em xin chân thành cảm ơn 2 thày rất nhiều, quả thật nếu không được các thày chỉ cho chắc em chưa thể vỡ ra được vấn đề về Lookup mà trước kia em đọc mãi mà vẫn thấy lơ mơ. Qua đây em hiểu được ý nghĩa khi dò tìm không chính xác thì dữ liệu phải Sort.
 
Xin giúp em hiểu hơn về Lookup

Hôm nọ, em có đọc Topic này về sử dụng Lookup, tuy nhiên em thử cho 2 ví dụ theo hình đính kèm, em vẫn thắc mắc kết quả của ví dụ 2 (xin được các thày mắng để lần sau em khỏi băn khoăn về nó nữa)
 

File đính kèm

  • Lookup.JPG
    Lookup.JPG
    38 KB · Đọc: 192
Hôm nọ, em có đọc Topic này về sử dụng Lookup, tuy nhiên em thử cho 2 ví dụ theo hình đính kèm, em vẫn thắc mắc kết quả của ví dụ 2 (xin được các thày mắng để lần sau em khỏi băn khoăn về nó nữa)
Vậy thì xem lại bài 33
Vậy thì:
LOOKUP(trị dò, bảng dò, bảng kết quả) sẽ tương đương với VLOOKUP mà kiểu dò =1 ---> như vậy cũng như VLOOKUP, bắt buộc dữ liệu phải sort trước
LOOKUP(2, 1/(....), ) sẽ tương đương với VLOOKUP mà kiểu dò =0 ---> Cũng như VLOOKUP, dữ liệu không cần sort
Vậy thôi
 
Bổ sung:
Qua khỏi 220 thứ nhì, nó đã thấy 600 (là số đầu tiên > 220), nó cho rằng theo quy luật tăng dần thì hết rồi, nên nó quay lại.

Hôm nay em cứ bị sao ấy thày ah, em lấy 2 ví dụ tương đương nhau về mặt bản chất nhưng kết quả ra lại không như nhau (em vẫn biết là phải Sort trước, nhưng giả sử nếu không sort trước thì tại sao KQ chẳng theo quy luật gì cả như giải thích của sư phụ Ptm0412)

Lookup_Re_zps925fe7b0.jpg
 

File đính kèm

Lần chỉnh sửa cuối:
lookup.jpg
Bạn xem ảnh thì thấy đó, khi không sort thì kết quả ra mỗi lúc một kiểu -> Với dữ liệu không được sort trước thì theo tôi nghĩ chỉ nên dùng trong trường hợp tìm vị trí (hoặc giá trị) tương ứng với số cuối cùng của Lookup_vector với Lookup_value luôn lớn hơn các giá trị của Lookup_vector.
 

File đính kèm

Mình cũng đang tìm hiểu về LOOKUP để sử dụng cho linh hoạt, bình thường mình thường xuyên dùng những hàm đơn giản như VLOOKUP, SUMIF muốn tìm hiểu sâu hơn phải học các cao thủ như này nhưng khó quá. "Học, học nữa, học mãi" hô to nhưng "óc bằng quả nho" biết làm sao. Hu...u...hu
 
Hay quá, hiểu thêm một chút về lookup
 
Tôi có cách này khiến bạn nhớ lâu nè...
Chắc bạn thừa biết rằng VLOOKUP(trị dò, bảng dò, cột dò, kiểu dò) ---> Với kiểu dò = 0 là dò chính xác, và = 1 là dò không chính xác, đúng không? Đương nhiên với kiều dò =1, bắt buộc dữ liệu phải được sort trước
Vậy thì:
LOOKUP(trị dò, bảng dò, bảng kết quả) sẽ tương đương với VLOOKUP mà kiểu dò =1 ---> như vậy cũng như VLOOKUP, bắt buộc dữ liệu phải sort trước
LOOKUP(2, 1/(....), ) sẽ tương đương với VLOOKUP mà kiểu dò =0 ---> Cũng như VLOOKUP, dữ liệu không cần sort
Vậy thôi

Chắc chúng ta chỉ cần chốt lại 1 câu: Nếu dữ liệu không sort, nhiều khi kết quả sẽ không chính xác, còn tại sao lại không thì phải mổ xẻ xem cơ chế tạo ra cái hàm Lookup này do Microsoft thiết kế như nào thì mới tường minh được.

Do đó, nếu dữ liệu đã sort thì dùng, còn không thì dùng cái khác, cho đỡ lằng nhằng các bác nhỉ :D
 
Ví dụ ta có 5 cột dữ liệu (A1:E50), ta muốn dò tìm 4 điều kiện trên 4 cột B, C, D, E và kết quả trả về là cột A. Vậy LOOKUP như sau:
Mã:
=LOOKUP(2, 1/(B1:B50= đ/k1)/(C1:C50= đ/k2)/(D1:D50= đ/k3)/(E1:E50= đ/k4), A1:A50)
Cú pháp chung cho loại bài toán dò tìm nhiều điều kiện dùng LOOKUP là vầy:
Mã:
=LOOKUP(2, 1/(Biểu thức điều kiện 1)/(Biểu thức điều kiện 2)/.... /(Biểu thức điều kiện n), Mảng cần lấy kết quả)
Bạn nghĩ nếu dùng VLOOKUP hoặc HLOOKUP thì có giải quyết bài này được không?
-----------------------------------------
Đương nhiên bài toán này vẫn có thể dùng SUMPRODUCT hoặc INDEX + MATCH để giải quyết, nhưng nên nhớ rằng:
- Nếu tìm thấy từ 2 kết quả trở lên (dạng Number) thì SUMPRODUCT sẽ cộng dồn, dẫn đến sai kết quả
- Nếu giá trị cần tìm thuộc dạng Text, đương nhiên không thể dùng SUMPRODUCT
- Nếu dùng INDEX + MATCH với dò tìm nhiều điều kiện, có thể bạn phải dùng tổ hợp phím Ctrl + Shift + Enter (trong khi LOOKUP chỉ cần Enter bình thường)
- Lưu ý: Nếu tìm thấy từ 2 kết quả trở lên thì LOOKUP sẽ lấy kết quả cuối mà nó tìm thấy (còn INDEX + MATCH sẽ lấy kết quả đầu tiên)
Hay quá. Thật tuyệt vời.
 

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

Back
Top Bottom