更新日:、 作成日:

エクセル LOOKUP 関数:検索する値に近い値を取得する

はじめに

エクセルの LOOKUP 関数の使い方を紹介します。

LOOKUP 関数は検索する値に最も近い値を取得します。それ以上の最も近い値を検索できるようにした上位互換の「XLOOKUP 関数」があります。

=INDEX(100,A1:A3) のようにして、列「A」から 100 以下の最大値を取得できます。

=INDEX(100,A1:A3,B1:B3) のようにして、列「A」から 100 以下の最大値を検索して対応する値を列「B」から取得できます。

=INDEX(100,A1:C1) のようにして、行「1」から 100 以下の最大値を取得できます。

80 点以上なら A60 点以上なら B のように評価を付けられます。

セルを検索する方法は「文字列やセルを検索する」をご覧ください。

LOOKUP 関数の引数

LOOKUP(検索値, 検索範囲)
検索範囲の中から検索値と 1 番近い値を取得します。

LOOKUP(検索値, 検索範囲, 結果範囲)
検索範囲の中から検索値と 1 番近い値に対応する値を結果範囲から取得します。

引数「検索値」検索する値を、数値、文字列、セル参照、関数などで指定します。スピル化
引数「検索範囲」検索されるセルの範囲を 1 行または 1 列で指定します。
検索する値と同じまたは、それ以下の最大値と一致します。昇順に並べられている必要があります。
引数「結果範囲」省略できます。省略すると引数「検索範囲」が結果範囲になります。
引数「検索範囲」で見つかった位置と対応する位置の値を返します。

スピル化:セルの範囲や配列を指定すると結果が「スピル」します。

使い方

LOOKUP 関数の使い方を紹介します。

1 列から値が基準値以下の最大値を取得する

検索値が 40 のとき、値が 40 以下の最大値を取得します。検索値と最も近い値と一致します。「VLOOKUP 関数」でも同じように検索できます。

=LOOKUP(B8,$B$3:$B$5)
=VLOOKUP(B9,$B$3:$B$5,1,TRUE)

日付ならその日以前の一番近い日付になります。

引数「検索範囲」が昇順に並べ替えられている必要があります。

17

値が基準値以下の最大値に対応する名前を取得する

検索値が 40 のとき、値が 40 以下の最大値に対応する名前を取得します。

=LOOKUP(B8,$B$3:$B$5,$C$3:$C$5)
=VLOOKUP(B9,$B$3:$C$5,2,TRUE)

引数「検索範囲」が昇順に並べ替えられている必要があります。

18

1 行から値が基準値以下の最大値を取得する

検索値が 40 のとき、値が 40 以下の最大値を取得します。検索値と最も近い値と一致します。「HLOOKUP 関数」でも同じように検索できます。

=LOOKUP(B5,$C$2:$E$2)
=HLOOKUP(B6,$C$2:$E$2,1,TRUE)

日付ならその日以前の一番近い日付になります。

引数「検索範囲」が昇順に並べ替えられている必要があります。

19

点数に評価を付ける

80 点以上なら A60 点以上なら B、それ以下は C にします。

=LOOKUP(B8,$B$3:$B$5,$C$3:$C$5)
20

解説

それ以上の最も近い値を検索できるようにした上位互換である「XLOOKUP 関数」があります。通常はそちらを使用します。

引数「検索範囲」に 1 行または 1 列だけ指定します。

引数「検索値」が引数「検索範囲」から見つからないときはエラー #N/A になります。

引数「検索範囲」が 1 列なら、引数「結果範囲」も 1 列にします。行数を合わせる必要はありませんが、一致する値を取得するには合わせます。

引数「検索範囲」が 1 列のとき、引数「結果範囲」と列数が合っていないときはエラー #N/A になります。

引数「検索範囲」が 1 行なら、引数「結果範囲」も 1 行にします。列数を合わせる必要はありませんが、一致する値を取得するには合わせます。

引数「検索範囲」が 1 行のとき、引数「結果範囲」と行数が合っていないときはエラー #N/A になります。

引数「検索範囲」が昇順に並べ替えられている必要があります。そうでないときは正しい結果を取得できません。

例えば、引数「検索値」が 2 なら、次の画像では 1, 10, 2, 20 の順で検索します。検索値より大きい値が見つかった時点で、それ以降の値は検索しません。昇順のときにそれ以降に一致する値はないからです。10 と比較したとき 2 より大きいのでこれ以降の値は検索されません。結果を 10 の 1 つ前から取得します。

=LOOKUP(B8,$B$2:$B$5)
14