フリーランスの請求・顧客管理に使えるXLOOKUPは、3つの必須引数を覚えるだけで即日実務に導入できます。VLOOKUPより左方向検索やエラー対策が柔軟で、見つからない場合の処理も1引数で完結します。この記事では基本構文から複数条件・エラー対処まで解説します。

目次

この記事でわかること

この記事を読むと、XLOOKUPの必須3引数だけで今日から実務に導入できること、VLOOKUPとの3つの具体的な差、そして複数条件検索を最短5分で動かす補助列方式がわかります。

この記事の結論

XLOOKUPは「検索値・検索範囲・戻り配列」の3引数で動き、VLOOKUPのような列番号指定が不要です。左方向の検索も自然に書けるため、既存の表構造を変えずに参照先を自由に選べます。フリーランスの請求管理や顧客管理表に今日から組み込める実用性が最大の強みです。

今日やるべき1つ

手持ちの管理表でセルに =XLOOKUP(検索値,検索範囲,戻り配列,”該当なし”) と入力し、第4引数に “該当なし” を加えて動作確認する(5分)

状況別ショートカット

状況読むべきセクション所要時間
基本構文をまず押さえたいXLOOKUPの基本構文は6引数で完結3分
VLOOKUPからの乗り換えを検討中VLOOKUPとXLOOKUPは3点で差がある3分
自分の用途に合うか診断したいXLOOKUP向き・不向きを3分で診断3分
エラーが出て困っているXLOOKUPエラーは4原因で解決4分
複数条件で検索したいXLOOKUP複数条件は5つの仕組みで対応5分

XLOOKUPの基本構文は6引数で完結

XLOOKUPは引数が6つあっても、必須は最初の3つだけです。残り3つは必要に応じて追加する形で問題なく、覚えるコストは実際には低い関数です。

必須3引数は「何を・どこで・何を返すか」で整理

XLOOKUPの基本構文は以下のとおりです。

=XLOOKUP(検索値, 検索範囲, 戻り配列, [見つからない場合], [一致モード], [検索モード])

第1引数「検索値」は探したいデータそのもの(例:請求書番号 “INV-001″)、第2引数「検索範囲」は検索値を探す列や行(例:A列全体)、第3引数「戻り配列」は結果として返したい列や行(例:B列)です。この3つを決めれば最小限の式が完成します。VLOOKUPのように「何列目」という数値を数える必要がなく、範囲を直接指定するだけで参照先を特定できます。なお、売掛金管理エクセルは5つの関数で自動化の記事では、VLOOKUPを使った管理表の自動化手法も解説しているので、移行前の比較としても参考にできます。

任意3引数は「エラー対策・一致精度・方向」で使い分け

第4引数「見つからない場合」には “該当なし” や “未登録” のような文字列を入れると、#N/A エラーの代わりに指定したテキストが表示されます(Microsoft Support「XLOOKUP 関数」)。第5引数「一致モード」は 0(完全一致)がデフォルトで、近似一致が必要な場合のみ -1(以下の最大値)や 1(以上の最小値)を指定します。第6引数「検索モード」は 1(先頭から検索)がデフォルトで、末尾から逆順に探したいときに -1 を使います。フリーランスの日常的な管理業務では、完全一致と見つからない場合の指定だけで大半の用途が賄えます。

入力例:請求書番号から取引先名を返す

=XLOOKUP(F2, A:A, B:B, “該当なし”)

F2 に入力した請求書番号を A 列から探し、対応する B 列の取引先名を返します。第4引数に “該当なし” を入れることで、番号が存在しない場合でも式がエラーを返さず、表が見やすいまま保たれます。実務では検索値にセル参照(F2 のような形)を使うことで、請求書番号を変えるだけで取引先名・単価・振込先を一括で引き直せます。個人事業主の見積書の書き方とあわせて、請求書番号の管理ルールを整理しておくと運用がさらにスムーズになります。

引数ごとの役割一覧

引数必須/任意役割実務での典型値
検索値必須探すデータセル参照(F2 など)
検索範囲必須検索対象の列・行列全体(A:A など)
戻り配列必須返したいデータの列・行列全体(B:B など)
見つからない場合任意一致なし時の表示“該当なし”
一致モード任意完全・近似の制御0(完全一致)
検索モード任意検索方向の制御1(先頭から)

CHECK

▶ 今すぐやること: 手持ちの管理表でセルに =XLOOKUP(F2,A:A,B:B,”該当なし”) を入力し、第4引数まで含めて動作確認する(5分)

Q: XLOOKUPはどのバージョンのExcelで使えますか?

A: Microsoft 365サブスクリプション)とExcel 2021以降で利用できます。Excel 2019以前では使用できないため、バージョンを確認してから導入を検討してください(Microsoft Support「XLOOKUP 関数」)。

Q: 検索範囲と戻り配列の行数が違うとどうなりますか?

A: 行数が一致しない場合は #VALUE! エラーが返されます。両方の範囲が同じ行数になるよう選択し直すことで解決できます。

要点整理

本セクションの内容を3点でまとめます。必須引数は「検索値・検索範囲・戻り配列」の3つで動作する。第4引数に “該当なし” を加えるだけで #N/A エラーを排除できる。列番号を数値で指定しないため、列の追加・削除後も式の修正が不要である。

VLOOKUPとXLOOKUPは3点で差がある

VLOOKUPで特定の操作をしたとき、実務で使えない場面が確実に存在します。切り替え時期の判断材料として3点の差を整理します。

差①:左方向の参照ができるかどうか

VLOOKUPは検索列が戻り列より必ず左側になければならず、表の構造を変えないと対応できないケースがあります。XLOOKUPは検索範囲と戻り配列を完全に独立して指定できるため、検索列の右にある列でも左にある列でも同じ書き方で参照できます(NTT西日本 Biz Clip「新関数『XLOOKUP』を一番分かりやすい例で学ぶ」)。顧客IDが右端にある既存表を変えずに使いたい場面では、XLOOKUPへの切り替えだけで解決できます。

差②:エラー処理の記述量が変わる

VLOOKUPでエラーを非表示にするには =IFERROR(VLOOKUP(…),”該当なし”) と関数を入れ子にする必要があります。XLOOKUPは第4引数一つで同じ処理が完結し、式全体が短くなります。式が短いほどメンテナンス時の確認コストが下がるため、管理表を共有や更新するフリーランスの場面では差が出やすいです。COUNTIF複数条件の使い方も合わせて習得しておくと、条件集計との組み合わせ管理が一段と効率化します。

差③:列番号指定の有無

VLOOKUPは戻り列を「左から何列目」という数値で指定します。列を追加・削除するたびに数値を修正しないと参照がずれる問題が起きます。XLOOKUPは列を範囲で直接指定するため、列を追加・削除しても式を修正する必要がありません。100行を超える顧客管理表の列構成を変えた際、VLOOKUPを使った式を複数箇所修正する必要が生じても、XLOOKUPに置き換えていた式は修正不要というケースも報告されています。

比較項目VLOOKUPXLOOKUP向いているケース
左方向検索不可可能検索列が右端にある既存表
エラー処理IFERRORが必要第4引数で完結管理表を共有・引き継ぐとき
列追加時の式修正必要不要列数が変動するプロジェクト管理
対応バージョンExcel 2003以降Excel 2021/M365以降古いExcel環境が混在する場合はVLOOKUP

CHECK

▶ 今すぐやること: VLOOKUPを使っている既存シートの式を1つ選び、同じ検索をXLOOKUPで書き直して結果が一致するか確認する(10分)

Q: XLOOKUPに書き換えた後でVLOOKUPが必要になる場面はありますか?

A: Excel 2019以前のバージョンを使う相手にファイルを送る場合、XLOOKUPは動作しません。共有先のExcelバージョンが不明な場合は、VLOOKUPのまま維持するか、保存形式や事前確認を行ってください。

Q: HLOOKUPと比較した場合はどうですか?

A: HLOOKUPは行方向の検索に特化した関数ですが、XLOOKUPは行方向も列方向も同じ構文で処理できます。新規で作成する表であればXLOOKUPへの統一が管理上シンプルです。

要点整理

差は「左方向検索・エラー処理・列番号指定」の3点に集約されます。既存表の構造を変えずに導入できる点がXLOOKUPの実用上の最大メリットです。古いExcel環境との互換性が必要な場合のみVLOOKUPを維持する判断が有効です。

XLOOKUP向き・不向きを3分で診断

以下の3問に答えることで、導入の優先度を判断できます。

Q1: 使用しているExcelのバージョンはMicrosoft 365またはExcel 2021以降ですか?

Noの場合は Result D(バージョン確認優先) です。まず ファイル → アカウント → Excelのバージョン情報 でバージョンを確認してください。Office 2021への更新が可能かIT管理者または契約プランを確認するのが先決です。Yesの場合はQ2に進んでください。

Q2: 現在VLOOKUPを使っている式で「列追加後に参照がずれた」または「左方向を参照できなかった」経験はありますか?

Yesの場合は Result A(即切り替え推奨) です。XLOOKUPに切り替える優先度が高い状態です。まず1つの表をXLOOKUPで書き直し、同じ結果が返ることを確認することから始めてください。Noの場合はQ3に進んでください。

Q3: 作成する新しい表でエラーを #N/A でなく任意の文字列で表示したいですか?

Yesの場合は Result B(新規作成から導入)です。新規シートからXLOOKUPを採用し、第4引数に “該当なし” を入れる習慣をつけてください。Noの場合はResult C(現状維持も選択肢) です。現状のVLOOKUPで支障がなければ無理に切り替える必要はありません。ただし、次に新しい管理表を作成する際にXLOOKUPを試すと切り替えのコストを下げられます。

CHECK

▶ 今すぐやること: Q1のバージョン確認(ファイル → アカウント)を今すぐ実施し、Microsoft 365またはExcel 2021以降であることを確認する(2分)

Q: Excel 2021とMicrosoft 365のどちらがXLOOKUPを使いやすいですか?

A: どちらも同じXLOOKUPの基本機能を使えます。ただしMicrosoft 365は定期更新により新機能が先に追加されるため、スピルを含む最新機能を使いたい場合はMicrosoft 365が有利です。

Q: スプレッドシート(Google)でもXLOOKUPは使えますか?

A: GoogleスプレッドシートではXLOOKUP関数が2023年以降利用可能になっています。構文はExcelとほぼ同じですが、細部の動作に差異がある場合があるため、重要な業務では動作確認を先に行ってください(Money Forward Biz「スプレッドシートのXLOOKUP関数とは?」)。スプレッドシート初心者は5ステップで基本操作を完全習得の記事も参照すると、Google環境でのXLOOKUP活用イメージを掴みやすくなります。

確認事項

Q1のバージョン確認は完了した。Result Aに該当する場合、既存VLOOKUPを1本選んで書き直す準備ができた。Result Bに該当する場合、次の新規シート作成時に第4引数を入れる方針を決めた。

XLOOKUPエラーは4原因で解決

#N/A や #VALUE! が出る原因のほとんどは4つに絞られます。以下の順番に確認することで解決できます。

原因①:データ型の不一致(文字列 vs 数値)

検索値が数値なのに検索範囲のデータが文字列として保存されている(またはその逆)場合、完全一致で一致しないと判断され #N/A が返されます。セルを選択して数式バーを見たとき ‘001 のようにシングルクォートが付いていれば文字列です。VALUE() 関数で数値変換するか、セルの書式設定を統一することで対応できます。

原因②:検索範囲と戻り配列の行数が異なる

検索範囲を A2:A100、戻り配列を B2:B50 のように行数が異なる形で指定すると #VALUE! が返されます。両方の範囲を同じ行数(例:A2:A100 と B2:B100)に揃えるか、列全体(A:A と B:B)を指定することで解決します。

原因③:検索値のスペースや改行の混入

セルに見た目で気づかない前後スペースや改行が混入していると完全一致が失敗します。TRIM(検索値) を使って検索値を前処理するか、入力元のデータをインポート時にクリーニングすることで防止できます。会計ソフトや名刺管理システムからエクスポートしたデータにはこの問題が起きやすい傾向があります。

原因④:一致モードの指定ミス

一致モードを省略するとデフォルトが完全一致(0)になります。近似一致(-1 または 1)を指定している状態でデータが未ソートだと意図しない値が返されます。単価テーブルの区分判定など近似一致が必要な表では、データを昇順にソートしてから使うことを前提としてください。

エラー対処チェックリスト

チェック項目確認方法修正方法
データ型の一致数式バーで ‘ の有無を確認VALUE() 変換または書式統一
行数の一致選択時の行数表示を比較列全体指定(A:A)に変更
スペース混入LEN(セル) で文字数確認TRIM() で前処理
一致モードとソート第5引数とデータの順序を確認完全一致(0)に変更またはソート

CHECK

▶ 今すぐやること: #N/A エラーが出ているセルで =LEN(検索値セル) を入力して文字数を確認し、想定より多ければ TRIM でスペース除去を試みる(5分)

Q: 第4引数を設定したのにエラーが出る場合はなぜですか?

A: 第4引数は「値が見つからない場合」の処理であり、#VALUE! など他のエラー種別には対応していません。#VALUE! は範囲の行数不一致など構文自体の問題のため、原因②を確認してください。

Q: XLOOKUPで #SPILL! エラーが出ました。なぜですか?

A: スピル(複数値の自動展開)を使う場合、結果が表示されるセル範囲に他のデータが存在していると #SPILL! が返されます。結果の展開先セルを空にすることで解消できます。

要点整理

4原因のうち「データ型の不一致」と「スペース混入」が発生頻度の高い2つです。エクスポートデータを使う場合は原因③を最初に疑ってください。第4引数は #N/A 専用であり、#VALUE! には効かない点を押さえておくと原因の切り分けが早くなります。

XLOOKUP複数条件は5つの仕組みで対応

複数条件での検索はVLOOKUP+補助列で対処してきた方も多いですが、XLOOKUPには状況に応じて選べるアプローチが複数あります。

ハック1: 補助列連結で最速3分導入

【対象】: 複数条件での検索を今すぐ動かしたいフリーランス

【手順】: 管理表に新しい列(例:C列)を追加し、=A2&”_”&B2 のように検索したい2列を区切り文字で連結した補助列を作成します(2分)。XLOOKUPの検索値も同様に =F2&”_”&G2 のように連結して指定し(1分)、=XLOOKUP(F2&”_”&G2, C:C, D:D, “該当なし”) を入力して動作確認します(1分)。

【コツと理由】: 区切り文字(“_” や “|”)を使う理由は、“A”&”B” と “AB”&”” が同じ “AB” になる偶発的一致を防ぐためです。区切り文字を使わないと連結後の値が別の行と偶然一致するケースが生じます。

【注意点】: 補助列は非表示にするだけで削除しないでください。削除するとXLOOKUPの検索範囲が変わり #REF! エラーが発生します。列の保護または固定を使って誤削除を防ぐことを推奨します。

ハック2: 配列演算(アンパサンド結合)で補助列不要

【対象】: 補助列を追加したくない、式だけで完結させたいフリーランス

【手順】: XLOOKUPの検索値に F2&G2 のように結合した値を指定し(30秒)、検索範囲に A2:A100&B2:B100 のように2列を配列演算で結合して指定します(1分)。=XLOOKUP(F2&G2, A2:A100&B2:B100, C2:C100, “該当なし”) を入力してCtrl+Shift+Enterで確定します(Microsoft 365の場合はEnterのみ)(1分)。

【コツと理由】: 検索範囲を配列演算でその場で生成するアプローチを取ります。XLOOKUPが配列を直接受け取れる設計になっているため機能します。ただし行数が多い場合は計算負荷が増えるため、補助列方式のほうが再計算速度の面で有利になります。

【注意点】: Excel 2021(非M365)では配列演算の一部の書き方で動作が異なる場合があります。Ctrl+Shift+Enter が必要かどうかはバージョンによって変わるため、まず小さな範囲で検証してください。

ハック3: FILTER関数との組み合わせで条件抽出を先行

【対象】: 複数条件を柔軟に変えながら結果を一覧表示したいフリーランス

【手順】: =FILTER(B:B, (A:A=F2)*(C:C=G2)) のようにFILTERで条件に一致する行を先に絞り込みます(2分)。FILTERの結果から最初の1件のみ取り出したい場合は INDEX(FILTER(…),1) で先頭を返し(1分)、一致件数が0件のときの処理として IFERROR(INDEX(FILTER(…),1),”該当なし”) を追加します(1分)。

【コツと理由】: FILTER関数が先に行を絞るため、XLOOKUPのように「どの列で検索するか」という制約が発生しない点が本質的な違いです。複数条件かつ複数列返却が必要な場面では、FILTER+INDEXの組み合わせが式の整理上有利になります。

【注意点】: FILTERはMicrosoft 365とExcel 2021以降限定です。スピルが機能する環境であることを事前に確認してください。複数件ヒットしたとき全件をリストアップするか先頭だけ返すかを設計段階で決めておいてください。

ハック4: 近似一致で単価テーブルを自動判定

【対象】: 取引量・時間数に応じて段階的に単価が変わる料金テーブルを持つフリーランス

【手順】: 単価テーブルを「数量の下限値」昇順で整理し、下限値列と単価列を別々の列に用意します(2分)。=XLOOKUP(実績数量セル, 下限値列, 単価列, “範囲外”, -1) で「以下の最大値(切り下げ)」の近似一致を指定し(1分)、実績数量を変えて想定どおりの単価が返ることを確認します(1分)。

【コツと理由】: データを昇順ソート済みにした上で一致モード -1(以下の最大値)を使えば、段階料金の自動判定として安定して機能します。IFの入れ子(=IF(A1>=100,…,IF(A1>=50,…,…)))で書くと条件が4段階を超えた時点で式のメンテナンスが困難になりますが、XLOOKUPの近似一致はテーブル行を追加するだけで対応できます。フリーランスの単価設定方法についてはフリーランス値決めは3ステップで適正単価を設定できるも参考になります。

【注意点】: データが昇順ソートされていない状態で近似一致を使うと意図しない値が返ります。テーブルに行を追加するたびにソートを確認する運用ルールを設けておいてください。

ハック5: スピルで複数列を一括返却

【対象】: 1回の検索で取引先名・単価・振込先など複数の情報を同時に表示したいフリーランス

【手順】: 戻り配列に単一列ではなく複数列の範囲(例:B:D)を指定し(30秒)、=XLOOKUP(F2, A:A, B:D, “該当なし”) を入力して1つのセルに確定します(1分)。結果が右方向に自動展開(スピル)されることを確認し、展開先に既存データがないことを確認します(1分)。

【コツと理由】: 戻り配列を複数列にするだけで結果が右方向に自動展開されます。前提条件はMicrosoft 365またはExcel 2021以降のスピル対応環境です。スピルを使うことで同じ検索値に対して複数のXLOOKUPを並べて書く必要がなくなり、式のメンテナンス箇所が1箇所に集約されます。個人事業主の請求書書き方と組み合わせて、スピルで返した単価・税率・振込先を請求書テンプレートへ自動反映する仕組みが作れます。

【注意点】: スピル結果の先頭セル以外(展開先セル)を直接編集しようとするとエラーになります。スピル結果を別の計算に使う場合はスピル先頭セルを参照するか # 演算子(例:F2#)を使ってください。

CHECK

▶ 今すぐやること: ハック1の補助列方式を使い、手持ちの管理表に連結補助列を1列追加してXLOOKUPで複数条件検索を動作確認する(5分)

Q: 補助列を使わずに3条件以上の検索はできますか?

A: 配列演算(ハック2)では A:A&B:B&C:C のように3列以上を連結して指定できます。ただし行数が多い場合は計算負荷が上がるため、補助列方式との使い分けを検討してください。

Q: スピルで返ってきた値を別のXLOOKUPの検索値として使えますか?

A: スピル結果の先頭セルを参照するか セル# 形式で配列として渡すことで利用できます。動作確認を小さな範囲で先に行ってください。

要点整理

5つのハックのうち、まず補助列連結(ハック1)から着手するのが最短ルートです。補助列を追加できない場合は配列演算(ハック2)、複数条件+複数列返却が必要な場合はFILTER組み合わせ(ハック3)を選んでください。スピル(ハック5)は導入後の式メンテナンスコストを最も下げる方法です。

XLOOKUPを使い始める:3引数から実務へ

XLOOKUPは「検索値・検索範囲・戻り配列」の3引数を覚えるだけで実務に組み込めます。第4引数でエラー表示を制御し、VLOOKUPよりも列番号指定不要・左方向検索可能の2点で既存表への適用が柔軟です。複数条件が必要な場合も補助列連結から始めれば最短5分で動作確認が完了します。

VLOOKUPを長年使ってきた方がXLOOKUPに切り替える際、引数の数こそ多いですが必須は3つだけです。実際に1つ式を書いてみると想定より早く習得できます。今使っている表の1箇所をXLOOKUPで書き直してみることが最短ルートです。

状況次の一歩所要時間
今すぐXLOOKUPを試したい手持ちの管理表に =XLOOKUP(F2,A:A,B:B,”該当なし”) を入力5分
VLOOKUPから切り替えたい既存のVLOOKUP式を1つ選びXLOOKUPで書き直す10分
複数条件で使いたいハック1(補助列連結)から着手する5分
エラーが出て止まっているエラー対処チェックリストで原因を1つずつ確認する5分

XLOOKUP 使い方に関するよくある質問

Q: XLOOKUPとINDEX+MATCHはどちらが優れていますか?

A: XLOOKUPはINDEX+MATCHを1つの関数で置き換えた設計になっており、記述量が短くなります。ただしINDEX+MATCHはExcel 2003以降で動作するため古い環境との互換性では有利です。新規作成する表であればXLOOKUPを選ぶとメンテナンスがシンプルになります(Microsoft Support「XLOOKUP 関数」)。

Q: XLOOKUPで末尾から検索する方法はありますか?

A: 第6引数「検索モード」に -1 を指定すると末尾から先頭方向に検索します。同じ検索値が複数存在する表で最新の行(下側)の値を返したい場合に活用できます。

Q: XLOOKUPで行方向(横向き)を検索することはできますか?

A: 可能です。検索範囲と戻り配列を列ではなく行で指定すれば横方向の検索ができます。VLOOKUPの横版であるHLOOKUPの代替としてそのまま使えます。

【出典・参照元】

Microsoft Support「XLOOKUP 関数」

NTT西日本 Biz Clip「新関数『XLOOKUP』を一番分かりやすい例で学ぶ」

Money Forward Biz「スプレッドシートのXLOOKUP関数とは?使い方や複数条件」