スポンサーリンク

ExcelのINDEXとMATCH関数を使って、行と列のタイトルが一致する場所の値を取得する方法

オフィスソフト
オフィスソフト
この記事は約4分で読めます。

Excelでデータを検索する際、「行タイトル」と「列タイトル」を指定して、対応するセルの値を取得すしたいこと、多いと思います。その際に便利なのが、INDEX関数とMATCH関数の組み合わせです。

本記事では、INDEX関数とMATCH関数を使い、行タイトルと列タイトルをもとにデータを取得する方法を詳しく解説します。


スポンサーリンク

最初に結論!

MATCH関数で指定のタイトルがどの行、列にあるかを確認します。その行と列にある数値や文字列をINDEX関数で検索することで取ってくることができます。

例として、画像のような行タイトルを1月、2月…、列のタイトルに予算、実績、誤差としたときの関数式をコピペできるようにしておきます。

=INDEX(A1:D13, MATCH(F3, A1:A13, 0), MATCH(F4, A1:D1, 0))

=INDEX(タイトルを含めた検索範囲, MATCH(検索行タイトル,検索行タイトル範囲, 0), MATCH(検索列タイトル, 検索列タイトル範囲, 0))


スポンサーリンク

使用する関数の解説

まず、それぞれの関数の基本的な役割を確認しましょう。使っている関数を理解することで、応用が利くようになるので、ぜひ覚えていってください。

INDEX関数とは?

指定した行番号・列番号にあるデータを取得する関数です。

=INDEX(範囲, 行番号, 列番号)

例:A1:C5の範囲で、2行3列目のデータを取得

=INDEX(A1:C5, 2, 3)

MATCH関数とは?

指定した値が範囲内の何番目にあるかを取得する関数です。

=MATCH(検索値, 検索範囲, 検索方法)
  • 検索方法0(完全一致)を指定するのが一般的。
  • 例:A列に「2月」が何行目にあるか探す
=MATCH("2月", A1:A13, 0)

INDEXとMATCHを組み合わせる理由

INDEX関数は「行番号・列番号」を指定しないと使えません。しかし、通常のExcel表ではデータの位置が変動することが多いため、MATCH関数を使って行番号・列番号を取得すると、柔軟に対応できます。

具体的な例を見てみましょう。


行タイトルと列タイトルを指定して値を取得する方法

使用するデータ表

例えば、「2月の実績」を取得する場合、行タイトル『2月』と列タイトル『実績』を指定して該当セルの値を取得します。


INDEXとMATCHの組み合わせ

次の数式を使うことで、行タイトルと列タイトルを指定して値を取得できます。

=INDEX(A1:D13, MATCH("2月", A1:A13, 0), MATCH("実績", A1:D1, 0))

数式の説明

  • MATCH(“2月”, A2:A4, 0) → 「2月」がA1:A13の何行目にあるかを取得(結果:3)
  • MATCH(“実績“, A1:C1, 0) → 「実績」がA1:C1の何列目にあるかを取得(結果:3)
  • INDEX(A1:D13, 3, 3) → A1:C13の範囲で「3行3列目の値」を取得(結果:「22」)

可変セル参照を使って柔軟な検索をする

固定値ではなく、セルに入力した値を参照する方法を紹介します。

セルに検索条件を入力

この表のB3セルに在庫数を取得する数式を入力します。

=INDEX(A1:D13, MATCH(F3, A1:A13, 0), MATCH(F4, A1:D1, 0))
  • F3(2月)を参照して行番号を取得
  • F4(実績)を参照して列番号を取得
  • 該当セルの値をF6に表示

この方法なら、B1やB2の値を変えるだけで、異なる商品の情報を取得可能です!

セルの値をプルダウンのリスト(データの入力規制)で選択可能にすれば、見たいデータのみを抽出することができます。


応用編:エラー処理を追加する

MATCH関数で検索する値が見つからない場合、エラー(#N/A)が発生します。そのため、IFERROR関数を組み合わせると便利です。

=IFERROR(INDEX(A1:D13, MATCH("2月", A1:A13, 0), MATCH("実績", A1:D1, 0)), "該当なし")

IFERROR(数式, "該当なし") を追加することで、値が見つからないときに「該当なし」と表示されます。


まとめ

INDEX関数とMATCH関数の基本

  • INDEX(範囲, 行番号, 列番号) → 指定したセルの値を取得
  • MATCH(検索値, 検索範囲, 0) → 検索値の位置を取得

行タイトル・列タイトルを指定して値を取得する方法

  • =INDEX(データ範囲, MATCH(行タイトル, 行範囲, 0), MATCH(列タイトル, 列範囲, 0))

可変セル参照を活用して柔軟に検索

  • セルに商品名や項目名を入力し、数式で自動取得

エラー処理を追加

  • IFERROR() を使って、「該当なし」と表示

INDEXとMATCHの組み合わせを活用すれば、複雑な表から瞬時に欲しいデータを取得できます。
実務でも役立つテクニックなので、ぜひ試してみてください!

コメント

タイトルとURLをコピーしました