XLOOKUPで「以上・未満」を検索|一致モード-1・1と境界値の考え方

XLOOKUPで「以上・未満」を検索|一致モード-1・1と境界値の考え方

XLOOKUPで「70以上80未満」のような範囲を検索するには、下限値の表を用意して第5引数の一致モードを -1 にします。入力値以下で最も近い下限が選ばれるため、得点別の評価や金額別のランクを求められます。

この記事の基本の式
数式=XLOOKUP(B2,D3:D6,F3:F6,"対象外",-1)
練習用Excelファイル(無料ダウンロード)
B2の得点を59・60・70・80などに変更して評価を確認できます。Microsoft 365・Excel 2024・2021向けです。ボタンをクリック/タップして保存し、Excelで開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

「以上・未満」の区切りを表にする

得点をB2、下限値をD3:D6、評価をF3:F6に入力します。

下限値適用する得点評価
00以上60未満F
6060以上70未満C
7070以上80未満B
8080以上A

評価を表示するB3に次の式を入力します。

B3に入力:得点を「以上・未満」の区分に当てはめる
数式=XLOOKUP(B2,D3:D6,F3:F6,"対象外",-1)
ひとことで得点以下で、いちばん近い下限を探し、その評価を返す
B2
検索値です。評価を調べたい得点です(サンプルは 72)
D3:D6
探す範囲です。各区分の「下限値」(0・60・70・80)を並べた列です
F3:F6
返す範囲です。下限ごとの評価(F・C・B・A)です
"対象外"
どの下限にも当てはまらないとき(0未満など)に表示する文字です
-1
第5引数の一致モード。-1 は「同じ値が無ければ、入力値以下で最も近い値」を選ぶ指定です
データの流れ
① 下限値の一覧から、72以下でいちばん近い値を探す
D30D460D570D680
▼
② 同じ行の評価を返す結果
B3B
ポイント72点なら下限70の行が選ばれ、評価はBです。72という値そのものが表にない場合も、近似一致で判定できます。XLOOKUPはMicrosoft 365・Excel 2024・2021で使用できます。
得点以下で最も近い基準の評価を求める(XLOOKUPの一致モード)式 =XLOOKUP(B2,D3:D6,F3:F6,"---",-1) の解説図。B3に入力する
B3に =XLOOKUP(B2,D3:D6,F3:F6,"—",-1) を入力。72 と同じ基準はないので 72 以下で最も近い 70 の行 → 評価 B

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

XLOOKUP の基本(書き方・一致モード・下から検索・VLOOKUP との違い)は、XLOOKUP関数の使い方にまとめています。

境界値で動きを確認する

B2の得点結果
-1対象外
0F
59F
60C
69C
70B
79B
80A
101A
注意この数式には上限100の条件がありません。101点も最後の区分であるAになります。0~100点だけを許可するなら、入力値を別に検査します。
B4に入力:入力チェックを付けて、範囲外の得点を止める
数式=IF(B2="","",IF(NOT(ISNUMBER(B2)),"数値を入力",IF(OR(B2<0,B2>100),"0~100で入力",XLOOKUP(B2,D3:D6,F3:F6,"対象外",-1))))
ひとことで未入力・数値以外・範囲外を先に止めて、問題がないときだけ検索する
B2=""
未入力かどうかを調べます。空欄をXLOOKUPに渡すと、最後の区分(A)が返ってしまいます
NOT(ISNUMBER(B2))
数値以外(文字列の「72」など)を止めます
OR(B2<0,B2>100)
0未満・100超を止めます。XLOOKUP自体には上限100の条件が無いためです
XLOOKUP(B2,D3:D6,F3:F6,"対象外",-1)
すべての確認を通った得点だけ、評価を探します
補足点数を整数に限定する場合は、セルのデータの入力規則も、整数0~100に設定します。
ポイント点数を整数に限定する場合は、セルのデータの入力規則も整数0~100に設定します。文字列の「72」と数値の72が混ざらないようにしてください。
練習用Excelファイル(無料ダウンロード)
B2の得点を59・60・70・80などに変えて、評価が切り替わる境界を確認できます。「入力前」シートでは、自分で式を入力する練習もできます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

一致モード -1 と 1 の違い

一致モード一致しないときに選ぶ値表に入れる境界
-1入力値より小さい側で最も近い値区分の下限
1入力値より大きい側で最も近い値区分の上限

例えば送料を「1kg以下」「1kg超2kg以下」「2kg超5kg以下」に分けるなら、上限1・2・5と送料を対応させて一致モード1を使えます。検索範囲をH3:H5、送料をI3:I5、重量をE2に置く場合です。

F2に入力:上限値の表で範囲検索する(一致モード 1)
数式=XLOOKUP(E2,H3:H5,I3:I5,"対象外",1)
ひとことで重量以上で、いちばん近い上限を探し、その送料を返す
E2
検索値です。送料を調べたい重量です
H3:H5
探す範囲です。各区分の「上限値」(1kg・2kg・5kg)を並べた列です
I3:I5
返す範囲です。上限ごとの送料です
"対象外"
最大の上限より重いときに表示する文字です
1
一致モード 1 は「同じ値が無ければ、入力値以上で最も近い値」を選ぶ指定です。-1 とは向きが逆です
データの流れ
① 上限値の一覧から、1.5kg以上でいちばん近い値を探す
H31H42H55
▼
② 同じ行の送料を返す結果
F2700
注意上限値だけの表では、0以下の重量も最初の区分に入ります。重量は正の数という入力条件を別途設定します。下限の表をそのまま一致モード1に変えても、意図した送料表にはなりません。

並べ替えが必要なのはどの指定か

ポイントXLOOKUPの通常の検索では、一致モード -1 や1を指定しただけで昇順・降順が必須になるわけではありません。ただし境界値の漏れや重複を確認しやすいよう、小さい順に管理するのがおすすめです。
注意第6引数の検索モードに2を指定するバイナリ検索は昇順、-2は降順が必要です。第5引数の「一致モード」と、第6引数の「検索モード」を混同しないでください。この記事の数式では第6引数を省略しています。

VLOOKUPで求める場合

D3:F6の先頭列Dが下限、3列目Fが評価なら、次の式でも求められます。

B5に入力:VLOOKUPで範囲検索する(Excel 2019・2016でも可)
数式=IFNA(VLOOKUP(B2,D3:F6,3,TRUE),"対象外")
ひとことで表の先頭列から近い下限を探し、3列目の評価を返す
B2
検索値です。評価を調べたい得点です
D3:F6
探す範囲です。先頭列(D)が下限値、3列目(F)が評価です
3
範囲の左から3列目(評価)を返します
TRUE
近似一致の指定です。先頭列は昇順に並べておきます
"対象外"
最小の下限にも届かないとき(#N/A)の表示です
データの流れ
① 先頭列から、72以下でいちばん近い下限を探す
D570
▼
② 3列目の評価を返す結果
B5B
ポイントVLOOKUPのTRUEによる近似一致では、先頭列を昇順に並べる必要があります。Excel 2019・2016でも使える方法です。VLOOKUPにも範囲検索はできるので、既存の表の形とExcelのバージョンで選んでください。
練習用Excelファイル(無料ダウンロード)
得点を、表にない値や境界の値に変えて、評価とエラーの出方も試せます。XLOOKUP対応のMicrosoft 365・Excel 2024・2021で開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

【実機で検証】エラーが出ないまま違う区分になる場面

下限が 0・60・70・80 の表で、入力が文字や空のときと、計算結果を探すときの動きを Excel の実機で試しました。

エクセルのXLOOKUP一致モード-1で文字や空のセルが最上位の区分になり計算結果の境界がずれる画面
エクセルのXLOOKUP一致モード-1で文字や空のセルが最上位の区分になり計算結果の境界がずれる画面
入力XLOOKUP(-1)XLOOKUP(1)VLOOKUP(TRUE)
文字の「70」Aなし#N/A
文字の「欠席」Aなし#N/A
空のセルAなしD

一致モード -1 では、文字や空のセルでもエラーにならず、最上位の A が返りました。入力チェックが必要なのはこのためです。

計算結果は境界でずれることがある

1-0.9 の結果を 0・0.1・0.2 の表で探すと、0.1 の区分ではなく 0 の区分が返りました。=(1-0.9)=0.1 は TRUE なのに、検索では 0.1 より小さい値として扱われます。ROUND(1-0.9,1) で丸めてから探すと、0.1 の区分が返りました。計算結果で検索するときは、丸めておきます。

並びが崩れた表で比べる

点数XLOOKUP(-1)XLOOKUP(-1・二分探索)VLOOKUP(TRUE)
65C(正しい)DD
75B(正しい)DD
85A(正しい)CC

下限の列を 70・0・80・60 の順にした表です。第6引数を省略した XLOOKUP は正しい区分を返し、二分探索と VLOOKUP の TRUE は違う区分をエラーなしで返しました。

XLOOKUPの範囲検索がうまくいかない・エラーになるときの確認表

症状主な原因確認と対処
評価が1つずれる下限の表を一致モード 1 にしている/「以上」と「未満」の区切りが逆下限値の表は -1、上限値の表は 1 にする。境界値(60点・70点など)で確かめる
空欄や文字なのに、最後の評価(A)が出る入力が数値ではないIFで、未入力と数値以外を先に止める
100点を超えてもAになるXLOOKUPには上限の条件が無い入力規則や IF で、0~100に制限する
「対象外」が出る表の最小の下限より小さい値を入力している下限の最小値を 0 にして、表を確認する
#NAME? になるXLOOKUPが使えないExcel(2019・2016)で開いているVLOOKUP(TRUE)の近似一致を使う

日付の期間検索にも使える

ポイント下限値の代わりに料金の「適用開始日」を並べれば、指定日の料金を検索できます。終了日や休業期間がある場合の扱いは日付・期間のXLOOKUP検索で解説しています。未一致時の表示は空白・0・該当なしの使い分けも参照してください。
練習用Excelファイル(無料ダウンロード)
B2の得点を59・60・70・80などに変更して評価を確認できます。Microsoft 365・Excel 2024・2021向けです。ボタンをクリック/タップして保存し、Excelで開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

仕様の確認:Microsoft公式・XLOOKUP関数

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次