値の検索
メニューを表示するにはスワイプしてください
検索関数は、スプレッドシート作業で最も一般的な問題の1つを解決します。つまり、ある場所にあるデータから、対応する値に基づいて別の場所の関連情報を取得する必要がある場合です。
関数に検索する値、検索範囲、見つかった場合に返す内容を指定します。Excelは、すべての行、データが変更されるたびに自動的に検索を行います。
=XLOOKUP(lookup_value; lookup_array; return_array; [if_not_found])
完全一致
完全一致は、検索値が参照テーブル内の値と完全に一致する必要があります。これはXLOOKUPのデフォルト動作です。
近似一致
近似一致は、検索値を超えない範囲で最も近い値を見つけます。税率表や割引閾値などの階層システムで使用されます。
この動作はmatch_modeに依存します。上記の説明はmatch_mode = -1の場合のみ正確であり、この場合、完全一致が見つからない場合は次に小さい値が返されます。他のmatch_mode設定では、異なる一致ルールが適用されます。
XLOOKUP では、近似一致は match_mode 引数(if_not_found の後の 4 番目のオプション引数)で制御されます。これを -1 に設定すると、Excel は「完全一致が見つからない場合、次に小さい値を返す」ように動作します。
=XLOOKUP(lookup_value; lookup_array; return_array; [if_not_found]; -1)
0 | -1 | 1 | 2 |
|---|---|---|---|
Exact match | Next smaller | Next larger | Wildcard |
Default. Returns error if value not found exactly. Use for text categories. | If no exact match, returns result for the largest value ≤ lookup value. Use for tiered systems. | If no exact match, returns result for the smallest value ≥ lookup value. | Allows * and ? as wildcards in the lookup value for partial text matching. |
近似一致を使用する場合、検索配列は昇順で並べ替えられている必要があります。未整列のテーブルでは誤った結果が静かに返されます。
VLOOKUP
VLOOKUPは今でも何百万ものスプレッドシートで使用されており、頻繁に目にします。その主な制約は構造上のもので、検索値は常にテーブル配列の最初の列に配置する必要があり、返される値は列番号で指定します。検索列と返却列の間に列を挿入すると、その列番号がずれてしまい、VLOOKUPは警告なしに誤ったデータを返します。XLOOKUPは返却列を直接参照するため、この問題が発生しません。
=VLOOKUP(search_key; range; index; [is_sorted])
VLOOKUPは現在も動作しており、引き継いだファイルで見かけることがあります。内容を読み取れるようにしておく必要があります。ただし、自分で新しく数式を書く場合はXLOOKUPを使用してください。より堅牢で可読性が高く、近似一致も明確に扱えます。
- カテゴリごとの月間予算の取得
サマリーセクションの下に、CategoryとMonthly Budgetの列を持つ参照テーブルを作成します。
次の値を入力します:
- Rent — 1,500.00
- Groceries — 400.00
- Utilities — 250.00
- Transport — 200.00
- Dining — 150.00
これらの値を通貨形式で表示します。
Expensesテーブルで、各行の予算を取得するには次の式を使用します:
=XLOOKUP(B9;I12:I20;J12:J20)
各カテゴリに対応する予算が返されます。
- カテゴリが見つからない場合の対応
カテゴリが見つからない場合にエラーを回避するため、数式を次のように更新します:
=XLOOKUP(B9;I12:I20;J12:J20;"No budget defined")
シートの可読性を保ち、未対応のマッピングを明確にします。
- 検索テーブルの範囲を固定
数式をコピーしても範囲がずれないよう、F4で検索範囲を固定します。
- 割引階層の近似一致を適用
Spending thresholdsとDiscount valuesの列を持つ新しいテーブルを作成します。
次の値を入力します:
- 0 — 0
- 500 — 5
- 1000 — 10
- 2000 — 20
割引値はパーセンテージ形式で表示します。
各支出の割引階層を次の式で計算します:
=XLOOKUP(D9;12:M16;N12:N16;"No tier";-1)
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください