doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

【コピペで使える】ExcelのINDEX・MATCHで近似一致検索|手数料率・ランク判定を自動化する方法

スポンサーリンク


VLOOKUPの近似一致で「列がずれた」経験はありませんか?

「手数料率のテーブルに列を1本追加したら、VLOOKUPの結果がまるごとずれてしまった」――そんな経験を持つ方は少なくないはずです。

近似一致検索はVLOOKUPでも可能ですが、テーブル構造の変更に弱いという致命的な弱点があります。列を追加・削除するたびに数式を修正するのは、実務では大きなリスクです。

そこで本記事では、VLOOKUPの弱点を補うINDEX・MATCH関数の近似一致検索を、コピペしてすぐ使える数式とともに解説します。


INDEX・MATCHがVLOOKUPより強い理由を先に確認する

実践例に入る前に、「なぜINDEX・MATCHを使うのか」をはっきりさせておきましょう。

比較項目 VLOOKUP INDEX・MATCH
検索列の位置 必ず左端 どこでもOK
列の追加・削除 数式が崩れやすい 影響を受けにくい
近似一致の方向 昇順のみ 昇順・降順どちらも対応
可読性 シンプル やや複雑だが柔軟

特に「列の追加・削除に強い」点は、実務でテーブルが頻繁に更新される現場では決定的な差です。では、実際の使い方を見ていきましょう。


MATCHの「照合の種類」だけ先におさえる

=MATCH(検索値, 検索範囲, 照合の種類)

近似一致に使う引数は2種類だけです。

照合の種類 意味 テーブルの並び順
1 検索値以下の最大値を返す 昇順(必須)
-1 検索値以上の最小値を返す 降順(必須)

この2つを実践例で体感しながら覚えていきましょう。


実践例①:最もシンプルな近似一致|売上金額→手数料率

テーブルの準備(昇順)

A列:売上金額(以上) B列:手数料率
0 5%
100,000 4%
500,000 3%
1,000,000 2%

テーブルはA2:B5に入力、D2セルに検索したい売上金額(例:300,000円)が入っているとします。

コピペ用の数式

=IFERROR(INDEX($B$2:$B$5, MATCH(D2, $A$2:$A$5, 1)), "範囲外")

動作の流れ

  1. MATCH(300000, $A$2:$A$5, 1) → 300,000以下の最大値は100,000(2行目)→ 2を返す
  2. INDEX($B$2:$B$5, 2) → B列の2番目 → 4%を返す

IFERRORを最初から付けておくことで、テーブルの最小値(0)を下回ったときの#N/Aエラーを「範囲外」と表示できます。後から追加するより、最初から書いておくのが実務の鉄則です。


実践例②:列が左にある「逆引き」|スコア→評価ランク

VLOOKUPが苦手とする「返したい値の列が検索列より左にある」ケースです。

テーブルの準備(E・F列を使用)

E列:最低スコア F列:評価
0 D
60 C
70 B
85 A
95 S

G2セルにスコア(例:78点)が入っているとします。

コピペ用の数式

=IFERROR(INDEX($F$2:$F$6, MATCH(G2, $E$2:$E$6, 1)), "範囲外")

78点は70以上・85未満なので、評価はBが返ります。

ここで重要なのは、INDEXの参照先をF列(評価)に、MATCHの検索範囲をE列(スコア)にそれぞれ独立して指定できる点です。VLOOKUPでは列番号を数えなければなりませんが、INDEX・MATCHは範囲を直接指定するため、列を追加しても数式が壊れません。


実践例③:なぜ-1(降順)が必要なのか|予算→最適プラン

「300,000円の予算でギリギリ収まる最小のプランを選びたい」という場合、照合の種類1では対応できません。1は「以下の最大値」を探すため、予算を超えないランクを引っ張るのには向いていますが、「以上の最小値」=予算をギリギリカバーするプランを探すには-1が必要です。

テーブルの準備(降順・A列・B列)

A列:下限金額 B列:プラン名
1,000,000 プレミアム
500,000 スタンダード
100,000 ライト
0 フリー

D2セルに予算(例:300,000円)が入っているとします。

コピペ用の数式

=IFERROR(INDEX($B$2:$B$5, MATCH(D2, $A$2:$A$5, -1)), "範囲外")

300,000以上の最小値は500,000(スタンダード)なので、スタンダードが返ります。

⚠️ 照合の種類-1を使う場合、テーブルは必ず降順に並べてください。昇順のままだと誤った結果が返ります。Excelは並び順の誤りを警告してくれないため、テーブル設計の段階で意識することが重要です。


注意点まとめ:よくある3つのミス

① 並び順の間違い

  • 照合の種類1 → テーブルを昇順
  • 照合の種類-1 → テーブルを降順

並び順が違うと、Excelは誤った行を平然と返します。エラーすら出ないので気づきにくい点に注意が必要です。

② エラー対策を忘れる

検索値がテーブルの範囲外(1の場合は最小値より小さい値)だと#N/Aエラーが出ます。IFERRORで必ずラップしましょう。

=IFERROR(INDEX(...), "範囲外")

③ 検索範囲にデータ型の混在がある

数値列に文字列「100,000」(テキスト形式)が混入していると、近似一致が正しく機能しません。セルの書式と入力値のデータ型は統一しておきましょう。


まとめ:今日から使える3つの公式

INDEX・MATCHの近似一致は、一度パターンを覚えてしまえば応用が効く強力な武器です。

用途 照合の種類 テーブルの向き
手数料率・評価ランクの自動適用 1 昇順
予算以上の最小プラン選択 -1 降順
左側の列を返す逆引き 1 or -1 INDEXの範囲を自由に指定

まずは手数料率テーブルを自分のシートに再現し、数式をコピペして動作を確認するところから始めてください。手を動かすことが、最速の習得方法です。


本記事は「Lookupシリーズ」の一部です。XLOOKUP・VLOOKUPの解説記事もあわせてご覧ください。