Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 実際のルックアップ問題の解決 | 高度なルックアップシステムとリレーショナルモデリング
エクセル数式

実際のルックアップ問題の解決

メニューを表示するにはスワイプしてください

厳密一致はリレーショナルモデルに有用ですが、多くのビジネスシステムでは固定値ではなく範囲や閾値に基づいています。本章では、近似一致を利用して階層別価格設定ロジックや動的割引計算を構築します。

XLOOKUPによる近似一致

=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], -1)
  • lookup_value: 評価対象の値
  • lookup_array: 閾値となる値
  • return_array: 返される結果
  • -1: 検索値以下で最大の値を返す

近似一致を行う場合、検索配列は昇順に並べる必要があります。

階層別ロジック

階層テーブルは厳密一致ではなく最小閾値を定義します。

例:

Min_UnitsDiscount_Rate
10%
55%
1010%
2015%

ExcelはUnits値がどの閾値構造に該当するかを判定し、対応する割引率を返します。

ステップ1 階層別価格テーブルの作成
expand arrow

新しいワークシートを作成し、名前を次のように設定します:

Pricing_Tiers

次のデータセットを追加します:

Min_Units;Discount_Rate
1;0%
5;5%
10;10%
20;15%

このデータセットをExcelテーブルに変換します。

Min_Unitsが昇順に並んでいることを確認します。

ステップ2 割引率の検索式作成
expand arrow

Sales_Data内で新しい列を作成し、名前を次のように設定します:

Discount_Rate

最初の行に次の式を入力します:

=XLOOKUP([@Units],Pricing_Tiers[Min_Units],Pricing_Tiers[Discount_Rate],0,-1)
  • [@Units]: 現在行のUnits値
  • Pricing_Tiers[Min_Units]: 閾値列
  • Pricing_Tiers[Discount_Rate]: 返される割引値
  • 0: フォールバック値
  • -1: 近似一致モード

結果をパーセンテージ形式で表示します。

ステップ3 割引後売上の計算
expand arrow

新しい列を作成し、名前を次のように設定します:

Discounted_Revenue

最初の行に次の式を入力します:

=[@Revenue]*(1-[@Discount_Rate])
  • [@Revenue]: 元のRevenue値
  • [@Discount_Rate]: 適用される割引率

この計算により、ユニット数に応じて動的に調整されます。

ステップ4 階層の動的更新テスト
expand arrow

Pricing_Tiers内の値を変更します。

すべての関連計算が自動的に更新されることを確認します。

ステップ5 トップ製品ロジックの更新
expand arrow

以前のトップ製品の式を次のものに置き換えます:

=XLOOKUP(MAX(Sales_Data[Discounted_Revenue]),Sales_Data[Discounted_Revenue],Sales_Data[Product],"Not found")

検索は生売上ではなく割引後のパフォーマンスを評価します。

ステップ6 逆引きセクションの作成
expand arrow

Summaryシート内で、次の入力セクションを作成します:

Order_ID
ステップ7 顧客情報の取得
expand arrow

検索結果セルに次の式を入力します:

=XLOOKUP(M2,Sales_Data[Order_ID],Sales_Data[Customer_ID],"Not found")
  • M2: Order_ID入力
  • Sales_Data[Order_ID]: 検索列
  • Sales_Data[Customer_ID]: 返される値
ステップ8 製品情報の取得
expand arrow

別の結果セルに次の式を入力します:

=XLOOKUP(M2,Sales_Data[Order_ID],Sales_Data[Product],"Not found")

これらの式により、選択したOrder_IDから取引詳細を動的に取得できます。

ステップ9 動的検索のテスト
expand arrow

M2内の値を変更します。

以下を確認します:

  • 顧客値が自動的に更新される
  • 製品値が自動的に更新される
  • 式が常に一致する取引を返す

1. match_mode = -1における XLOOKUP の動作は何ですか?

2. 近似一致検索を使用する場合、なぜ検索配列を並べ替える必要があるのか?

3. XLOOKUP が逆引き検索に適している理由は何か?

question mark

match_mode = -1における XLOOKUP の動作は何ですか?

正しい答えを選んでください

question mark

近似一致検索を使用する場合、なぜ検索配列を並べ替える必要があるのか?

正しい答えを選んでください

question mark

XLOOKUP が逆引き検索に適している理由は何か?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt