<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XLOOKUP関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/xlookup%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 15 Aug 2026 13:15:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>XLOOKUP関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド｜もう迷わない選び方フロー付き</title>
		<link>https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/</link>
					<comments>https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 12:29:57 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[VLOOKUP関数]]></category>
		<category><![CDATA[XLOOKUP関数]]></category>
		<category><![CDATA[検索関数]]></category>
		<category><![CDATA[関数比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4029</guid>

					<description><![CDATA[VLOOKUP・XLOOKUP・INDEX/MATCHの違いをバージョン互換性・検索方向・エラー処理・処理速度の4軸で比較。あなたのExcel環境に合った関数が一目でわかる選び方フローチャート付き。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「VLOOKUPとXLOOKUPって何が違うの？」と迷ったことはありませんか。「INDEX+MATCHのほうがいい」なんて声も聞きますよね。</p>



<p class="wp-block-paragraph">Excelの検索関数は選択肢が多いぶん、どれを覚えるべきか迷いますよね。間違った関数を選ぶと、あとから数式を全部書き直すハメになることも。</p>



<p class="wp-block-paragraph">この記事では、3つの検索関数の違いを4つの比較軸で整理します。記事の最後には「あなたが今日から使うべき関数」がわかる選び方フローも用意しました。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>この記事は次のような人におすすめ</strong><br>&#8211; VLOOKUPしか使ったことがない人<br>&#8211; XLOOKUPに乗り換えるべきか迷っている人<br>&#8211; INDEX+MATCHの実力を知りたい人</p></blockquote>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VLOOKUP・XLOOKUP・INDEX/MATCHの違い【結論から】</a><ol><li><a href="#toc2" tabindex="0">3関数の機能比較表</a></li><li><a href="#toc3" tabindex="0">今日から使うべき検索関数がわかる選び方フロー</a></li></ol></li><li><a href="#toc4" tabindex="0">VLOOKUP関数の特徴とメリット・デメリット</a><ol><li><a href="#toc5" tabindex="0">VLOOKUPの基本構文</a></li><li><a href="#toc6" tabindex="0">VLOOKUPのメリット</a></li><li><a href="#toc7" tabindex="0">VLOOKUPのデメリット</a></li></ol></li><li><a href="#toc8" tabindex="0">XLOOKUP関数の特徴とメリット・デメリット</a><ol><li><a href="#toc9" tabindex="0">XLOOKUPの基本構文</a></li><li><a href="#toc10" tabindex="0">XLOOKUPのメリット</a></li><li><a href="#toc11" tabindex="0">XLOOKUPのデメリット</a></li></ol></li><li><a href="#toc12" tabindex="0">INDEX/MATCH関数の特徴とメリット・デメリット</a><ol><li><a href="#toc13" tabindex="0">INDEX/MATCHの基本構文</a></li><li><a href="#toc14" tabindex="0">INDEX/MATCHのメリット</a></li><li><a href="#toc15" tabindex="0">INDEX/MATCHのデメリット</a></li></ol></li><li><a href="#toc16" tabindex="0">4つの比較軸で徹底比較</a><ol><li><a href="#toc17" tabindex="0">比較1: バージョン互換性</a></li><li><a href="#toc18" tabindex="0">比較2: 検索方向（左方向検索への対応）</a></li><li><a href="#toc19" tabindex="0">比較3: エラー処理の手間</a></li><li><a href="#toc20" tabindex="0">比較4: 処理速度（大量データ時の違い）</a></li></ol></li><li><a href="#toc21" tabindex="0">よくある失敗パターンと対処法</a><ol><li><a href="#toc22" tabindex="0">パターン1: #N/Aエラーが出る</a></li><li><a href="#toc23" tabindex="0">パターン2: VLOOKUPの列番号ずれを防ぐ方法</a></li><li><a href="#toc24" tabindex="0">パターン3: XLOOKUPが使えないときの代替策</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ</a><ol><li><a href="#toc26" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VLOOKUP・XLOOKUP・INDEX/MATCHの違い【結論から】</span></h2>



<p class="wp-block-paragraph">最初に結論をお伝えします。3つの関数の使い分けは次のとおりです。</p>



<ul class="wp-block-list"><li><strong>Microsoft 365 または Excel 2021 を使っている</strong> → XLOOKUPが最適</li><li><strong>Excel 2019以前、または古いバージョンとファイルを共有する</strong> → INDEX+MATCH が安心</li><li><strong>シンプルな右方向の検索だけ</strong> → VLOOKUPでも十分</li></ul>



<h3 class="wp-block-heading"><span id="toc2">3関数の機能比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>VLOOKUP</th><th>XLOOKUP</th><th>INDEX+MATCH</th></tr></thead><tbody><tr><td>対応バージョン</td><td>全バージョン</td><td>Excel 2021 / 365</td><td>全バージョン</td></tr><tr><td>検索方向</td><td>右方向のみ</td><td>左右どちらも</td><td>左右どちらも</td></tr><tr><td>エラー処理</td><td>IFERRORが必要</td><td>第4引数で指定可</td><td>IFERRORが必要</td></tr><tr><td>列挿入への耐性</td><td>弱い（列番号ずれ）</td><td>強い</td><td>強い</td></tr><tr><td>構文の長さ</td><td>短い（4引数）</td><td>短い（実質3引数）</td><td>長い（2関数ネスト）</td></tr><tr><td>学習コスト</td><td>低い</td><td>低い</td><td>やや高い</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">今日から使うべき検索関数がわかる選び方フロー</span></h3>



<p class="wp-block-paragraph">自分の環境に合った関数を判定してみてください。</p>



<p class="wp-block-paragraph"><strong>ステップ1: Excelのバージョンを確認</strong></p>



<p class="wp-block-paragraph">お使いのExcelはMicrosoft 365またはExcel 2021ですか？</p>



<ul class="wp-block-list"><li><strong>はい</strong> → ステップ2へ</li><li><strong>いいえ（Excel 2019以前）</strong> → ステップ3へ</li><li><strong>わからない</strong> → 「ファイル」→「アカウント」で確認できます</li></ul>



<p class="wp-block-paragraph"><strong>ステップ2: ファイルを共有する相手のバージョン</strong></p>



<p class="wp-block-paragraph">古いバージョンのExcelを使う人とファイルを共有しますか？</p>



<ul class="wp-block-list"><li><strong>共有しない、または相手もMicrosoft 365</strong> → <strong>XLOOKUPを使いましょう</strong></li><li><strong>共有する（相手がExcel 2019以前）</strong> → ステップ3へ</li></ul>



<p class="wp-block-paragraph"><strong>ステップ3: 検索方向の確認</strong></p>



<p class="wp-block-paragraph">検索値より左側の列から値を取得する必要がありますか？</p>



<ul class="wp-block-list"><li><strong>はい（左方向の検索が必要）</strong> → <strong>INDEX+MATCHを使いましょう</strong></li><li><strong>いいえ（右方向だけでOK）</strong> → <strong>VLOOKUPでも対応できます</strong></li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>「今からExcelを本気で学ぶなら、まずどれ？」と聞かれたら、答えはXLOOKUPです。Microsoft 365の普及率は年々上がっています。ただし社内の環境がExcel 2019以前の場合は、INDEX+MATCHを覚えておくと安心です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">VLOOKUP関数の特徴とメリット・デメリット</span></h2>



<h3 class="wp-block-heading"><span id="toc5">VLOOKUPの基本構文</span></h3>



<pre class="wp-block-code"><code>=VLOOKUP(検索値, 範囲, 列番号, [検索の型])</code></pre>



<p class="wp-block-paragraph">たとえば、社員番号「A003」の名前を取得したい場合です。</p>



<pre class="wp-block-code"><code>=VLOOKUP(&quot;A003&quot;, A1:C10, 3, FALSE)</code></pre>



<p class="wp-block-paragraph">A1:C10の範囲でA列から「A003」を探します。見つかったら同じ行の3列目の値を返します。</p>



<h3 class="wp-block-heading"><span id="toc6">VLOOKUPのメリット</span></h3>



<ul class="wp-block-list"><li><strong>知名度が圧倒的</strong>: Excel入門書やネット記事で最も情報が多い</li><li><strong>全バージョンで動く</strong>: Excel 2007以降ならどの環境でも使える</li><li><strong>構文がシンプル</strong>: 引数4つで覚えやすい</li></ul>



<h3 class="wp-block-heading"><span id="toc7">VLOOKUPのデメリット</span></h3>



<p class="wp-block-paragraph">VLOOKUPには2つの弱点があります。</p>



<p class="wp-block-paragraph"><strong>1. 左方向に検索できない</strong></p>



<p class="wp-block-paragraph">VLOOKUPは範囲の一番左の列で検索します。検索列より左の値は取得できません。</p>



<p class="wp-block-paragraph">たとえばB列の商品コードで検索してA列の商品名を取得する、ということができません。この場合は列の並びを変えるか、別の関数を使う必要があります。</p>



<p class="wp-block-paragraph"><strong>2. 列番号がハードコードでずれやすい</strong></p>



<p class="wp-block-paragraph">第3引数の列番号は「何列目を返すか」を数値で指定します。あとから列を挿入すると番号がずれてしまいます。</p>



<p class="wp-block-paragraph">数式を100個コピーしたあとに列を追加すると、100個すべて修正が必要です。大きな表ほどリスクが高くなります。</p>



<p class="wp-block-paragraph">詳しくは「<a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数の使い方</a>」をご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc8">XLOOKUP関数の特徴とメリット・デメリット</span></h2>



<h3 class="wp-block-heading"><span id="toc9">XLOOKUPの基本構文</span></h3>



<pre class="wp-block-code"><code>=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])</code></pre>



<p class="wp-block-paragraph">同じく社員番号「A003」の名前を取得する場合です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;A003&quot;, A1:A10, C1:C10)</code></pre>



<p class="wp-block-paragraph">VLOOKUPとの違いが一目でわかりますよね。列番号ではなく「どの列を返すか」を直接指定しています。</p>



<h3 class="wp-block-heading"><span id="toc10">XLOOKUPのメリット</span></h3>



<ul class="wp-block-list"><li><strong>左方向の検索ができる</strong>: 検索範囲と戻り範囲を自由に指定可</li><li><strong>エラー処理が組み込み</strong>: 第4引数に「見つからないときの値」を直接指定可</li><li><strong>列番号がないのでずれない</strong>: 列の挿入・削除に強い</li></ul>



<p class="wp-block-paragraph">XLOOKUPでエラー処理を組み込む例です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;A003&quot;, A1:A10, C1:C10, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">見つからない場合は「該当なし」と表示されます。VLOOKUPのようにIFERROR関数で囲む必要がありません。</p>



<h3 class="wp-block-heading"><span id="toc11">XLOOKUPのデメリット</span></h3>



<p class="wp-block-paragraph"><strong>1. 対応バージョンが限られる</strong></p>



<p class="wp-block-paragraph">XLOOKUPはExcel 2021およびMicrosoft 365専用です。Excel 2019以前では <code>#NAME?</code> エラーになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>社内でExcelのバージョンが混在している場合は要注意です。XLOOKUPで作ったファイルを古いバージョンで開くと、数式がすべてエラーになります。</p></blockquote>



<p class="wp-block-paragraph"><strong>2. ネット上の情報がまだ少ない</strong></p>



<p class="wp-block-paragraph">VLOOKUPと比べると解説記事や質問サイトの情報量が少なめです。困ったときに検索で解決しにくい場面があります。</p>



<p class="wp-block-paragraph">詳しくは「<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数の使い方</a>」をご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc12">INDEX/MATCH関数の特徴とメリット・デメリット</span></h2>



<h3 class="wp-block-heading"><span id="toc13">INDEX/MATCHの基本構文</span></h3>



<p class="wp-block-paragraph">INDEX関数とMATCH関数を組み合わせて使います。</p>



<pre class="wp-block-code"><code>=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))</code></pre>



<p class="wp-block-paragraph">社員番号「A003」の名前を取得する場合です。</p>



<pre class="wp-block-code"><code>=INDEX(C1:C10, MATCH(&quot;A003&quot;, A1:A10, 0))</code></pre>



<p class="wp-block-paragraph">MATCH関数がA列から「A003」の行位置を取得します。INDEX関数がC列の同じ行の値を返します。</p>



<h3 class="wp-block-heading"><span id="toc14">INDEX/MATCHのメリット</span></h3>



<ul class="wp-block-list"><li><strong>全バージョン対応</strong>: Excel 2007以降ならどこでも動く</li><li><strong>左方向の検索ができる</strong>: 検索範囲と戻り範囲が独立</li><li><strong>列の挿入・削除に強い</strong>: 列番号を使わないのでずれない</li><li><strong>処理速度が速い</strong>: 大量データではVLOOKUPより高速</li></ul>



<h3 class="wp-block-heading"><span id="toc15">INDEX/MATCHのデメリット</span></h3>



<p class="wp-block-paragraph"><strong>1. 数式が長くなる</strong></p>



<p class="wp-block-paragraph">2つの関数をネストするので、数式が長くなります。慣れるまでは書き方に戸惑うかもしれません。</p>



<p class="wp-block-paragraph"><strong>2. 学習コストがやや高い</strong></p>



<p class="wp-block-paragraph">INDEX関数とMATCH関数の2つを理解する必要があります。VLOOKUPやXLOOKUPが1つの関数で完結するのに対し、少しハードルが上がります。</p>



<p class="wp-block-paragraph">それぞれの詳しい使い方は以下の記事で解説しています。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数の使い方</a></li></ul>



<h2 class="wp-block-heading"><span id="toc16">4つの比較軸で徹底比較</span></h2>



<p class="wp-block-paragraph">ここからは、3つの関数を4つの軸で詳しく比較していきます。</p>



<h3 class="wp-block-heading"><span id="toc17">比較1: バージョン互換性</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>Excel 2016</th><th>Excel 2019</th><th>Excel 2021</th><th>Microsoft 365</th></tr></thead><tbody><tr><td>VLOOKUP</td><td>使える</td><td>使える</td><td>使える</td><td>使える</td></tr><tr><td>XLOOKUP</td><td>使えない</td><td>使えない</td><td>使える</td><td>使える</td></tr><tr><td>INDEX+MATCH</td><td>使える</td><td>使える</td><td>使える</td><td>使える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">XLOOKUPだけがExcel 2021以降に限定されています。社内でバージョンが統一されていない場合は、VLOOKUPかINDEX+MATCHを選んでください。</p>



<h3 class="wp-block-heading"><span id="toc18">比較2: 検索方向（左方向検索への対応）</span></h3>



<p class="wp-block-paragraph">VLOOKUPは範囲の最左列で検索し、右方向にしか値を返せません。</p>



<p class="wp-block-paragraph">たとえば次のような表があるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（商品名）</th><th>B列（商品コード）</th><th>C列（価格）</th></tr></thead><tbody><tr><td>りんご</td><td>F001</td><td>150</td></tr><tr><td>バナナ</td><td>F002</td><td>100</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「商品コード F001 の商品名を知りたい」場合です。VLOOKUPではB列で検索してA列（左側）を返せません。</p>



<ul class="wp-block-list"><li><strong>VLOOKUP</strong>: 不可（補助列の追加が必要）</li><li><strong>XLOOKUP</strong>: <code>=XLOOKUP("F001", B:B, A:A)</code> で簡単にできる</li><li><strong>INDEX+MATCH</strong>: <code>=INDEX(A:A, MATCH("F001", B:B, 0))</code> でできる</li></ul>



<h3 class="wp-block-heading"><span id="toc19">比較3: エラー処理の手間</span></h3>



<p class="wp-block-paragraph">検索値が見つからない場合の動作を比較します。</p>



<p class="wp-block-paragraph"><strong>VLOOKUPの場合（IFERROR関数が必要）</strong></p>



<pre class="wp-block-code"><code>=IFERROR(VLOOKUP(&quot;A999&quot;, A1:C10, 3, FALSE), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>XLOOKUPの場合（第4引数で指定）</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;A999&quot;, A1:A10, C1:C10, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>INDEX+MATCHの場合（IFERROR関数が必要）</strong></p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(C1:C10, MATCH(&quot;A999&quot;, A1:A10, 0)), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">XLOOKUPが最もシンプルです。エラー処理を関数内で完結できるのは大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc20">比較4: 処理速度（大量データ時の違い）</span></h3>



<p class="wp-block-paragraph">数万行を超えるデータで検索する場合、処理速度に差が出ます。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>速度の傾向</th><th>理由</th></tr></thead><tbody><tr><td>VLOOKUP</td><td>やや遅い</td><td>範囲全体を保持するためメモリ効率が低い</td></tr><tr><td>XLOOKUP</td><td>速い</td><td>検索範囲と戻り範囲が分離しており効率的</td></tr><tr><td>INDEX+MATCH</td><td>速い</td><td>MATCHが行位置だけを返すため軽量</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">体感できるほどの差が出るのは、数万行以上の表で大量に数式を使う場合です。数百行程度なら速度差はほぼ気になりません。</p>



<h2 class="wp-block-heading"><span id="toc21">よくある失敗パターンと対処法</span></h2>



<p class="wp-block-paragraph">3つの関数で起きやすいトラブルをまとめました。</p>



<h3 class="wp-block-heading"><span id="toc22">パターン1: #N/Aエラーが出る</span></h3>



<p class="wp-block-paragraph">3つの関数に共通する、最も多いエラーです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>検索値のスペルミス</td><td>検索値と表の値を目視で確認する</td></tr><tr><td>余分なスペースが入っている</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>で空白を除去する</td></tr><tr><td>全角・半角の不一致</td><td>ASC関数で半角に統一する</td></tr><tr><td>検索の型がTRUE（近似一致）</td><td>FALSEまたは0を指定して完全一致にする</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラー処理には<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>が便利です。#N/Aだけ処理したい場合は<a href="https://mashukabu.com/excel-function-howto-use-ifna/">IFNA関数</a>もおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc23">パターン2: VLOOKUPの列番号ずれを防ぐ方法</span></h3>



<p class="wp-block-paragraph">VLOOKUPの第3引数に数値を直接書くと、列の追加でずれます。MATCH関数を使って列番号を自動取得する方法があります。</p>



<pre class="wp-block-code"><code>=VLOOKUP(&quot;A003&quot;, A1:E10, MATCH(&quot;価格&quot;, A1:E1, 0), FALSE)</code></pre>



<p class="wp-block-paragraph">ヘッダー行から「価格」列の位置を自動で取得しています。列を挿入しても数式がずれません。</p>



<p class="wp-block-paragraph">ただしここまでするなら、INDEX+MATCHに切り替えるほうが合理的です。</p>



<h3 class="wp-block-heading"><span id="toc24">パターン3: XLOOKUPが使えないときの代替策</span></h3>



<p class="wp-block-paragraph">Excel 2019以前で <code>#NAME?</code> エラーが出る場合です。XLOOKUPの代わりにINDEX+MATCHを使いましょう。</p>



<p class="wp-block-paragraph">XLOOKUP → INDEX+MATCHの書き換え例です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;A003&quot;, A1:A10, C1:C10, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">上の数式はINDEX+MATCHで書くとこうなります。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(C1:C10, MATCH(&quot;A003&quot;, A1:A10, 0)), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">機能は同じです。XLOOKUPのほうが短いですが、INDEX+MATCHなら全バージョンで動きます。</p>



<h2 class="wp-block-heading"><span id="toc25">まとめ</span></h2>



<p class="wp-block-paragraph">VLOOKUP・XLOOKUP・INDEX/MATCHの違いを振り返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>選ぶ基準</th><th>おすすめの関数</th></tr></thead><tbody><tr><td>Excel 2021 / 365 でシンプルに使いたい</td><td>XLOOKUP</td></tr><tr><td>全バージョン対応 + 左方向検索が必要</td><td>INDEX+MATCH</td></tr><tr><td>シンプルな右方向検索だけ</td><td>VLOOKUP</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったらまずXLOOKUPを試してみてください。もしバージョンの制約がある場合は、INDEX+MATCHを覚えておけば困ることはありません。VLOOKUPは既存の数式を読み解くためにも知っておくと安心です。</p>



<p class="wp-block-paragraph">3つとも「表からデータを探す」という目的は同じです。環境と用途に合った関数を選んでいきましょう。</p>



<h3 class="wp-block-heading"><span id="toc26">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">ExcelのVLOOKUP関数の使い方｜引数・エラー対処・INDEX+MATCHとの使い分けまで</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-xlookup/">ExcelのXLOOKUP関数の使い方｜VLOOKUPとの違い・エラー対処まで解説</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-match/">ExcelのMATCH関数の使い方｜検索値の位置を取得する方法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-xmatch/">XMATCH関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-ifna/">IFNA関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>6症状で直すXLOOKUP関数の使い方｜別シート参照・空白が0になる問題まで</title>
		<link>https://mashukabu.com/excel-function-howto-use-xlookup/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-xlookup/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 27 Mar 2022 12:47:30 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[XLOOKUP関数]]></category>
		<category><![CDATA[エラー対処]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[別シート参照]]></category>
		<category><![CDATA[検索関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1469</guid>

					<description><![CDATA[ExcelのXLOOKUP関数の使い方を、別シートのマスタ参照から実際に手を動かす順番で解説します。空欄のはずが0になる、日付が5桁の数字になる、古い行が返るなど「エラーは出ないのに結果が変」な6症状を症状別に切り分け、対処法の副作用まで比較。VLOOKUPからの書き換え4パターンとエラー別の対処も掲載しています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelでVLOOKUPからXLOOKUPに乗り換えてみたものの、途中で手が止まっていませんか。</p>



<ul class="wp-block-list"><li>別シートに置いたマスタを、どう指定すればいいのか分からない</li><li>値は返ってきたのに、空欄のはずのセルが「0」になる</li><li>入社日を引いたら「44105」という5桁の数字が出てきた</li></ul>



<p class="wp-block-paragraph">エラーが表示されるなら、まだ調べようがあります。やっかいなのは<strong>エラーが出ないまま結果だけが変</strong>なケース。数式は正しく見えるので、どこを直せばいいのか見当もつきません。</p>



<p class="wp-block-paragraph">この記事ではExcelのXLOOKUP関数の使い方を、別シートのマスタを参照するところまで通しで解説します。そのうえで「エラーは出ないのに結果が変」な6症状を切り分けていきましょう。症状 → 起きていること → 30秒でできる確認 → 対処の順に進めますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong>: XLOOKUP関数が使えるのは次の環境です。</p><p>&#8211; Excel for Microsoft 365 / Excel 2024 / Excel 2021（いずれもMac版を含む）<br>&#8211; Excel for the web / iPad版 / iPhone版 / Android版</p><p>Excel 2016 と Excel 2019 は非対応。入力しても <code>#NAME?</code> エラーになります。</p></blockquote>



<p class="wp-block-paragraph">そもそも「使えない」「<code>#NAME?</code> が出る」で止まっていませんか。その場合は<a href="https://mashukabu.com/excel-xlookup-filter-name-error-version/">ExcelのXLOOKUP・FILTERが使えない・#NAME?の原因と対処</a>が答えになります。本記事ではその原因を深掘りしません。</p>



<p class="wp-block-paragraph">Googleスプレッドシートをお使いなら、<a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方</a>のほうが近道ですよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのXLOOKUP関数とは？基本の書き方と必須の3引数</a><ol><li><a href="#toc2" tabindex="0">まずは1本書いてみる（社員番号から氏名を引く）</a></li><li><a href="#toc3" tabindex="0">6つの引数と、最初に覚えるべき3つ</a></li><li><a href="#toc4" tabindex="0">見つからないときの表示を決める（第4引数）</a></li></ol></li><li><a href="#toc5" tabindex="0">自分のシートで書く：範囲の指定はここでつまずく</a><ol><li><a href="#toc6" tabindex="0">同じシートのマスタを参照する</a></li><li><a href="#toc7" tabindex="0">別シートのマスタを参照する（シート名!範囲の書き方）</a></li><li><a href="#toc8" tabindex="0">シート名にスペースや記号が入っているとき</a></li><li><a href="#toc9" tabindex="0">別ブックのマスタを参照するときの注意</a></li><li><a href="#toc10" tabindex="0">テーブル（構造化参照）で書くと行が増えても直さなくていい</a></li><li><a href="#toc11" tabindex="0">A:A の全列参照をやめたほうがいい理由</a></li></ol></li><li><a href="#toc12" tabindex="0">エラーは出ないのに結果が変：症状別の切り分け早見表</a><ol><li><a href="#toc13" tabindex="0">【早見表】症状 → 起きていること → 30秒でできる確認 → 対処</a></li><li><a href="#toc14" tabindex="0">症状1：空欄のはずなのに0が返る</a></li><li><a href="#toc15" tabindex="0">症状1の対処3手と副作用の比較表</a></li><li><a href="#toc16" tabindex="0">症状2：日付を引いたら5桁の数字になった</a></li><li><a href="#toc17" tabindex="0">症状3：更新したのに古い行の値が返ってくる</a></li><li><a href="#toc18" tabindex="0">症状4：数字に見えるのに一致しない</a></li><li><a href="#toc19" tabindex="0">症状5：1件しか返らない／2件目以降が出てこない</a></li><li><a href="#toc20" tabindex="0">症状6：数式をコピーすると結果がずれる</a></li></ol></li><li><a href="#toc21" tabindex="0">エラーが表示されるときの対処（#N/A・#VALUE!・#SPILL!・#REF!）</a><ol><li><a href="#toc22" tabindex="0">#N/A：見つからない（第4引数で表示を制御する）</a></li><li><a href="#toc23" tabindex="0">#VALUE!：検索範囲と戻り範囲のサイズが合っていない</a></li><li><a href="#toc24" tabindex="0">#SPILL!：結果を書き出す先が空いていない</a></li><li><a href="#toc25" tabindex="0">#REF!：参照していた行・列が消えた</a></li><li><a href="#toc26" tabindex="0">#NAME? が出た場合</a></li></ol></li><li><a href="#toc27" tabindex="0">XLOOKUPだから書ける使い方6パターン</a><ol><li><a href="#toc28" tabindex="0">1. 左側の列を引く（VLOOKUPでは書けなかった形）</a></li><li><a href="#toc29" tabindex="0">2. 1本の数式で複数列をまとめて取り出す</a></li><li><a href="#toc30" tabindex="0">3. 重複がある表から一番下（最新）の行を取り出す</a></li><li><a href="#toc31" tabindex="0">4. 「以上・以下」で近い値を探す（一致モード -1 / 1）</a></li><li><a href="#toc32" tabindex="0">5. ワイルドカードで部分一致検索する（一致モード 2）</a></li><li><a href="#toc33" tabindex="0">6. 2つの条件を組み合わせて検索する</a></li></ol></li><li><a href="#toc34" tabindex="0">VLOOKUPからの書き換え早見表（4パターン）</a><ol><li><a href="#toc35" tabindex="0">パターン1：単純な置き換え</a></li><li><a href="#toc36" tabindex="0">パターン2：左方向の検索に置き換える</a></li><li><a href="#toc37" tabindex="0">パターン3：IFERROR で包んでいた式を第4引数に統合する</a></li><li><a href="#toc38" tabindex="0">パターン4：複数列を1本の数式にまとめる</a></li></ol></li><li><a href="#toc39" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc40" tabindex="0">XLOOKUPは古いExcelで開くとどうなりますか？</a></li><li><a href="#toc41" tabindex="0">VLOOKUPは全部XLOOKUPに書き換えるべきですか？</a></li><li><a href="#toc42" tabindex="0">XLOOKUPとINDEX+MATCHはどちらが速いですか？</a></li><li><a href="#toc43" tabindex="0">Googleスプレッドシートでも同じように使えますか？</a></li><li><a href="#toc44" tabindex="0">0の代わりに空欄にすると、後で合計できなくなりませんか？</a></li></ol></li><li><a href="#toc45" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのXLOOKUP関数とは？基本の書き方と必須の3引数</span></h2>



<p class="wp-block-paragraph">XLOOKUPは「エックスルックアップ」と読みます。やっていることはVLOOKUPと同じで、「この値を探して、対応するデータを持ってきて」と指示を出す関数。</p>



<p class="wp-block-paragraph">名前の由来もシンプルです。VLOOKUPの「V」はVertical（縦）、HLOOKUPの「H」はHorizontal（横）の頭文字。XLOOKUPは縦の表でも横の表でも使えるため、方向を示す文字が付いていません。</p>



<p class="wp-block-paragraph">大きく違うのは、<strong>列番号を数えなくていい</strong>ことです。「A列で探して、B列を返す」とそのまま書けます。</p>



<h3 class="wp-block-heading"><span id="toc2">まずは1本書いてみる（社員番号から氏名を引く）</span></h3>



<p class="wp-block-paragraph">この記事では、次の社員マスタを共通のサンプルとして使います。1行目が見出しで、データは2行目から6行目に入っている想定です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（社員番号）</th><th>B列（氏名）</th><th>C列（部署）</th><th>D列（内線）</th><th>E列（入社日）</th></tr></thead><tbody><tr><td>2行目</td><td>E001</td><td>田中 実</td><td>営業部</td><td>1201</td><td>2019/4/1</td></tr><tr><td>3行目</td><td>E002</td><td>鈴木 花子</td><td>総務部</td><td>1305</td><td>2020/10/1</td></tr><tr><td>4行目</td><td>E003</td><td>佐藤 健</td><td>経理部</td><td>（空欄）</td><td>2021/4/1</td></tr><tr><td>5行目</td><td>E004</td><td>高橋 圭</td><td>営業部</td><td>1210</td><td>2023/4/1</td></tr><tr><td>6行目</td><td>E005</td><td>伊藤 彩</td><td>情報システム部</td><td>1420</td><td>2024/9/1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">社員番号「E002」から氏名を取り出す数式がこちら。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E002&quot;, A2:A6, B2:B6)</code></pre>



<p class="wp-block-paragraph">結果は「鈴木 花子」になります。数式の意味はシンプルで、A2:A6 の中から &#8220;E002&#8221; を探すだけ。見つかった位置と同じ場所にある B2:B6 の値が返ってきます。</p>



<p class="wp-block-paragraph">実際に打つときの流れも見ておきましょう。</p>



<ol class="wp-block-list"><li>結果を出したいセルに <code>=XLOOKUP(</code> と入力する</li><li>探したい値が入ったセルをクリックし、カンマを打つ</li><li>検索範囲をドラッグして選び、カンマを打つ</li><li>戻り範囲をドラッグして選び、<code>)</code> で閉じてEnter</li></ol>



<p class="wp-block-paragraph">マウスで範囲を選べば、書式はExcelが自動で入れてくれます。手打ちで覚える必要はありませんよ。</p>



<h3 class="wp-block-heading"><span id="toc3">6つの引数と、最初に覚えるべき3つ</span></h3>



<p class="wp-block-paragraph">XLOOKUPの構文はこちらです。</p>



<pre class="wp-block-code"><code>=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])</code></pre>



<p class="wp-block-paragraph">引数は全部で6つ。ただし必須は最初の3つだけで、残りは省略できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須／省略可</th><th>意味</th><th>指定例</th></tr></thead><tbody><tr><td>検索値</td><td>必須</td><td>探したい値。セル参照でも直接入力でも可</td><td><code>F2</code></td></tr><tr><td>検索範囲</td><td>必須</td><td>検索値を探す範囲（1行または1列）</td><td><code>A2:A200</code></td></tr><tr><td>戻り範囲</td><td>必須</td><td>結果として返したい範囲</td><td><code>B2:B200</code></td></tr><tr><td>見つからない場合</td><td>省略可</td><td>該当なしのときに表示する値</td><td><code>"該当なし"</code></td></tr><tr><td>一致モード</td><td>省略可</td><td>一致のさせ方（0／-1／1／2）</td><td><code>0</code></td></tr><tr><td>検索モード</td><td>省略可</td><td>検索する方向（1／-1／2／-2）</td><td><code>1</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">一致モードの既定値は <code>0</code>、つまり完全一致です。ここはVLOOKUPと正反対なので覚えておきましょう。</p>



<p class="wp-block-paragraph">VLOOKUPは第4引数を省略すると近似一致になります。近似一致とは「だいたい近い値を拾う」動作のこと。指定を忘れて意図しない値が返る、というトラブルの定番でした。</p>



<p class="wp-block-paragraph">XLOOKUPは何も指定しなければ完全一致。省略ミスによる事故が起きにくい設計です。</p>



<h3 class="wp-block-heading"><span id="toc4">見つからないときの表示を決める（第4引数）</span></h3>



<p class="wp-block-paragraph">存在しない社員番号を検索してみます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E999&quot;, A2:A6, B2:B6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">「E999」はマスタにないため、結果は「該当なし」。第4引数を省略した場合は <code>#N/A</code> が返ります。</p>



<p class="wp-block-paragraph">VLOOKUPでは、この処理を<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で丸ごと包む必要がありました。XLOOKUPなら引数ひとつで済むので、数式がぐっと短くなります。</p>



<p class="wp-block-paragraph">「そもそもXLOOKUPに乗り換えるべきか」で迷っている段階かもしれません。その場合は先に<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド</a>を読むほうが早道です。この記事は「使うと決めた人が、動く数式を書き上げる」ための解説になります。</p>



<h2 class="wp-block-heading"><span id="toc5">自分のシートで書く：範囲の指定はここでつまずく</span></h2>



<p class="wp-block-paragraph">構文を覚えても、自分のシートに当てはめた瞬間に手が止まる。その原因はほぼ<strong>範囲の指定</strong>にあります。</p>



<p class="wp-block-paragraph">実務のマスタは、同じシートに置いてあるとは限りません。別シート、別ブック、テーブル。パターンごとに書き方を押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">同じシートのマスタを参照する</span></h3>



<p class="wp-block-paragraph">同じシート内なら、範囲をそのまま指定するだけです。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$200, $B$2:$B$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph"><code>$</code> を付けているのは、数式を下方向にコピーしても範囲がずれないようにするため。範囲を選んでから <strong>F4キー</strong> を押すと、<code>$</code> が一括で付きます。</p>



<p class="wp-block-paragraph">検索値の <code>F2</code> には <code>$</code> を付けません。行ごとに違う値を探したいので、ここは相対参照のままにしておきます。</p>



<h3 class="wp-block-heading"><span id="toc7">別シートのマスタを参照する（シート名!範囲の書き方）</span></h3>



<p class="wp-block-paragraph">別シートを参照するときは、範囲の前に <code>シート名!</code> を付けます。シート名が「社員マスタ」なら次のとおり。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, 社員マスタ!$A$2:$A$200, 社員マスタ!$B$2:$B$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">検索範囲と戻り範囲の両方に、シート名が必要です。片方だけに付けると、もう片方は数式を書いているシートを見にいってしまいます。ここは見落としやすいので気をつけてください。</p>



<p class="wp-block-paragraph">入力のコツはひとつだけ。数式を書いている途中で<strong>シート見出しをクリックし、そのまま範囲をドラッグする</strong>と、シート名込みで自動入力されます。手打ちより確実ですよ。</p>



<h3 class="wp-block-heading"><span id="toc8">シート名にスペースや記号が入っているとき</span></h3>



<p class="wp-block-paragraph">シート名に半角スペースや記号が含まれる場合、シート名をシングルクォート <code>'</code> で囲む必要があります。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, '社員 マスタ'!$A$2:$A$200, '社員 マスタ'!$B$2:$B$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">囲みが必要になるのは、たとえば次のようなシート名。</p>



<ul class="wp-block-list"><li>半角スペースを含む（<code>社員 マスタ</code>）</li><li>ハイフンやカッコを含む（<code>社員-マスタ</code>、<code>マスタ(2026)</code>）</li><li>数字から始まる（<code>2026年度マスタ</code>）</li></ul>



<p class="wp-block-paragraph">これもマウスで範囲選択すれば、Excelが自動でクォートを付けてくれます。手打ちしてエラーを出すくらいなら、クリックで入れるほうが安全でしょう。</p>



<h3 class="wp-block-heading"><span id="toc9">別ブックのマスタを参照するときの注意</span></h3>



<p class="wp-block-paragraph">別のExcelファイルにあるマスタを参照する場合は、ブック名を角カッコで囲みます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, '[社員マスタ.xlsx]名簿'!$A$2:$A$200, '[社員マスタ.xlsx]名簿'!$B$2:$B$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">ここでの鉄則は、<strong>参照先のブックを開いた状態で数式を作る</strong>こと。開いていればマウスで範囲を選べるので、書式を間違えません。</p>



<p class="wp-block-paragraph">参照先を閉じた状態での挙動は、情報源によって説明が分かれています。確実を期すなら、両方のブックを開いた状態で結果を確認しておきましょう。</p>



<p class="wp-block-paragraph">毎回開くのが面倒なら、マスタを同じブックの別シートにコピーしてしまう手もあります。運用としてはそのほうが安定します。</p>



<h3 class="wp-block-heading"><span id="toc10">テーブル（構造化参照）で書くと行が増えても直さなくていい</span></h3>



<p class="wp-block-paragraph">マスタを「テーブル」に変換しておくと、範囲を列名で指定できます。テーブルとは、Excelの「テーブルとして書式設定」で作る表のこと。行の増減に自動で追従してくれます。</p>



<p class="wp-block-paragraph">テーブル名が「社員マスタ」なら、こう書けます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, 社員マスタ[社員番号], 社員マスタ[氏名], &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">この書き方が便利なのは、マスタに行を追加したときです。<code>$A$2:$A$200</code> のような固定範囲だと、201行目を追加した瞬間に検索対象から漏れます。テーブルなら範囲が自動で広がるため、数式を直す必要がありません。</p>



<p class="wp-block-paragraph">列名で読めるので、他人が見ても意味が分かる。この読みやすさも見逃せないメリットですね。</p>



<h3 class="wp-block-heading"><span id="toc11">A:A の全列参照をやめたほうがいい理由</span></h3>



<p class="wp-block-paragraph"><code>A:A</code> のような全列参照は、書くのがラクなので使われがちです。ただし実務のシートでは避けたほうが無難。</p>



<p class="wp-block-paragraph">理由は主に2つあります。</p>



<ul class="wp-block-list"><li><strong>重くなる</strong>: Excelの1列は1,048,576行。<code>A:A&","&C:C</code> のような配列演算と組み合わせると、100万行超の配列を毎回作ることになります</li><li><strong>余計な行を巻き込む</strong>: 表の下に「合計」行や集計メモがあると、それも検索対象に入ってしまいます</li></ul>



<p class="wp-block-paragraph">行数を区切った範囲か、テーブル参照。このどちらかにしておけば、ファイルが重くなる原因をひとつ減らせます。</p>



<h2 class="wp-block-heading"><span id="toc12">エラーは出ないのに結果が変：症状別の切り分け早見表</span></h2>



<p class="wp-block-paragraph">ここからが本題です。XLOOKUPで本当に困るのは、<code>#N/A</code> のようなエラーではありません。<strong>エラーが出ないまま、値だけが間違っている</strong>状態です。</p>



<p class="wp-block-paragraph">まずは早見表で、自分の症状を探してみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">【早見表】症状 → 起きていること → 30秒でできる確認 → 対処</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>起きていること</th><th>30秒でできる確認</th><th>対処</th></tr></thead><tbody><tr><td>空欄のはずが <code>0</code> になる</td><td>戻り範囲の空セルを参照している</td><td>参照先のセルをクリックして中身を見る</td><td>戻り範囲を <code>IF(範囲="","",範囲)</code> で包む</td></tr><tr><td>日付が5桁の数字になる</td><td>結果セルの表示形式が「標準」のまま</td><td>結果セルの表示形式を確認する</td><td>表示形式を「短い日付形式」に変える</td></tr><tr><td>更新したのに古い値が返る</td><td>同じキーが複数行あり、先頭の1件を返している</td><td><code>=COUNTIF(検索範囲, 検索値)</code> で件数を数える</td><td>第6引数に <code>-1</code> を指定する</td></tr><tr><td>数字なのに一致しない</td><td>文字列と数値・余分なスペース・全角半角の違い</td><td><code>=検索値セル=マスタ側セル</code> が <code>TRUE</code> か見る</td><td>TRIM／VALUE／ASC で揃える</td></tr><tr><td>1件しか返らない</td><td>XLOOKUPは該当1件だけを返す関数</td><td>上と同じ COUNTIF で2件以上あるか見る</td><td>FILTER関数に置き換える</td></tr><tr><td>コピーすると結果がずれる</td><td>範囲が相対参照のまま</td><td>ずれたセルの数式で範囲の行番号を見る</td><td>F4で <code>$</code> を付ける／テーブル参照にする</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この6つで、実務で出会う「変な結果」のかなりの部分をカバーできます。ここからは1つずつ詳しく見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc14">症状1：空欄のはずなのに0が返る</span></h3>



<p class="wp-block-paragraph">サンプルの社員マスタで、佐藤 健さん（E003）の内線は空欄でした。ここを引いてみます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E003&quot;, $A$2:$A$6, $D$2:$D$6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">期待するのは空欄。ところが結果は <strong><code>0</code></strong> になります。</p>



<p class="wp-block-paragraph">原因は「検索に失敗したから」ではありません。検索自体は成功していて、空のセルを参照した結果が <code>0</code> として返っているだけ。Excelの数式で空セルを参照したときに、よく知られた挙動です。</p>



<p class="wp-block-paragraph">つまり第4引数に <code>"該当なし"</code> をいくら指定しても、この <code>0</code> は消えません。ここが多くの人のハマりどころですね。</p>



<h3 class="wp-block-heading"><span id="toc15">症状1の対処3手と副作用の比較表</span></h3>



<p class="wp-block-paragraph">対処法は主に3つあります。どれも「0を消す」点では同じですが、<strong>残る副作用がまったく違います</strong>。</p>



<p class="wp-block-paragraph"><strong>手1：戻り範囲を IF で包む</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E003&quot;, $A$2:$A$6, IF($D$2:$D$6=&quot;&quot;, &quot;&quot;, $D$2:$D$6), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">戻り範囲の中身を先に判定し、空なら空文字列 <code>""</code> に置き換えてから返す形です。</p>



<p class="wp-block-paragraph"><strong>手2：数式の末尾に &#038;&#8221;&#8221; を付ける</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E003&quot;, $A$2:$A$6, $D$2:$D$6, &quot;該当なし&quot;)&amp;&quot;&quot;</code></pre>



<p class="wp-block-paragraph">いちばん短くて手軽。ただし次の表のとおり、副作用がいちばん大きい方法でもあります。</p>



<p class="wp-block-paragraph"><strong>手3：表示形式のユーザー定義で0を隠す</strong></p>



<p class="wp-block-paragraph">結果セルを選び、セルの書式設定からユーザー定義に <code>0;-0;;@</code> を設定します。<code>;</code> で区切られた4つの区画が、左から「正の数」「負の数」「ゼロ」「文字列」に対応しています。</p>



<p class="wp-block-paragraph">3つ目を空にすると、ゼロだけが画面に出なくなる仕組み。小数を表示したい列なら、<code>0.0;-0.0;;@</code> のように書き換えてください。</p>



<p class="wp-block-paragraph">3手を横並びで比較すると、選ぶ基準がはっきりします。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較軸</th><th>手1：IF で包む</th><th>手2：末尾に <code>&""</code></th><th>手3：表示形式 <code>0;-0;;@</code></th></tr></thead><tbody><tr><td>見た目</td><td>空欄になる</td><td>空欄になる</td><td>空欄に見える</td></tr><tr><td>返り値の型</td><td>空セルは空文字列。値があるセルは元の型のまま</td><td><strong>すべて文字列になる</strong>（数値も <code>"1210"</code> に）</td><td>変わらない（<code>0</code> が残る）</td></tr><tr><td>集計への影響</td><td>SUMは文字列を無視するので合計は正しい</td><td><strong>SUMの対象外になり合計が0になる</strong></td><td>0として集計に含まれ、AVERAGEが下がる</td></tr><tr><td>並べ替えへの影響</td><td>数値のまま並ぶ</td><td>文字列として並ぶため数値順にならない</td><td>数値のまま並ぶ</td></tr><tr><td>COUNTA での扱い</td><td>空文字列も1件と数えられる</td><td>1件と数えられる</td><td>1件と数えられる</td></tr><tr><td>複数列の取得</td><td>複数列の範囲でも同じ形で包める</td><td>同じく書けるが、全列が文字列になる</td><td>数式に手を入れないので影響なし</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">選び方の目安はこうです。</p>



<ul class="wp-block-list"><li>後で<strong>合計や並べ替えをする列</strong> → 手3（表示形式）が安全。値を壊しません</li><li>見た目だけ整えたい<strong>表示専用の列</strong> → 手1。合計も正しく出せます</li><li>手2の <code>&""</code> は、集計に使わない文字列項目に限定して使いましょう</li></ul>



<p class="wp-block-paragraph">ちなみに <code>&""</code> が便利に見えるのは、内線番号のような「数値だが計算しない項目」だから。金額や数量に使うと、後工程で合計が合わなくなります。</p>



<p class="wp-block-paragraph">なお「空白に見えるのに空白扱いされない」問題は、XLOOKUPに限った話ではありません。空白セルの5パターンを診断した<a href="https://mashukabu.com/excel-blank-cell-not-counted/">Excelで空白に見えるのに空白判定されない原因と対処法</a>もあります。あわせて読むと、原因の切り分けが一気にラクになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">症状2：日付を引いたら5桁の数字になった</span></h3>



<p class="wp-block-paragraph">鈴木 花子さん（E002）の入社日を引いてみます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E002&quot;, $A$2:$A$6, $E$2:$E$6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">マスタの表示は「2020/10/1」。ところが結果セルには <strong>44105</strong> と出ます。</p>



<p class="wp-block-paragraph">これは壊れているわけではありません。Excelは日付を「シリアル値」という連番で管理しています。</p>



<p class="wp-block-paragraph">2020年10月1日を数値に直すと 44105。中身は正しく、<strong>表示形式だけが「標準」のまま</strong>という状態です。</p>



<p class="wp-block-paragraph"><strong>方法1：結果セルの表示形式を変える</strong></p>



<p class="wp-block-paragraph">ホームタブの数値グループで、表示形式を「短い日付形式」に変更します。これがいちばん素直な直し方。値も日付のまま保たれます。</p>



<p class="wp-block-paragraph"><strong>方法2：TEXT関数で書式を固定する</strong></p>



<pre class="wp-block-code"><code>=TEXT(XLOOKUP(&quot;E002&quot;, $A$2:$A$6, $E$2:$E$6), &quot;yyyy/m/d&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「2020/10/1」になります。ただしTEXT関数の戻り値は文字列です。</p>



<p class="wp-block-paragraph">そのセルを使って日数計算をするとうまくいきません。日付として使い続けるなら、方法1を選んでください。</p>



<h3 class="wp-block-heading"><span id="toc17">症状3：更新したのに古い行の値が返ってくる</span></h3>



<p class="wp-block-paragraph">受注履歴や更新ログのように、<strong>同じキーが何度も登場する表</strong>で起きる症状です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$200, $C$2:$C$200, &quot;履歴なし&quot;)</code></pre>



<p class="wp-block-paragraph">新しい行を追記したのに、返ってくるのは古い値のまま。原因は検索モード（第6引数）の既定値にあります。</p>



<p class="wp-block-paragraph">既定は <code>1</code>、つまり先頭から末尾に向かって探す動作。最初に見つかった1件を返すため、下に追記していく表ではいちばん上の古い行が拾われてしまいます。</p>



<p class="wp-block-paragraph">対処はかんたんで、第6引数に <code>-1</code> を指定するだけ。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$200, $C$2:$C$200, &quot;履歴なし&quot;, 0, -1)</code></pre>



<p class="wp-block-paragraph"><code>-1</code> は末尾から先頭に向かって検索する指定です。第6引数を使うときは、手前の第5引数の位置を飛ばせません。<code>0</code>（完全一致）も一緒に書いておきましょう。</p>



<p class="wp-block-paragraph">値ではなく「何行目にあるか」を取りたい場面もありますよね。その場合は<a href="https://mashukabu.com/excel-function-howto-use-xmatch/">ExcelのXMATCH関数の使い方</a>が使えます。XMATCHにも同じ検索モードがあるため、考え方はそのまま応用できますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">症状4：数字に見えるのに一致しない</span></h3>



<p class="wp-block-paragraph">見た目はどう見ても同じ「1001」。なのに <code>#N/A</code> が返る、あるいは想定と違う行が返る。この症状の正体は、ほぼ<strong>型かスペース</strong>です。</p>



<p class="wp-block-paragraph">30秒でできる確認から始めましょう。空いたセルに次の式を入れます。</p>



<pre class="wp-block-code"><code>=F2=$A$2</code></pre>



<p class="wp-block-paragraph"><code>FALSE</code> なら、見た目が同じでも中身は別物という証拠。さらに <code>=LEN(F2)</code> と <code>=LEN(A2)</code> の文字数を比べると、余分なスペースの有無まで分かります。</p>



<p class="wp-block-paragraph">原因別の対処を整理しておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>見分け方</th><th>対処</th></tr></thead><tbody><tr><td>文字列と数値の混在</td><td>セル内で左寄せ（文字列）か右寄せ（数値）か</td><td>VALUE関数で数値に統一する</td></tr><tr><td>前後に半角スペース</td><td>LEN関数の文字数がマスタ側と違う</td><td>TRIM関数で除去する</td></tr><tr><td>全角スペースが混入</td><td>TRIMをかけても文字数が減らない</td><td>SUBSTITUTE関数で全角スペースを削除する</td></tr><tr><td>全角と半角の混在</td><td>「１００１」と「1001」が並んでいる</td><td>ASC関数で半角に統一する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここで見落としやすいのが3行目。<strong>TRIM関数が消せるのは半角スペースだけ</strong>で、全角スペースはそのまま残ります。TRIMをかけたのに直らないときは、全角スペースを疑ってください。</p>



<p class="wp-block-paragraph">各関数の詳しい使い方は、<a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数の使い方</a>と<a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数の使い方</a>で確認できます。マスタ側を一括でクリーニングしてから検索する。これがいちばん後腐れのない直し方です。</p>



<h3 class="wp-block-heading"><span id="toc19">症状5：1件しか返らない／2件目以降が出てこない</span></h3>



<p class="wp-block-paragraph">「営業部の人を全員出したい」。この用途でXLOOKUPを使うと、必ず1件しか返りません。</p>



<p class="wp-block-paragraph">これはバグでも設定ミスでもなく、仕様です。XLOOKUPは条件に合う<strong>1件を特定して返す関数</strong>。該当が10件あっても、返すのは1件だけ。</p>



<p class="wp-block-paragraph">複数件を並べたいなら、そもそも使う関数が違います。</p>



<pre class="wp-block-code"><code>=FILTER($B$2:$B$200, $C$2:$C$200=&quot;営業部&quot;, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">FILTER関数なら、条件に合う行をすべて縦に並べて返してくれます。詳しい書き方は<a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER関数の使い方</a>にまとめました。</p>



<p class="wp-block-paragraph">「1件でいいが、最新の1件がほしい」なら症状3の <code>-1</code>。「全部ほしい」ならFILTER。この使い分けを覚えておくと迷いません。</p>



<h3 class="wp-block-heading"><span id="toc20">症状6：数式をコピーすると結果がずれる</span></h3>



<p class="wp-block-paragraph">1行目のセルは正しいのに、下にコピーすると結果がおかしくなる。犯人は<strong>相対参照</strong>です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, A2:A6, B2:B6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">この式を1行下にコピーすると、範囲まで一緒に動いて <code>A3:A7</code> と <code>B3:B7</code> に変わります。検索対象が1行ずつ削られていくため、下の行ほど <code>#N/A</code> や違う値が増えていくわけです。</p>



<p class="wp-block-paragraph">確認は10秒で終わります。おかしくなったセルをダブルクリックし、範囲の行番号が動いていないか見るだけ。</p>



<p class="wp-block-paragraph">対処は2択です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$6, $B$2:$B$6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">ひとつは、範囲を選んで <strong>F4キー</strong> を押し、<code>$</code> で固定する方法。もうひとつは、先に紹介したテーブル参照に切り替える方法です。テーブル参照なら <code>$</code> を付ける必要すらありません。</p>



<h2 class="wp-block-heading"><span id="toc21">エラーが表示されるときの対処（#N/A・#VALUE!・#SPILL!・#REF!）</span></h2>



<p class="wp-block-paragraph">ここまでは「エラーが出ない」症状でした。ここからは、はっきりエラーが表示されるケースを片付けていきます。</p>



<h3 class="wp-block-heading"><span id="toc22">#N/A：見つからない（第4引数で表示を制御する）</span></h3>



<p class="wp-block-paragraph"><code>#N/A</code> は「検索値が見つからなかった」という意味のエラーです。まずは第4引数で、表示そのものを制御しましょう。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$200, $B$2:$B$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">ただし表示を変えるのと、原因をつぶすのは別の話。本当に存在しないのか、それとも症状4の型・スペース問題なのか。ここは切り分けておく必要があります。</p>



<p class="wp-block-paragraph">検索値が空欄のときにも <code>#N/A</code> は出ます。入力前の行まで「該当なし」で埋まるのが気になるなら、<code>""</code> を指定して空欄に見せる手もありますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">#VALUE!：検索範囲と戻り範囲のサイズが合っていない</span></h3>



<p class="wp-block-paragraph">検索範囲と戻り範囲の行数がそろっていないと <code>#VALUE!</code> になります。</p>



<pre class="wp-block-code"><code>=XLOOKUP(A2, B2:B100, C2:C50)</code></pre>



<p class="wp-block-paragraph">検索範囲 <code>B2:B100</code> は99行、戻り範囲 <code>C2:C50</code> は49行。行数が違うため、どの行を返せばいいのか決まりません。両方の開始行と終了行をそろえれば解消します。</p>



<p class="wp-block-paragraph">マウスでドラッグして範囲を選び直すのが確実。手打ちで行番号を直すと、また別のずれを生みがちですから。</p>



<h3 class="wp-block-heading"><span id="toc24">#SPILL!：結果を書き出す先が空いていない</span></h3>



<p class="wp-block-paragraph">戻り範囲に複数列を指定すると、結果は隣のセルへ自動的にあふれ出ます。これがスピル（1つの数式の結果が複数のセルに展開される動き）です。</p>



<p class="wp-block-paragraph">そのあふれ先にすでにデータが入っていると <code>#SPILL!</code> になります。対処は、展開先のセルを空けるだけ。</p>



<p class="wp-block-paragraph">もうひとつ、テーブルの中に置いた数式もつまずきます。Excelはテーブル内でのスピルをサポートしていないため、複数列を返す数式はテーブルの外のセルに置くのが原則。</p>



<p class="wp-block-paragraph">テーブル内で <code>#SPILL!</code> が出たら、まず同じ数式をテーブルの外へ移して確かめてみてください。</p>



<h3 class="wp-block-heading"><span id="toc25">#REF!：参照していた行・列が消えた</span></h3>



<p class="wp-block-paragraph"><code>#REF!</code> は参照先が失われたときのエラーです。マスタの列を削除した、シートごと消した。こうした操作が引き金になります。</p>



<p class="wp-block-paragraph">XLOOKUPは列番号を使わないため、VLOOKUPより参照崩れには強い設計。それでも参照先そのものが消えれば、当然エラーになります。</p>



<p class="wp-block-paragraph">直前の操作を元に戻すのが最短ルート。原因の切り分け方は<a href="https://mashukabu.com/excel-reference-formula-errors/">Excel参照エラーの直し方</a>にまとめてあります。</p>



<h3 class="wp-block-heading"><span id="toc26">#NAME? が出た場合</span></h3>



<p class="wp-block-paragraph"><code>#NAME?</code> はXLOOKUPに対応していないバージョンで開いたときに出ます。数式の書き方ではなく、環境の問題。</p>



<p class="wp-block-paragraph">原因と対処の詳細は<a href="https://mashukabu.com/excel-xlookup-filter-name-error-version/">ExcelのXLOOKUP・FILTERが使えない・#NAME?の原因と対処</a>にまとめているので、そちらをご覧ください。</p>



<p class="wp-block-paragraph">ここまでで扱っていないエラー値に出会ったら、<a href="https://mashukabu.com/excel-error-value-list/">Excelエラー値12種類の原因と対処法一覧</a>から探すのが早道です。</p>



<h2 class="wp-block-heading"><span id="toc27">XLOOKUPだから書ける使い方6パターン</span></h2>



<p class="wp-block-paragraph">基本とトラブル対処を押さえたら、次は「VLOOKUPでは書けなかった形」に進みましょう。ここがXLOOKUPを使う本当のメリットです。</p>



<h3 class="wp-block-heading"><span id="toc28">1. 左側の列を引く（VLOOKUPでは書けなかった形）</span></h3>



<p class="wp-block-paragraph">氏名から社員番号を引く、つまり右の列で探して左の列を返すパターン。VLOOKUP単体では不可能でした。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $B$2:$B$6, $A$2:$A$6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">検索範囲と戻り範囲を入れ替えるだけ。左でも右でも書き方は変わりません。マスタの列順を気にしなくてよくなるのは、地味ですが効きます。</p>



<h3 class="wp-block-heading"><span id="toc29">2. 1本の数式で複数列をまとめて取り出す</span></h3>



<p class="wp-block-paragraph">氏名・部署・内線を横並びで取り出したいケースです。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$6, $B$2:$D$6, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">F2に「E004」が入っていれば、「高橋 圭」「営業部」「1210」の3つが横3セルに展開されます。VLOOKUPなら列番号を変えた数式を3本並べる必要がありました。</p>



<p class="wp-block-paragraph">展開先のセルは空けておきましょう。埋まっていると <code>#SPILL!</code> になります。</p>



<h3 class="wp-block-heading"><span id="toc30">3. 重複がある表から一番下（最新）の行を取り出す</span></h3>



<p class="wp-block-paragraph">症状3で扱った検索モード <code>-1</code> は、応用としても使えます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2, $A$2:$A$200, $C$2:$C$200, &quot;履歴なし&quot;, 0, -1)</code></pre>



<p class="wp-block-paragraph">追記型の履歴シートから最新の1件を拾う、定番の書き方。並べ替えも補助列も不要です。</p>



<h3 class="wp-block-heading"><span id="toc31">4. 「以上・以下」で近い値を探す（一致モード -1 / 1）</span></h3>



<p class="wp-block-paragraph">送料テーブルのような「しきい値表」との照合です。次の表を想定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（購入金額の下限）</th><th>B列（送料）</th></tr></thead><tbody><tr><td>2行目</td><td>0</td><td>800</td></tr><tr><td>3行目</td><td>3000</td><td>500</td></tr><tr><td>4行目</td><td>5000</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">購入金額4,200円の送料を求めてみましょう。</p>



<pre class="wp-block-code"><code>=XLOOKUP(4200, $A$2:$A$4, $B$2:$B$4, &quot;&quot;, -1)</code></pre>



<p class="wp-block-paragraph">4200に完全一致する行はありません。一致モード <code>-1</code> は「なければ次に小さい項目」を拾います。そのため3000の行がヒットし、結果は <strong>500</strong> になります。</p>



<p class="wp-block-paragraph">逆に <code>1</code> を指定すると「次に大きい項目」を探します。しきい値表は下限値の昇順に並べて作っておくと、結果の確認がラクですよ。</p>



<p class="wp-block-paragraph">なお、検索モード（第6引数）の <code>2</code> / <code>-2</code> は別物です。こちらは並べ替え済みのデータが前提。</p>



<p class="wp-block-paragraph">公式にも「並べ替えられていない場合、無効な結果になる」と明記されています。ソートに自信がなければ、既定の <code>1</code> のままにしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc32">5. ワイルドカードで部分一致検索する（一致モード 2）</span></h3>



<p class="wp-block-paragraph">「東京を含む住所」のような部分一致には、一致モード <code>2</code> を使います。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;*東京*&quot;, $A$2:$A$100, $B$2:$B$100, &quot;該当なし&quot;, 2)</code></pre>



<p class="wp-block-paragraph">検索キーワードをセルから受け取る形にすると、実務で使いやすくなります。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;*&quot;&amp;F2&amp;&quot;*&quot;, $A$2:$A$100, $B$2:$B$100, &quot;該当なし&quot;, 2)</code></pre>



<p class="wp-block-paragraph">使える記号は3つ。</p>



<ul class="wp-block-list"><li><code>*</code>：任意の文字列（0文字以上）</li><li><code>?</code>：任意の1文字</li><li><code>~</code>：直後の <code>*</code> や <code>?</code> を、記号そのものとして扱う</li></ul>



<h3 class="wp-block-heading"><span id="toc33">6. 2つの条件を組み合わせて検索する</span></h3>



<p class="wp-block-paragraph">同姓同名が別々の部署にいる。そんなときに「部署と氏名の両方が一致する行」を探すパターンです。VLOOKUPでは補助列を作るしかありませんでした。</p>



<pre class="wp-block-code"><code>=XLOOKUP(F2&amp;&quot;／&quot;&amp;G2, $C$2:$C$200&amp;&quot;／&quot;&amp;$B$2:$B$200, $A$2:$A$200, &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">F2に部署、G2に氏名を入れる想定。検索値と検索範囲を、それぞれ同じ順番・同じ区切り文字で連結するのがコツです。</p>



<p class="wp-block-paragraph">区切り文字を挟むのには理由があります。区切りなしで連結すると、「AA」+「B」と「A」+「AB」がどちらも「AAB」になってしまう。別の行を誤ってヒットさせないための保険というわけです。</p>



<p class="wp-block-paragraph">この書き方は全列参照との相性が最悪です。<code>C:C&"／"&B:B</code> と書くと、100万行超の配列を毎回作ることになります。</p>



<p class="wp-block-paragraph">必ず行数を区切った範囲を指定してください。うまく結果が出ないときは、まず範囲を数百行まで絞って試すのが近道でしょう。</p>



<h2 class="wp-block-heading"><span id="toc34">VLOOKUPからの書き換え早見表（4パターン）</span></h2>



<p class="wp-block-paragraph">手元のVLOOKUP数式を書き換えるときの対応表です。VLOOKUP側の引数をもう一度確認したい方へ。先に<a href="https://mashukabu.com/excel-function-howto-use-vlookup/">ExcelのVLOOKUP関数の使い方</a>を開いておくと読みやすくなります。</p>



<p class="wp-block-paragraph">前提のデータはこれまでと同じ。A列＝社員番号、B列＝氏名、C列＝部署、D列＝内線です。検索値はF2セルに入れる想定で読み進めてください。</p>



<h3 class="wp-block-heading"><span id="toc35">パターン1：単純な置き換え</span></h3>



<p class="wp-block-paragraph">社員番号から氏名を引く、最も多い形。</p>



<p class="wp-block-paragraph"><strong>Before（VLOOKUP）</strong></p>



<pre class="wp-block-code"><code>=VLOOKUP($F2, $A$2:$C$200, 2, FALSE)</code></pre>



<p class="wp-block-paragraph"><strong>After（XLOOKUP）</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$B$200)</code></pre>



<p class="wp-block-paragraph">列番号の <code>2</code>（A列から数えて2列目＝B列）が、戻り範囲 <code>$B$2:$B$200</code> に置き換わります。完全一致を指定する <code>FALSE</code> も不要。XLOOKUPは既定が完全一致だからです。</p>



<h3 class="wp-block-heading"><span id="toc36">パターン2：左方向の検索に置き換える</span></h3>



<p class="wp-block-paragraph">氏名から社員番号を引く形。VLOOKUP単体では書けず、INDEX+MATCHを使っていた部分です。</p>



<p class="wp-block-paragraph"><strong>Before（INDEX+MATCH）</strong></p>



<pre class="wp-block-code"><code>=INDEX($A$2:$A$200, MATCH($F2, $B$2:$B$200, 0))</code></pre>



<p class="wp-block-paragraph"><strong>After（XLOOKUP）</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP($F2, $B$2:$B$200, $A$2:$A$200)</code></pre>



<p class="wp-block-paragraph">関数が2つから1つに減り、読む順番も自然になりました。</p>



<h3 class="wp-block-heading"><span id="toc37">パターン3：IFERROR で包んでいた式を第4引数に統合する</span></h3>



<p class="wp-block-paragraph">見つからないときに空欄を返す処理です。</p>



<p class="wp-block-paragraph"><strong>Before（VLOOKUP＋IFERROR）</strong></p>



<pre class="wp-block-code"><code>=IFERROR(VLOOKUP($F2, $A$2:$C$200, 2, FALSE), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>After（XLOOKUP）</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$B$200, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">外側の包みが消えて、第4引数に収まりました。</p>



<p class="wp-block-paragraph">ひとつ違いがあります。IFERRORは<strong>あらゆるエラーを握りつぶす</strong>のに対し、第4引数が受け持つのは「見つからない場合」だけ。範囲サイズの不一致による <code>#VALUE!</code> などは、そのまま表示されます。</p>



<p class="wp-block-paragraph">これはむしろメリットでしょう。本当の設定ミスが隠れずに見つかりますからね。</p>



<h3 class="wp-block-heading"><span id="toc38">パターン4：複数列を1本の数式にまとめる</span></h3>



<p class="wp-block-paragraph">氏名・部署・内線を、それぞれ別の数式で引いていたケースです。</p>



<p class="wp-block-paragraph"><strong>Before（VLOOKUP・3本必要）</strong></p>



<pre class="wp-block-code"><code>=VLOOKUP($F2, $A$2:$D$200, 2, FALSE)
=VLOOKUP($F2, $A$2:$D$200, 3, FALSE)
=VLOOKUP($F2, $A$2:$D$200, 4, FALSE)</code></pre>



<p class="wp-block-paragraph"><strong>After（XLOOKUP・1本）</strong></p>



<pre class="wp-block-code"><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$D$200)</code></pre>



<p class="wp-block-paragraph">列番号2・3・4が、そのまま戻り範囲 <code>$B$2:$D$200</code>（B列・C列・D列）に対応します。数式が1本になるので、修正箇所も1か所で済みます。</p>



<p class="wp-block-paragraph">4パターンをまとめておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>パターン</th><th>Before</th><th>After</th><th>変わるポイント</th></tr></thead><tbody><tr><td>1. 単純置換</td><td><code>=VLOOKUP($F2, $A$2:$C$200, 2, FALSE)</code></td><td><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$B$200)</code></td><td>列番号 → 戻り範囲。<code>FALSE</code> 不要</td></tr><tr><td>2. 左方向</td><td><code>=INDEX($A$2:$A$200, MATCH($F2, $B$2:$B$200, 0))</code></td><td><code>=XLOOKUP($F2, $B$2:$B$200, $A$2:$A$200)</code></td><td>関数2つ → 1つ</td></tr><tr><td>3. IFERROR統合</td><td><code>=IFERROR(VLOOKUP($F2, $A$2:$C$200, 2, FALSE), "")</code></td><td><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$B$200, "")</code></td><td>包み → 第4引数</td></tr><tr><td>4. 複数列</td><td>数式3本（列番号2・3・4）</td><td><code>=XLOOKUP($F2, $A$2:$A$200, $B$2:$D$200)</code></td><td>3本 → 1本にスピル</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">なお、既存のVLOOKUPをどこまで書き換えるかという判断は、この記事では扱っていません。選び方は<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド</a>にフロー形式でまとめています。</p>



<h2 class="wp-block-heading"><span id="toc39">よくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc40">XLOOKUPは古いExcelで開くとどうなりますか？</span></h3>



<p class="wp-block-paragraph"><code>#NAME?</code> エラーになります。Excel 2016 と Excel 2019 はXLOOKUPに対応していないためです。</p>



<p class="wp-block-paragraph">なお Office 2016 と Office 2019 は、2025年10月14日に延長サポートを終了しました。アプリ自体は動きますが、セキュリティ更新やバグ修正はもう提供されません。原因の詳しい仕組みは、前章の「#NAME? が出た場合」で紹介した記事をご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc41">VLOOKUPは全部XLOOKUPに書き換えるべきですか？</span></h3>



<p class="wp-block-paragraph">困っていないなら、急いで書き換える必要はありません。新しく作る数式からXLOOKUPに切り替えるだけでも十分に効果があります。</p>



<p class="wp-block-paragraph">判断の基準はバージョン・共有相手・用途の3点。<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド</a>で確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc42">XLOOKUPとINDEX+MATCHはどちらが速いですか？</span></h3>



<p class="wp-block-paragraph">一概には言えません。体感速度は表の大きさや数式の本数、参照範囲の広さで大きく変わります。</p>



<p class="wp-block-paragraph">それよりも効くのが範囲の指定です。<code>A:A</code> の全列参照をやめて必要な行数に絞るほうが、関数を選び直すより効いてきますよ。</p>



<h3 class="wp-block-heading"><span id="toc43">Googleスプレッドシートでも同じように使えますか？</span></h3>



<p class="wp-block-paragraph">スプレッドシートにもXLOOKUP関数があり、引数の構成はExcelとほぼ同じです。ただし細かい挙動や関連関数の対応状況には差があります。</p>



<p class="wp-block-paragraph">Sheets側の書き方は<a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方</a>にまとめてあります。</p>



<h3 class="wp-block-heading"><span id="toc44">0の代わりに空欄にすると、後で合計できなくなりませんか？</span></h3>



<p class="wp-block-paragraph"><code>IF(範囲="","",範囲)</code> 方式なら、SUM関数は文字列を無視するので合計は正しく出ます。ただし COUNTA では1件として数えられる点に注意。</p>



<p class="wp-block-paragraph">集計や並べ替えを重視するなら、値を <code>0</code> のまま残す表示形式方式（<code>0;-0;;@</code>）が安全です。詳しくは症状1の比較表を見返してみてください。</p>



<h2 class="wp-block-heading"><span id="toc45">まとめ</span></h2>



<p class="wp-block-paragraph">ExcelのXLOOKUP関数の要点を振り返ります。</p>



<ul class="wp-block-list"><li>基本は <code>=XLOOKUP(検索値, 検索範囲, 戻り範囲)</code> の3引数。列番号を数える必要はない</li><li>別シートは <code>シート名!範囲</code>、シート名に空白や記号があれば <code>'</code> で囲む</li><li><code>A:A</code> の全列参照は重くなるので、行数を区切るかテーブル参照にする</li><li>空欄が <code>0</code> になるのは検索の失敗ではない。対処法は3つあり、副作用が違う</li><li>日付が5桁の数字になるのは表示形式の問題。値は壊れていない</li><li>古い行が返るなら第6引数に <code>-1</code>、複数件ほしいならFILTER関数</li></ul>



<p class="wp-block-paragraph">XLOOKUPでつまずく原因は、関数そのものより<strong>範囲の指定と表示形式</strong>にあることがほとんど。エラーが出ないまま結果が変なときは、この記事の早見表から症状を探してみてください。</p>



<p class="wp-block-paragraph">まずは1本、別シートのマスタを参照する数式を書いてみましょう。そこが動けば、残りは応用でつながっていきますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-xlookup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
