[Excel 2021以降]
Excel 2021の新関数である XLOOKUP(エックス・ルックアップ)関数で、近似一致検索の表引きを行う方法を紹介します。
XLOOKUP関数の基本的な使い方や完全一致検索については、下記のページを参照してください。
XLOOKUP関数 ● さまざまな条件を指定してデータを取り出す (1)完全一致検索の場合
目次
書式
さまざまな条件を指定してデータを取り出す
=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからない場合],[一致モード], [検索モード])
[検索範囲]から[検索値]を探し、見つかった場合は[戻り値範囲]の該当する位置から値を返します。見つからなかった場合は、[見つからない場合]を返します。[一致モード]で一致の判断基準、[検索モード]で検索の方向を指定できます。
■引数
引数 | 説明 |
---|---|
検索値 | 検索する値を指定する。全角文字と半角文字、アルファベットの大文字と小文字は区別されず同じ文字と見なされる。 |
検索範囲 | [検索値]を検索する。1列または 1行の範囲を指定する。 |
戻り値範囲 | 値を取り出す範囲を指定する。[検索範囲]が 1列の場合は同じ行数、1行の場合は同じ列数の範囲を指定すること。 |
見つからない場合 | [検索範囲]の中に[検索値]が見つからない場合に返す値を指定する。省略した場合は、エラー値「#N/A」が返される。 |
一致モード | 検索の際に「一致」と判断する基準を 表A の数値で指定する。省略した場合は、完全一致で検索される。 |
検索モード | 検索する方向を 表B の数値で指定する。省略した場合は、先頭から末尾に向かって検索される。 |
■表A 引数[一致モード]の設定値
設定値 | 説明 |
---|---|
0 または省略 | 完全一致 |
-1 | 完全一致または次に小さい項目 |
1 | 完全一致または次に大きい項目 |
2 | ワイルドカード文字との一致 |
■表B 引数[検索モード]の設定値
設定値 | 説明 |
---|---|
1 または省略 | 先頭から末尾へ検索 |
-1 | 末尾から先頭へ検索 |
2 | バイナリ検索([検索範囲]が昇順の場合) |
-2 | バイナリ検索([検索範囲]が降順の場合) |
使用例1…「○点以上は評価X」形式の表から成績を求める
XLOOKUP関数の5番目の引数[一致モード]に「-1」を指定すると、「○以上△未満」の範囲から表引きを行えます。表引き用の表には、「○以上」にあたるデータを並べた列を用意します。
図1では、得点に対応する評価を評価判定表から表引きしています。評価判定表には「0 ~ 59」「60 ~ 69」「70 ~ 79」……と、得点の範囲が入力されていますが、XLOOKUP関数で使用するのは「○以上」にあたる「0」「60」「70」……の列だけです。「~ 59」などの列は使用しないので、入力しなくてもかまいません。
先頭のセルC3の場合、[検索値]に「100」点のセルB3、[検索範囲]に「○以上」が入力されたセルE3~E7、[戻り値範囲]に評価が入力されたセルH3~H7を指定します。数式をコピーしたときにずれないように、[検索範囲]と[戻り値範囲]は絶対参照で指定します。あとは、[見つからない場合]に「"---"」を指定し、[一致モード]に「-1」を指定すればOKです。
=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからない場合],[一致モード], [検索モード])
セルC3 | =XLOOKUP(B3,$E$3:$E$7,$H$3:$H$7,"---",-1)
ちなみに、図1では[検索範囲]が昇順(小さい順)に並べられていますが、XLOOKUP関数では昇順でない表でも表引きできます。詳しくは、次項で解説します。
メモ
メモ
検索範囲は昇順でなくてもOK、左端でなくてもOK
繰り返しになりますが、XLOOKUP関数では[検索範囲]が昇順に並んでいなくてもかまいません。降順でもOKですし、バラバラの順序でもOKです。図2では、降順に並べ替えた評価判定表から表引きしています。数式も結果も 図1 と同じです。
また、XLOOKUP関数では[検索範囲]が[戻り値範囲]の左右どちらにあってもかまいません。図3では、得点欄と評価欄を入れ替えた評価判定表から表引きしています。結果は 図1 と同じです。
セルC3 | =XLOOKUP(B3,$F$3:$F$7,$E$3:$E$7,"---",-1)
ちなみに、VLOOKUP関数では 図2 や 図3 のような表から表引きできません。
メモ
使用例2…「△点までは評価X」形式の表から成績を求める
引数[一致モード]に「1」を指定すると、「○超△以下」の範囲から表引きを行えます。表引き用の表には、「△以下」にあたるデータを並べた列を用意します。
図4では、[一致モード]に「1」を指定した表引きを行っています。[検索範囲]に指定するのは「△以下」にあたる数値が入力されたセルG3~G7です。「90 ~」などの列は使用しないので、入力しなくてもかまいません。
=XLOOKUP(検索値, 検索範囲, 戻り値範囲, [見つからない場合],[一致モード], [検索モード])
セルC3 | =XLOOKUP(B3,$G$3:$G$7,$H$3:$H$7,"---",1)
メモ
[検索値]に想定外の値を指定した場合の挙動
「0以上100以下」の整数という想定内の得点で検索を行った 図1 ~ 図4 の結果はすべて同じで期待通りの戻り値でした。しかし、[検索値]に負数や文字列など、想定外の値を指定した場合、図5 のように異なる結果になるので注意してください。