Có gì mới?
Blue
Red
Green
Orange
Voilet
Slate
Dark

Tìm kiếm đơn giá theo nhiều điều kiện

Springo#VN

Springo#vn
Staff member
VIP.1
Tham gia
Bài viết
406
Điểm tương tác
6
Offline
Chào mọi người!
Mình đang có một vấn đề mong được mọi người hỗ trợ:

Từ dữ liệu là imei dạng như trên (thực tế có thể lên đến vài trăm imei định dạng: imei1,imei2,imei3,...)
Mình cần tìm công thức ở chỗ màu vàng để tìm được Tên máy và giá nhập chính xác cho từng imei.
1554439717004.png

Chân thành cảm ơn mọi người đã hỗ trợ!

Bạn muốn lấy số Imei để tìm ra tên máy và đơn giá, thì bạn phải tự đảm bảo nó là duy nhất:

Mã:
H2=LOOKUP(2,1/FIND(G2,$B$2:$B$100),$A$2:$A$100)
I2=LOOKUP(2,1/FIND(G2,$B$2:$B$100),$C$2:$C$100)
Enter, fill xuống.

Dò tìm nhiều điều kiện:

Cú pháp chung:
=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ả)

.....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): Được gọi là "Véc tơ" chỉ hướng

  1. Dựa vào biểu thức toán học: 1/n/m thì bằng 1/(n*m) (Vd: 1/2/8 = 1/ (2*8) = 1/ 16 = 0.0625 )
  2. Với các biểu thức điều kiện, để giản lược, ta có thể áp dụng toán tử "*" (nhân) thay cho hàm AND(), và toán tử "+" (cộng) thay cho hàm OR().
  3. Các biểu thức điều kiện này, theo từng phần của biểu thức thực hiện, sẽ trả kết quả từng mảng chứa các trị hoặc Đúng (TRUE hay 1) hoặc sai (FALSE hay 0), sau đó nó kết hợp lại như hàm AND(): 1/ (Mảng1 * Mảng2 *....* Mảngn). Ví dụ:
    • 1/ ( {1;1;0;0;1;1} * {1;0;0;0;1;0} ) => 1/ ({1;0;0;0;1;0}) => {1;#DIV/0!;#DIV/0!;#DIV/0!;1;#DIV/0!}
    • Do kết quả có hai giá trị 1 (xanh và đỏ), thì "Véc tơ" chỉ hướng sẽ báo cho LOOKUP chọn theo số 1 sau cùng (màu đỏ), Ví dụ như trên thì đếm theo số dòng nó ở là: 5, LOOKUP() sẽ lấy giá trị tương ứng với dòng 5 trong "Mảng cần lấy kết quả". Tức là khi có nhiều kết quả phù hợp với các điều kiện trong các biểu thức mang lại, "Véc tơ" chỉ hướng sẽ chọn kết quả phù hợp đứng thứ tự cuối cùng.
    • Để ý rằng các kết quả trả về trong "Véc tơ" chỉ hướng có thể chứa nhiều kiểu giá trị: số, chuỗi, luận lý (True-False), lỗi (#DIV/0!, #N/A....), tuy nhiên nó chỉ xét và tính trên các kết quả kiểu: số, chuỗi và luận lý, nó "phớt lờ" bỏ qua không tính các giá trị Lỗi. Đây là điểm mạnh của hàm LOOKUP(), nhờ điều này mà ta lọc ra được các giá trị phù hợp để truy xuất dữ liệu mà không cần phải dùng thêm bất kỳ hàm phụ trợ nào khác.
.....Tại sao là số 2?
  1. Do biểu thức "Véc tơ" chỉ hướng dạng: 1/n, ta biết: 1/n<=1 , nên kết quả có số lớn nhất là 1. Nên "giá trị tìm" cho LOOKUP() ta có thể đặt bất cứ số nào tùy ý, miễn sao >1.
  2. Nói chung, tùy theo giá trị kết quả tại biểu thức "Véc tơ" chỉ hướng mà ta đặt số "giá trị tìm" cho phù hợp, tức đặt giá trị tìm lúc nào cũng lớn hơn hoặc bằng giá trị lớn nhất mà "Véc tơ" chỉ hướng trả về.

  • Lưu ý:
    1. So sánh với kiểu truy lục của VLOOKUP(trị dò, bảng dò, cột dò, kiểu dò):
      1. Với kiểu dò = 0 là dò chính xác,
      2. Với kiểu dò = 1 là dò không chính xác, và bắt buộc dữ liệu phải được sort trước.
    2. Vậy thì:
      1. 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.
      2. 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.

  • So sánh với các hàm truy lục khác:
    • VLOOKUP hoặc HLOOKUP: chỉ so được 1 điều kiện, hoặc có thể nhiều điều kiện NHƯNG các điều kiện này được kết hợp giản đơn với toán tử &. Ví dụ:
      • VLOOKUP("mục1" & "mục2" &..."mụcN", CHOOSE({1,2}, "Vùng1" & "Vùng2" &..."VùngN", Mảng lấy kết quả ),2,0) nhấn Ctrl+Shift+Enter
    • SUMPRODUCT:
      • 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
    • INDEX + MATCH:
      • 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)
      • 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.

  • Những biến thể LOOKUP() trong thực tế áp dụng:
    • LOOKUP("zzzzz", Vùng/Mảng so, [Mảng cần lấy kết quả]) --> Ra kết quả đơn
    • LOOKUP(Mảng sắp đặt DÒNG theo điều kiện, Mảng chứa số dòng, Mảng cần lấy kết quả) --> Ra kết quả 1 Mảng.
 

Đính kèm

  • hrspring.vn_Dò tìm nhiều điều kiện.xlsx
    9.9 KB · Xem: 0

Facebook Comment

Top Bottom