HLOOKUPは左から右方向への検索、VLOOKUPは上から下方向への検索をし、指定した値と一致(近似値)した場合にその列(行)と同じ列(行)にあるセルを返す関数ですが、
HLOOKUPとVLOOKUPが引っ付いたような関数はありません。
LOOKUPという関数が実はあるのですが、コレがそうじゃないの?!って思いきや違います・・。
2次元テーブルにて縦軸、横軸双方で条件一致のセルを返す方法とは?
=INDEX(MATCH,MATCH)
VLOOKUPもHLOOKUPも使いません。
INDEXという範囲内から指定した行番号・列番号からその結果を返す関数と、MATCHという範囲内から指定した検索値が何番目にあるのかを返す関数を使います。
関数 | 解説 | 使用例 |
---|---|---|
INDEX (配列, 行番号, [列番号]) |
テーブルまたはセル範囲にある値、あるいはその値のセル参照を返します。 |
=INDEX(A2:B3,2,2) A2~B3の範囲内で2行目と2列目にあるセルを返す |
MATCH (検査値, 検査範囲, [照合の型]) |
セルの範囲 (セル範囲: シート上の 2 つ以上のセル。セル範囲を指定する場合、隣接した複数のセル、または隣接していない複数のセルをセル範囲として選択できます。)内で指定された項目を検索し、その項目の相対的な位置を返します。 |
=MATCH(39,B2:B5,0) “39”の値がB2からB5の何処にあるのかを返す。 |
これを掛け合わせます。
上の表で ”ううう” と ”ddd” に一致するセル(D5)の”15”という値を返す方法です。
=INDEX ( A1:E7 , MATCH ( “ddd” , A1:A7 , 0 ) , MATCH ( “ううう” , A1:E1 , 0 ) )
解説
INDEXでA1からE7のセルを指定し、その内”ddd”は何行目にあるのか?
5行目ですよね。この5行目というのを1つ目のMATCH関数で表示しています。
MATCHで”ddd”を検索して5行目にあるという事を返しています。
”ううう”は何列目にありますか?
4列目ですよね。2つ目のMATCHで”ううう”を検索して4列目を返しています。
結果、INDEXのA1:E7内の5行目4列目の値を返す式になっていますので、結果は「15」になります。
INDEXとMATCHの組み合わせは結構便利なので憶えておきましょう。