INDEX và MATCH với nhiều tiêu chí
Công thức chung
{ = INDEX ( dải ô 1 , MATCH ( 1 , ( A1 = dải2 ) * ( B1 = dải ô 3 ) * ( C1 = dải4 ), 0 )) }
Mời bạn xem thêm:
>> mẫu d02-ts
>> mục tiêu nghề nghiệp là gì
>> cách tính thuế ngược
Giải trình
Để tra cứu các giá trị bằng INDEX và MATCH, sử dụng nhiều tiêu chí, bạn có thể sử dụng công thức mảng. Trong ví dụ được hiển thị, công thức trong H8 là:
{ = INDEX ( E5: E11 , MATCH ( 1 , ( H5 = B5: B11 ) * ( H6 = C5: C11 ) * ( H7 = D5: D11 ), 0 )) }
Đây là một công thức mảng, được nhập với điều khiển shift enter.
Cách thức hoạt động của công thức này
Thông thường, và công thức INDEX MATCH được cấu hình với bộ MATCH để xem qua một phạm vi một cột và cung cấp một kết quả phù hợp dựa trên một tiêu chí nhất định. Nếu không có các giá trị nối trong một cột trợ giúp, hoặc trong chính công thức, không có cách nào để cung cấp nhiều hơn một tiêu chí.
Công thức này làm việc xung quanh giới hạn này bằng cách sử dụng logic boolean để tạo ra một mảng các giá trị 0 và 0 để biểu diễn các hàng khớp với tất cả 3 tiêu chí, sau đó sử dụng MATCH để khớp với 1 đầu tiên được tìm thấy.
Mảng tạm thời của các số và số không được dựa trên đoạn mã này:
( H5 = B5: B11 ) * ( H6 = C5: C11 ) * ( H7 = D5: D11 )
Ở đây chúng ta so sánh mục H5 với tất cả các mục, kích thước trong H6 với tất cả các kích cỡ và màu sắc trong H7 đối với tất cả các màu. kết quả ban đầu trông như thế này:
{ TRUE ; TRUE ; TRUE ; FALSE ; FALSE ; FALSE ; TRUE } * { FALSE ; FALSE ; TRUE ; FALSE ; FALSE ; TRUE ; FALSE } * { TRUE ; FALSE ; TRUE ; FALSE ; FALSE ; FALSE ; TRUE }
Phép toán nhân biến đổi giá trị TRUE FALSE thành 1s và 0s:
{ 1 ; 1 ; 1 ; 0 ; 0 ; 0 ; 1 } * { 0 ; 0 ; 1 ; 0 ; 0 ; 1 ; 0 } * { 1 ; 0 ; 1 ; 0 ; 0 ; 0 ; 1 }
Và kết quả cuối cùng trông như thế này:
{ 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 }
Mà đi vào MATCH như mảng tra cứu:
MATCH ( 1 , { 0 ; 0 ; 1 ; 0 ; 0 ; 0 ; 0 } )
MATCH trả về 3, và toàn bộ công thức sẽ chuyển thành công thức INDEX MATCH chuẩn
= INDEX ( E5: E11 , 3 )
với kết quả cuối cùng là $ 17,00.
Phiên bản không phải mảng
Như Simon nhận xét bên dưới, bạn có thể thêm một INDEX khác vào công thức này để nhận phiên bản không phải mảng:
= INDEX ( rng1 , MATCH ( 1 , INDEX (( A1 = rng2 ) * ( B1 = rng3 ) * ( C1 = rng4 ), 0 , 1 ), 0 ))
Hàm INDEX xử lý tốt các mảng một cách tự nhiên, vì vậy chỉ số INDEX thứ hai được thêm vào chỉ để “bắt” mảng được tạo bằng logic boolean và trả về cùng mảng một lần nữa cho MATCH, do đó tránh phải nhập vào như một công thức mảng. Để làm điều này, INDEX được cấu hình với 0 hàng và một cột. Thủ thuật hàng zero gây ra INDEX trả về cột 1 từ mảng (dù đã là một cột).