Excelの関数であるVlookup関数やXlookup関数で複数条件で結果を出したい場合の代替の計算式を紹介する。
Excel 複数条件でVlookupやXlookup同様の機能を実現する方法①
INDEX関数とMATCH関数を組み合わせて、複数条件でリストを絞り込んでVlookup関数やXlookup関数のように結果を出す計算式は下記。
=INDEX([出力列],MATCH(1,([条件列1]=[条件値1])*([条件列2]=[条件値2])*・・・*([条件列n]=[条件値n]),0))
出力列 | リストで出力したい列を指定する |
条件列1~n | 絞り込む条件で使用する列を指定する |
条件値1~n | 条件列1~nで絞り込む条件値を指定する |
例1:
=INDEX(D:D,MATCH(1,(A:A=H2)*(C:C=H3),0))
出力列で複数列を結合・整形して出力することができる。
例2:
=INDEX(B:B&"銀行 "&D:D&"支店",MATCH(1,(A:A=H2)*(C:C=H3),0))
Excel 複数条件でVlookupやXlookup同様の機能を実現する方法②
INDEX関数とFILTER関数を組み合わせて、複数条件でリストを絞り込んでVlookup関数やXlookup関数のように結果を出す計算式は下記。
=INDEX(FILTER([リスト全体],([条件1列]=[条件1値])*([条件2列]=[条件2値])*・・・*([条件n列]=[条件n値]),""),1,[出力列番号])
リスト全体 | 条件列1~Nや出力列で使用する列を含む列範囲を指定する |
条件列1~n | 絞り込む条件で使用する列を指定する |
条件値1~n | 条件列1~nで絞り込む条件値を指定する |
出力列番号 | 結果を出力する列番号を指定する |
例3:
=INDEX(FILTER(A:D,(A:A=H2)*(C:C=H3),""),1,4)
出力列番号で指定をした場合、列の追加などで表のレイアウトが変わると使えなくなる。変化に強くするため、列名称で指定できるようにするには、MATCH関数を使用して下記のようにする。
例4:
=INDEX(FILTER(A:D,(A:A=H2)*(C:C=H3),""),1,MATCH(TRUE,(1:1="支店名"),0))
複数結果が表示される場合に指定項目でソートして1番目を取得する場合には下記の計算式を使うと良い。
=INDEX(SORT(FILTER([リスト全体],([条件列1]=[条件値1])*([条件列2]=[条件値2])*…*([条件列n]=[条件値n]),""),[並び替えインデックス],[昇順/降順],FALSE),1,[出力列番号])
並び替えインデックス | 並び替えを行う列をリスト全体での列番号で指定する |
昇順/降順 | 1:昇順、-1:降順 |
例5:開始日の降順で1番目の支店名を出力する
=INDEX(SORT(FILTER(A:E,(A:A=H2)*(C:C=H3),""),5,-1,FALSE),1,4)
コメント