Excelを利用していると、特定の条件に該当する「最初の値」だけを取り出したい場面があるかと思います。
例えば、顧客ごとの初回購入日や、特定の地域の最初の売上データなどを確認したい場合です。
この記事では、INDEX関数とMATCH関数を組み合わせた基本的な方法と、同じようなことをできる関数としてFILTER関数を活用した方法を紹介します。
1.INDEXとMATCHの基本
まずは、今回使用する関数の基本動作を整理します。
1-1.INDEX関数
指定した範囲の中から、行番号や列番号に対応する値を返します。
=INDEX(範囲, 行番号)
たとえば、次のように入力します。
=INDEX(B2:B10, 3)
この式では、B2:B10の中から3行目の値を取得します。
1-2.MATCH関数
指定した範囲の中で、指定した値が何番目にあるかを返します。
=MATCH(検索値, 検索範囲, 検索の型)
たとえば、
=MATCH("東京", A2:A10, 0)
この式では、A2:A10の中で“東京”が最初に見つかった位置を返します。
検索の型に「0」を指定することで、完全一致の検索が行われます。
2.条件に一致する最初の値を取得する方法
実際に「条件に一致する最初の値」を取り出します。
次のようなデータを例にします。
都道府県 | 売上 |
---|---|
東京 | 1000 |
大阪 | 1200 |
東京 | 1500 |
名古屋 | 800 |
「都道府県が“東京”の最初の売上金額」を取得したい場合、次の式を使います。
=INDEX(B2:B5, MATCH("東京", A2:A5, 0))
この式の動作は以下の通りです。
- MATCH関数で、A列の中から“東京”が見つかる最初の行番号を取得
- INDEX関数で、同じ行のB列(売上金額)を参照
結果として「1000」が返されます。
これで、特定条件に一致する“最初の値”を簡単に取得できます。
3.複数条件で最初の値を取得する方法
次に、複数の条件を組み合わせて最初の値を取り出します。
次のようなデータを例にします。
都道府県 | 年度 | 売上 |
---|---|---|
東京 | 2023 | 900 |
大阪 | 2024 | 1200 |
東京 | 2024 | 1500 |
東京 | 2025 | 1800 |
「都道府県が“東京”かつ“年度”が2024年の最初の売上」を取得したい場合、次の式を使います。
=INDEX(C2:C5, MATCH(1, (A2:A5="東京")*(B2:B5=2024), 0))
この式では、(A2:A5="東京")*(B2:B5=2024)
の部分で両方の条件を満たす行だけが「1」になります。
MATCH関数は、その「1」が最初に現れた位置を返し、INDEX関数が対応する売上金額を取得します。
結果として「1500」が表示されます。
4.FILTER関数で同じ処理を行う方法
別の方法としてFILTER関数を使うことでさらにシンプルに記述できます。
=INDEX(FILTER(C2:C5, (A2:A5="東京")*(B2:B5=2024)), 1)
- FILTER関数が条件に合う売上金額の一覧を抽出
- INDEX関数でその中の1件目(最初の値)を取得
5.注意点とエラー対策
- 条件に一致するデータが存在しない場合、
#N/A
エラーとなるため、IFERROR 関数でエラーを回避するとより実用的
=IFERROR(INDEX(...), "該当なし")
- 文字列と数値の型が混在していると正しい出力にならないことがある
- FILTER関数を使う場合、データの空白セルがあると結果が想定と異なることがあるため注意が必要
6.まとめ
今回は、Excelで条件に一致する「最初の値」を取得する方法を紹介しました。
- 基本は INDEX+MATCH関数 の組み合わせ
- Excel 365 以降なら FILTER関数+INDEX でより簡単に実現可能
- IFERROR 関数を併用してエラー対策を行うのがおすすめ
この方法を覚えておくと、日常業務でのデータ分析やレポート作成がより効率的になると思いますので活用してみてください。