〜VLOOKUPはもう卒業!データ分析が10倍ラクになる新定番関数〜
はじめに
ECサイトの分析では、商品マスタから価格を引っ張ってきたり、注文データに顧客情報を紐付けたりと、「あるデータを別の表から探してくる」作業が日常的に発生します。
これまで多くの方がVLOOKUPを使ってきたと思いますが、2019年以降のExcelではXLOOKUPという後継関数が使えます。これを使いこなすと、分析作業のスピードと正確さが格段に上がります。
1. XLOOKUPとは?
XLOOKUPは、指定した値を表から検索し、対応するデータを返す関数です。VLOOKUPの弱点をすべて克服した「進化版」と考えてください。
基本構文
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 検索値 | 必須 | 探したい値(例:商品ID、注文番号) |
| 検索範囲 | 必須 | どの列から探すか |
| 戻り範囲 | 必須 | 何を返すか(複数列も可) |
| 見つからない場合 | 任意 | エラー時の代替テキスト(例:”該当なし”) |
| 一致モード | 任意 | 完全一致・近似一致など |
| 検索モード | 任意 | 上から・下から・バイナリ検索など |
2. VLOOKUPとの違い(なぜXLOOKUPが優れているか)
VLOOKUPの3大弱点とXLOOKUPの解決策
| 課題 | VLOOKUP | XLOOKUP |
|---|---|---|
| 列の追加・削除 | 列番号がズレてエラーになる | 範囲指定なので影響なし ✅ |
| 左方向の検索 | できない ❌ | できる ✅ |
| エラー処理 | IFERRORを別途組む必要がある | 引数で直接指定できる ✅ |
3. EC分析での活用シーン(実践例)
ケース①:注文データに商品名・価格を紐付ける
状況: 注文テーブルに商品IDしかなく、商品マスタから名称と単価を引きたい
商品マスタ(Sheet2)
| 商品ID | 商品名 | 単価 |
|---|---|---|
| P001 | ワイヤレスイヤホン | 8,980 |
| P002 | スマホケース | 1,280 |
| P003 | 充電ケーブル | 980 |
注文テーブル(Sheet1)
| 注文ID | 商品ID | 商品名 | 単価 |
|---|---|---|---|
| ORD-001 | P002 | ← ここに数式 | ← ここに数式 |
数式(商品名を取得):
excel
=XLOOKUP(B2, Sheet2!A:A, Sheet2!B:B, "該当なし")
数式(商品名・単価を一度に取得):
excel
=XLOOKUP(B2, Sheet2!A:A, Sheet2!B:C, "該当なし")
ポイント: 戻り範囲をB:Cと複数列にすると、商品名と単価を一度に取得できます。VLOOKUPでは2回書く必要がありましたが、XLOOKUPなら1つの数式でOKです。
ケース②:顧客ランクを左の列から参照する
状況: 顧客マスタで、会員IDより「左」にある顧客ランクを取得したい
顧客マスタ
| 顧客ランク | 会員ID | 氏名 |
|---|---|---|
| ゴールド | C001 | 田中 太郎 |
| シルバー | C002 | 鈴木 花子 |
| ブロンズ | C003 | 佐藤 一郎 |
数式(会員IDでランクを検索):
excel
=XLOOKUP(A2, 顧客マスタ!B:B, 顧客マスタ!A:A, "不明")
ポイント: VLOOKUPは「検索列より右」のデータしか取れませんでしたが、XLOOKUPは左方向にも検索できます。テーブル設計の自由度が大幅に上がります。
ケース③:エラー処理を組み込む
状況: 廃盤商品や新規SKUなど、マスタに存在しない商品IDが混在しているケース
excel
=XLOOKUP(B2, 商品マスタ!A:A, 商品マスタ!B:B, "マスタ未登録")
ポイント: 第4引数に文字列を入れるだけでエラー処理完了。VLOOKUPのように
=IFERROR(VLOOKUP(...),"マスタ未登録")と二重にネストする必要がなく、数式がスッキリします。
ケース④:直近の取引データを取得する(逆方向検索)
状況: 同じ顧客が複数回購入しており、最新の購入日を取得したい
購入履歴テーブル(時系列順で上から古い順)
| 購入日 | 顧客ID | 購入金額 |
|---|---|---|
| 2024/01/05 | C001 | 3,200 |
| 2024/03/12 | C001 | 8,500 |
| 2024/06/20 | C001 | 1,980 |
数式(最新の購入日を取得):
excel
=XLOOKUP(D2, B:B, A:A, "購入なし", 0, -1)
ポイント: 第6引数を
-1にすると**下から(=新しい順)**検索します。「最後に買った日」「直近の注文金額」などRFM分析でよく使うデータが簡単に取れます。
ケース⑤:売上ランクに応じた手数料率を適用する
状況: 月次売上に応じた手数料率を、段階的なレートテーブルから引きたい
手数料テーブル
| 売上下限 | 手数料率 |
|---|---|
| 0 | 10% |
| 100,000 | 8% |
| 500,000 | 6% |
| 1,000,000 | 5% |
数式:
excel
=XLOOKUP(B2, 手数料テーブル!A:A, 手数料テーブル!B:B, , 1)
ポイント: 第5引数を
1にすると**近似一致(以上で最も近い値)**で検索します。売上規模に応じた料率適用など、段階的な計算に便利です。
4. よく使う引数の早見表
一致モード(第5引数)
| 値 | 意味 | 使う場面 |
|---|---|---|
0(省略可) | 完全一致 | 商品ID、注文番号など |
-1 | 完全一致 or 次に小さい値 | 「以下」の段階区分 |
1 | 完全一致 or 次に大きい値 | 「以上」の段階区分(手数料など) |
検索モード(第6引数)
| 値 | 意味 | 使う場面 |
|---|---|---|
1(省略可) | 上から順に検索 | 通常の検索 |
-1 | 下から逆順に検索 | 最新データを取得したいとき |
5. まとめ:XLOOKUPをEC分析に使うメリット
- 列の追加・削除に強い → マスタのメンテナンスが楽になる
- 左方向検索ができる → テーブル設計の自由度UP
- エラー処理が1行で書ける → 数式がシンプルに
- 複数列を一度に返せる → 関数の記述量が減る
- 逆方向検索で最新データが取れる → 購買履歴分析に最適
XLOOKUPはExcel 365・Excel 2019以降で使用可能です。まだVLOOKUPを使っている方は、ぜひ次の分析から試してみてください。


コメント