「3,000円以上は送料500円、5,000円以上は送料無料」のような金額帯ごとの判定を、IFを何重にも重ねて書いていませんか。点数からA・B・Cの評価を出す、売上から歩合率を決める——いずれも同じ「階段状の判定」です。
こうした範囲判定は、VLOOKUP の近似一致(第4引数 TRUE)を使うと、しきい値表を1つ用意するだけで自動化できます。条件が増えてもIFのネストになりません。実際の画面で見ていきましょう。
完成イメージ
左のしきい値表(下限金額→送料)をもとに、右の購入金額から送料を自動判定しています。4,800円は「3,000以上5,000未満」なので500円、7,000円は5,000以上なので無料です。
数式の意味
送料のセルに入れているのは、次の数式です。
=VLOOKUP(C2, $A$2:$B$4, 2, TRUE)
引数は通常のVLOOKUPと同じ4つですが、最後を TRUE にしているのがポイントです。
- 検索値(C2)… 判定したい購入金額
- 範囲($A$2:$B$4)… しきい値表(下限金額と送料)。昇順に並べる
- 列番号(2)… 返したい列。ここでは送料
- 検索方法(TRUE)… 近似一致。「検索値を超えない最大のしきい値」の行を返す
TRUE のとき、VLOOKUP は「ぴったり一致」ではなく「その値以下で一番近いしきい値」の行を選びます。これが階段状の判定の正体です。
つまずきやすいポイント①:しきい値表は必ず昇順
近似一致は、しきい値表が小さい順(昇順)に並んでいる前提で動きます。順番がばらばらだと、正しい行ではなく途中で見つかった行を返し、誤った送料になります。下限金額を必ず小さい順に並べてください。
つまずきやすいポイント②:「未満」は書かない
「3,000以上5,000未満」の未満側は指定しません。次のしきい値が自動的に上限の役割をします。0・3,000・5,000と並べれば、3,000の行は自動的に「3,000以上5,000未満」を担当し、5,000以上は次の行が拾います。境界値(3,000ちょうど)はその行に含まれます。
よくあるエラーと対処
- 一番小さい値より下が #N/A … しきい値表の先頭に 0 など最小の下限を入れておくと、すべての値が判定できます。
- 判定が1段ずれる … 昇順になっていないか、しきい値の数字自体を見直します。境界の考え方(以上・未満)も確認します。
- コード検索なのに変な値が返る … それは近似一致を使うべきでない場面です。商品コードや名前で引くときは完全一致(FALSE)を使います。
まとめ
VLOOKUP の第4引数を TRUE にすれば、金額帯や点数帯の階段判定が、しきい値表1つで自動化できます。コツは「表を昇順に並べる」「未満は書かない」の2つだけです。IFのネストから解放されます。
「料金表・送料表・等級表をシステム化したい」「判定ルールが複雑で関数では限界」という場合は、ExcelMate のチャット相談でそのままご相談いただけます。料金・相場のページもあわせてご覧ください。

