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)), "範囲外")
動作の流れ
MATCH(300000, $A$2:$A$5, 1)→ 300,000以下の最大値は100,000(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の解説記事もあわせてご覧ください。