<?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>XMATCH関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/xmatch%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Mon, 18 May 2026 14:04:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>XMATCH関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのXMATCH関数の使い方｜MATCHとの違い・逆方向検索まで解説</title>
		<link>https://mashukabu.com/spreadsheet-xmatch-function/</link>
					<comments>https://mashukabu.com/spreadsheet-xmatch-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:28:53 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[INDEX+XMATCH]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[XMATCH関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[検索関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4725</guid>

					<description><![CDATA[スプレッドシートのXMATCH関数の使い方を基本から解説。MATCH関数との違いを比較表で整理し、一致モード4種・検索モード4種の使い分け、逆方向検索・ワイルドカード・バイナリサーチの活用法、INDEX+XMATCHの組み合わせまで網羅。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで <a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a> を使っていて、「末尾から検索できたらラクなのに」と思ったことはありませんか？日報や作業ログのように下へ追記していく台帳で、同じ担当者名が並んでいると、最新（最後）のエントリだけ拾いたいのに先頭側がヒットしてしまいますよね。</p>



<p class="wp-block-paragraph">そんなときに頼りになるのが <strong>XMATCH関数</strong> です。MATCH関数の上位互換にあたる検索系関数で、<strong>逆方向検索・ワイルドカード専用モード・並べ替え不要の近似一致・バイナリサーチ・正規表現</strong>まで、MATCHにはない機能が一通り揃っています。</p>



<p class="wp-block-paragraph">この記事では、XMATCH関数の構文と引数の基本から、一致モード4種・検索モード4種の早見表、実務シーン別の応用例（最新ロット取得・INDEX+XMATCHで左方向検索・行列クロス検索・IFERRORでエラー回避）、MATCH関数との比較表、よくあるエラーの対処法までまとめて解説します。MATCH関数からの乗り換えを検討している方はもちろん、INDEX+MATCHの式に慣れている方ほど効果を実感しやすい関数ですよ。</p>




  <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">スプレッドシートのXMATCH関数とは？MATCHの上位互換にあたる位置検索関数</a><ol><li><a href="#toc2" tabindex="0">XMATCH関数で何ができる？</a></li><li><a href="#toc3" tabindex="0">XMATCH関数とMATCH関数の違い（ざっくり）</a></li></ol></li><li><a href="#toc4" tabindex="0">XMATCH関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li><li><a href="#toc7" tabindex="0">一致モード5種の早見表</a></li><li><a href="#toc8" tabindex="0">検索モード4種の早見表</a></li></ol></li><li><a href="#toc9" tabindex="0">XMATCH関数の基本的な使い方</a><ol><li><a href="#toc10" tabindex="0">完全一致で位置を取得する（一致モード 0）</a></li><li><a href="#toc11" tabindex="0">ワイルドカードで部分一致検索する（一致モード 2）</a></li><li><a href="#toc12" tabindex="0">近似一致で最も近い値を取得する（一致モード -1 / 1）</a></li><li><a href="#toc13" tabindex="0">正規表現で柔軟に一致させる（一致モード 3・スプレッドシート独自）</a></li></ol></li><li><a href="#toc14" tabindex="0">XMATCH関数の実践的な使い方・応用例</a><ol><li><a href="#toc15" tabindex="0">逆方向検索で最新データの位置を取得する</a></li><li><a href="#toc16" tabindex="0">INDEX+XMATCHで左方向の列を検索する</a></li><li><a href="#toc17" tabindex="0">INDEX+XMATCHで行列クロス検索する</a></li><li><a href="#toc18" tabindex="0">IFERRORと組み合わせてエラーを防ぐ</a></li><li><a href="#toc19" tabindex="0">バイナリサーチで大量データを高速検索する</a></li><li><a href="#toc20" tabindex="0">実務シナリオ: 在庫表で最新ロットの位置を取得する</a></li></ol></li><li><a href="#toc21" tabindex="0">XMATCH関数のよくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">#N/Aエラー（検索値が見つからない）の対処法</a></li><li><a href="#toc23" tabindex="0">#VALUE!エラー（範囲指定が不正）の対処法</a></li><li><a href="#toc24" tabindex="0">大文字小文字・全角半角の表記ゆれ対策</a></li></ol></li><li><a href="#toc25" tabindex="0">XMATCH関数とMATCH関数の違い・使い分け</a><ol><li><a href="#toc26" tabindex="0">MATCH→XMATCHへの書き換え（Before/After）</a></li><li><a href="#toc27" tabindex="0">どちらを選ぶべき？シーン別の判断基準</a></li><li><a href="#toc28" tabindex="0">XMATCH関数とXLOOKUP関数の使い分け</a></li><li><a href="#toc29" tabindex="0">INDEX+MATCHとの違い</a></li></ol></li><li><a href="#toc30" tabindex="0">まとめ：XMATCH関数で位置検索を一段ラクにする</a><ol><li><a href="#toc31" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのXMATCH関数とは？MATCHの上位互換にあたる位置検索関数</span></h2>



<p class="wp-block-paragraph">XMATCH関数（読み方: エックスマッチ関数）は、<strong>検索範囲から指定した値を探し、その値が何番目にあるかを数値で返す関数</strong>です。関数名の「X」はExtended（拡張）の意味で、<a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a> を強化した上位互換にあたります。位置番号を返す点はMATCHと同じですが、検索の方向や一致の仕方を細かく指定できるのが特徴です。</p>



<p class="wp-block-paragraph">たとえば部署列（C2:C6）から「総務部」が何番目にあるかを調べると、<code>=XMATCH("総務部", C2:C6)</code> で「3」が返ります。返るのは値そのものではなく、あくまで位置（インデックス）です。</p>



<h3 class="wp-block-heading"><span id="toc2">XMATCH関数で何ができる？</span></h3>



<p class="wp-block-paragraph">XMATCH関数が活躍するのは、おもに次のような場面です。</p>



<ul class="wp-block-list"><li>検索値が範囲の <strong>何番目にあるか</strong> を数値で取得したい（INDEX関数と組み合わせる前提のケース）</li><li>日報・作業ログなどの追記型データから <strong>最新のエントリ位置</strong> だけを拾いたい</li><li>検索列が範囲の左端にない表で、<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a> では届かない <strong>左方向の検索</strong> をしたい</li><li>大きな表で <strong>行と列の見出しを同時に検索</strong> して、クロス検索を組みたい</li><li>「ぴったり85点はないけれど80点台のランクは何位か」のような <strong>近似一致</strong> を、並べ替えなしで実現したい</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>XMATCH関数が返すのは「位置番号」であって値そのものではありません。値を直接取得したい場合は、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a> や <a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a> と組み合わせて使います。XMATCH関数は「位置」を返す部品として、INDEX関数との組み合わせで真価を発揮します。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc3">XMATCH関数とMATCH関数の違い（ざっくり）</span></h3>



<p class="wp-block-paragraph">詳しい比較は後半の「XMATCH関数とMATCH関数の違い・使い分け」で解説しますが、ざっくり押さえておきたい違いは次の3点です。</p>



<ul class="wp-block-list"><li><strong>デフォルトが完全一致</strong>（MATCHは近似一致）なので、引数の指定ミスが起きにくい</li><li><strong>逆方向検索（末尾から検索）が可能</strong> で、追記型の台帳と相性がよい</li><li><strong>近似一致でデータの並べ替えが不要</strong> になり、事前のソート作業が要らない</li></ul>



<h2 class="wp-block-heading"><span id="toc4">XMATCH関数の構文と引数</span></h2>



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



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



<pre class="wp-block-code"><code>=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])</code></pre>



<p class="wp-block-paragraph">引数は4つあります。第3引数（一致モード）と第4引数（検索モード）は省略可能で、省略時はそれぞれ「完全一致」「先頭から検索」になります。</p>



<h3 class="wp-block-heading"><span id="toc6">引数の説明</span></h3>



<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>&#8220;営業部&#8221;、E001、A1</td></tr><tr><td>検索範囲</td><td>必須</td><td>検索対象の <strong>1行または1列</strong> の範囲</td><td>A2:A6、B1:F1</td></tr><tr><td>一致モード</td><td>省略可</td><td>一致の判定方法（0, -1, 1, 2, 3）</td><td>0</td></tr><tr><td>検索モード</td><td>省略可</td><td>検索する方向（1, -1, 2, -2）</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">省略した場合は「先頭から完全一致で検索」という最もシンプルな動作になります。MATCH関数とは異なりデフォルトが完全一致なので、第3引数の書き忘れによる事故が起きにくいのがメリットです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>検索範囲には <strong>1行または1列</strong> だけを指定します。<code>A1:C5</code> のような2次元の範囲を渡すと <code>#VALUE!</code> エラーになります。複数列を横断して検索したい場合は、後述の「INDEX+XMATCHでクロス検索する」パターンを使いましょう。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc7">一致モード5種の早見表</span></h3>



<p class="wp-block-paragraph">一致モードは、検索値と範囲内の値をどう照合するかを決める引数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>一致モード</th><th>動作</th><th>データの並び順</th><th>主な用途</th></tr></thead><tbody><tr><td>0（デフォルト）</td><td><strong>完全一致</strong>。値がぴったり一致する位置を返す</td><td>不問</td><td>通常の検索</td></tr><tr><td>-1</td><td><strong>検索値以下の最大値</strong> の位置を返す</td><td>不問</td><td>価格帯・点数のランク判定</td></tr><tr><td>1</td><td><strong>検索値以上の最小値</strong> の位置を返す</td><td>不問</td><td>在庫の繰上げ判定</td></tr><tr><td>2</td><td><strong>ワイルドカード一致</strong>（<code>*</code>、<code>?</code>、<code>~</code> を使用）</td><td>不問</td><td>部分一致検索</td></tr><tr><td>3</td><td><strong>正規表現一致</strong>（スプレッドシート独自）</td><td>不問</td><td>複雑なパターン照合</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">MATCH関数の近似一致ではデータの並べ替えが必須でしたが、XMATCHなら並べ替え不要で近似一致ができます。一致モード3の正規表現は <strong>Googleスプレッドシート独自の拡張</strong> で、Excelには無い機能です。</p>



<h3 class="wp-block-heading"><span id="toc8">検索モード4種の早見表</span></h3>



<p class="wp-block-paragraph">検索モードは、範囲をどの方向から探すかを決める引数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>検索モード</th><th>動作</th><th>条件</th><th>主な用途</th></tr></thead><tbody><tr><td>1（デフォルト）</td><td><strong>先頭から検索</strong></td><td>不問</td><td>通常の検索</td></tr><tr><td>-1</td><td><strong>末尾から逆方向検索</strong></td><td>不問</td><td>最新エントリの取得</td></tr><tr><td>2</td><td><strong>昇順バイナリサーチ</strong></td><td>昇順にソート済み必須</td><td>大量データの高速検索</td></tr><tr><td>-2</td><td><strong>降順バイナリサーチ</strong></td><td>降順にソート済み必須</td><td>大量データの高速検索</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">通常は先頭から検索（1）で問題ありません。末尾から検索（-1）はXMATCH関数の目玉機能で、MATCH関数にはない便利な動作です。</p>



<h2 class="wp-block-heading"><span id="toc9">XMATCH関数の基本的な使い方</span></h2>



<p class="wp-block-paragraph">ここからは具体例で動きを見ていきます。以下の社員管理表（A1:D6）を使って説明します。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th><th>D</th></tr></thead><tbody><tr><td>1</td><td>社員番号</td><td>氏名</td><td>部署</td><td>役職</td></tr><tr><td>2</td><td>E001</td><td>田中太郎</td><td>営業部</td><td>課長</td></tr><tr><td>3</td><td>E002</td><td>鈴木花子</td><td>経理部</td><td>主任</td></tr><tr><td>4</td><td>E003</td><td>佐藤一郎</td><td>総務部</td><td>部長</td></tr><tr><td>5</td><td>E004</td><td>山田美咲</td><td>営業部</td><td>主任</td></tr><tr><td>6</td><td>E005</td><td>高橋健一</td><td>開発部</td><td>課長</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc10">完全一致で位置を取得する（一致モード 0）</span></h3>



<p class="wp-block-paragraph">部署列（C2:C6）の中で「総務部」が何番目にあるかを調べる、いちばんシンプルな使い方です。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;総務部&quot;, C2:C6)</code></pre>



<p class="wp-block-paragraph">結果は「3」になります。C2:C6 の中で「総務部」は C4 にあり、先頭から数えて3番目の位置だからです。</p>



<p class="wp-block-paragraph">一致モードを省略しても完全一致で検索してくれます。MATCH関数では <code>=MATCH("総務部", C2:C6, 0)</code> のように第3引数に <code>0</code> を書く必要がありましたが、XMATCHなら省略できる分シンプルです。</p>



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



<p class="wp-block-paragraph">部分一致で検索したいときは、一致モードに <code>2</code> を指定します。<code>*</code>（任意の文字列）と <code>?</code>（任意の1文字）が使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>ワイルドカード</th><th>意味</th><th>使用例</th></tr></thead><tbody><tr><td><code>*</code>（アスタリスク）</td><td>任意の文字列（0文字以上）</td><td><code>"*太郎"</code> → 太郎で終わる値</td></tr><tr><td><code>?</code>（クエスチョン）</td><td>任意の1文字</td><td><code>"E00?"</code> → E001〜E009</td></tr><tr><td><code>~</code>（チルダ）</td><td><code>*</code> や <code>?</code> 自体をエスケープ</td><td><code>"~<em>"</code> → <code></em></code> を検索</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば氏名列から「鈴木」で始まる人の位置を調べるには、こう書きます。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;鈴木*&quot;, B2:B6, 2)</code></pre>



<p class="wp-block-paragraph">結果は「2」です。B2:B6 の中で「鈴木花子」が2番目にあるため、その位置が返ります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>MATCH関数では完全一致モード（0）でワイルドカードが使えましたが、XMATCHではワイルドカード専用の一致モード（2）に分離されています。完全一致モード（0）のままだと <code><em></code> や <code>?</code> は <strong>ただの文字</strong> として扱われるので、<code>"鈴木</em>"</code> を検索しても #N/A になります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">近似一致で最も近い値を取得する（一致モード -1 / 1）</span></h3>



<p class="wp-block-paragraph">数値データに対して「ぴったり一致する値がなければ、近い値で代用する」モードです。</p>



<ul class="wp-block-list"><li><strong>-1（以下の最大値）</strong>: 検索値以下で最も大きい値の位置を返す</li><li><strong>1（以上の最小値）</strong>: 検索値以上で最も小さい値の位置を返す</li></ul>



<p class="wp-block-paragraph">たとえば、点数テーブル <code>{60, 70, 80, 90}</code> に対して85点のランクを調べたいとします。テーブルに85はありませんが、以下のように書けば80の位置が返ります。</p>



<pre class="wp-block-code"><code>=XMATCH(85, {60,70,80,90}, -1)</code></pre>



<p class="wp-block-paragraph">この式は「3」を返します。85以下の最大値は80で、テーブルの3番目だからです。逆に「85以上で最も小さい値」を取りたい場合は <code>=XMATCH(85, {60,70,80,90}, 1)</code> と書くと、90の位置である「4」が返ります。</p>



<p class="wp-block-paragraph">MATCH関数の近似一致ではデータの昇順・降順ソートが必須でしたが、XMATCHなら <strong>並べ替え不要</strong> で近似一致ができます。価格帯テーブルや評価テーブルのように、後から行を追加することがある表で特に便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">正規表現で柔軟に一致させる（一致モード 3・スプレッドシート独自）</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシート版のXMATCH関数には、Excelには無い <strong>正規表現一致モード（3）</strong> があります。<code>*</code> や <code>?</code> よりも複雑なパターンを書きたいときに使います。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;E00[1-3]&quot;, A2:A6, 3)</code></pre>



<p class="wp-block-paragraph"><code>E001</code>〜<code>E003</code> のいずれかにマッチする最初の位置を返します。上記の例では A2 の「E001」が最初に該当するので「1」が返ります。<code>[1-3]</code> は文字クラスで、<code>1</code> か <code>2</code> か <code>3</code> のいずれか1文字を表します。</p>



<p class="wp-block-paragraph">正規表現を使うと「3桁の数字で終わる商品コード」「特定の接頭辞＋数字」のような <strong>構造的な検索</strong> が一発で書けます。ただし正規表現に慣れていないと読みにくくなりがちなので、シンプルな部分一致ならワイルドカード（一致モード2）で十分です。</p>



<h2 class="wp-block-heading"><span id="toc14">XMATCH関数の実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc15">逆方向検索で最新データの位置を取得する</span></h3>



<p class="wp-block-paragraph">XMATCH関数の目玉機能が、<strong>逆方向検索（検索モード -1）</strong> です。末尾から先頭に向かって検索し、最初に見つかった位置を返します。</p>



<p class="wp-block-paragraph">これが活躍するのは、日報や作業ログのような <strong>追記型の台帳</strong> です。下へどんどん行を追加していくシートで、同じ担当者名が何度も登場するとき、「最新（最後）のエントリだけ拾いたい」というニーズに刺さります。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;田中太郎&quot;, B2:B100, 0, -1)</code></pre>



<p class="wp-block-paragraph">第3引数の <code>0</code> は完全一致、第4引数の <code>-1</code> が末尾からの逆方向検索です。MATCH関数では逆順検索ができなかったので、<code>MAX</code> と <code>IF</code> の配列数式を組み合わせるような回りくどい式が必要でした。XMATCHなら検索モードに <code>-1</code> を渡すだけで解決します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>逆方向検索でも返る値は <strong>「先頭からの位置番号」</strong> です。たとえば B2:B100 の80番目に該当データがあれば、検索方向に関係なく「80」が返ります。INDEX関数に渡せばそのまま該当行の値を取り出せるので、計算ロジックを変える必要はありません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">INDEX+XMATCHで左方向の列を検索する</span></h3>



<p class="wp-block-paragraph">XMATCH関数が最も活躍するのは、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a> と組み合わせる <strong>INDEX+XMATCH</strong> のパターンです。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a> は検索列が範囲の <strong>左端</strong> にある必要があり、左方向の検索ができません。一方、INDEX+XMATCHなら、検索列と戻り値の列を別々に指定できるので、左方向の検索も問題なく書けます。</p>



<p class="wp-block-paragraph">たとえば「営業部の社員の社員番号を知りたい」とします。部署（C列）で検索して、社員番号（A列）を返す数式です。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A6, XMATCH(&quot;営業部&quot;, C2:C6))</code></pre>



<p class="wp-block-paragraph">処理の流れは次のとおりです。</p>



<ol class="wp-block-list"><li><code>XMATCH("営業部", C2:C6)</code> → C2:C6 で「営業部」は1番目 → 「1」を返す</li><li><code>INDEX(A2:A6, 1)</code> → A2:A6 の1番目 → 「E001」を返す</li></ol>



<p class="wp-block-paragraph">検索範囲（C列）と戻り値の範囲（A列）を別々に指定できるため、左方向だけでなく <strong>離れた列同士</strong> の参照も自由自在です。</p>



<h3 class="wp-block-heading"><span id="toc17">INDEX+XMATCHで行列クロス検索する</span></h3>



<p class="wp-block-paragraph">INDEX+XMATCH最大の見せ場が、<strong>行と列を同時に検索するクロス検索</strong> です。行の位置も列の位置もXMATCHで動的に取得することで、表のどこを参照するかを完全に数式で組み立てられます。</p>



<p class="wp-block-paragraph">「社員番号 E003 の役職を取得したい」というケースで見てみましょう。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D6, XMATCH(&quot;E003&quot;, A2:A6), XMATCH(&quot;役職&quot;, A1:D1))</code></pre>



<p class="wp-block-paragraph">処理の流れはこうなります。</p>



<ol class="wp-block-list"><li><code>XMATCH("E003", A2:A6)</code> → 「3」（A列で3番目）</li><li><code>XMATCH("役職", A1:D1)</code> → 「4」（見出し行で4番目）</li><li><code>INDEX(A2:D6, 3, 4)</code> → 表の3行4列目 → 「部長」を返す</li></ol>



<p class="wp-block-paragraph">列の見出し名で位置を検索するので、<strong>途中に列が追加・移動されても数式が壊れません</strong>。大きな表や、列構成が変わる可能性があるテンプレートで特に重宝するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc18">IFERRORと組み合わせてエラーを防ぐ</span></h3>



<p class="wp-block-paragraph">XMATCH関数は検索値が見つからないと <code>#N/A</code> エラーを返します。共有シートで他の人にも触らせる表では、<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a> で囲んでエラー表示を避けるのが定番です。</p>



<pre class="wp-block-code"><code>=IFERROR(XMATCH(&quot;マーケ部&quot;, C2:C6), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">「マーケ部」はデータに存在しないため、<code>#N/A</code> ではなく「該当なし」が表示されます。</p>



<p class="wp-block-paragraph">INDEX+XMATCH の式と組み合わせる場合は、<strong>全体をIFERRORで囲む</strong> のがポイントです。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(B2:B6, XMATCH(&quot;E010&quot;, A2:A6)), &quot;見つかりません&quot;)</code></pre>



<p class="wp-block-paragraph">XMATCH側にだけIFERRORを掛けると、INDEX関数に「該当なし」が渡されて別のエラーになります。エラーの起点となる関数ではなく、最終的な数式全体をIFERRORで包みましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">バイナリサーチで大量データを高速検索する</span></h3>



<p class="wp-block-paragraph">データが数万行を超えていて、かつ <strong>すでに昇順または降順にソート済み</strong> の場合は、バイナリサーチ（検索モード <code>2</code> または <code>-2</code>）が使えます。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;E003&quot;, A2:A10000, 0, 2)</code></pre>



<p class="wp-block-paragraph">二分探索のアルゴリズムで検索するので、線形検索よりも処理が高速です。ただし <strong>データが正しくソートされていないと誤った結果を返す</strong> ので注意が必要です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>数万行レベルでも体感差が出にくいケースが多いです。バイナリサーチは「ソート済みであることを保証できる」「再計算回数が多い」など、明確に高速化を必要とする場面で導入を検討しましょう。並べ替えコストとのトレードオフも忘れずに。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc20">実務シナリオ: 在庫表で最新ロットの位置を取得する</span></h3>



<p class="wp-block-paragraph">応用パターンとして、入出庫履歴から特定の商品の <strong>最新ロット行</strong> を取り出すケースを見てみましょう。A列に商品コード、B列にロット番号、C列に入庫日が並んでいる入庫履歴を想定します。</p>



<pre class="wp-block-code"><code>=INDEX(B2:B500, XMATCH(&quot;APPLE-01&quot;, A2:A500, 0, -1))</code></pre>



<p class="wp-block-paragraph"><code>XMATCH("APPLE-01", A2:A500, 0, -1)</code> で「APPLE-01」の <strong>末尾側の出現位置</strong> を取得し、その位置のロット番号を INDEX で取り出しています。逆方向検索（-1）を使うことで、最後に入庫されたロット番号だけを拾えます。</p>



<p class="wp-block-paragraph">「最新の単価」「最終更新日」など、追記型データから最新値を取り出す処理は実務で頻出です。INDEX+XMATCH+逆方向検索の3点セットは覚えておくと応用が利きます。</p>



<h2 class="wp-block-heading"><span id="toc21">XMATCH関数のよくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">XMATCH関数で発生しやすいエラーと、その原因・対処法を早見表にまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>検索値が範囲内に存在しない</td><td>データの有無を確認する。IFERRORで囲む</td></tr><tr><td>#N/A</td><td>データ型の不一致（数値と文字列の混在）</td><td>検索値と範囲のデータ型を揃える</td></tr><tr><td>#N/A</td><td>ワイルドカードを一致モード0で使っている</td><td>一致モードを2に変更する</td></tr><tr><td>#VALUE!</td><td>検索範囲に2次元の範囲を指定（例: A1:C5）</td><td>1行または1列の範囲に変更する</td></tr><tr><td>#VALUE!</td><td>一致モードや検索モードに無効な値を指定</td><td>0, -1, 1, 2, 3（一致モード）/ 1, -1, 2, -2（検索モード）</td></tr><tr><td>期待と違う結果</td><td>全角/半角・大文字小文字の不一致</td><td>ASC関数・UPPER関数などで事前に正規化</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc22">#N/Aエラー（検索値が見つからない）の対処法</span></h3>



<p class="wp-block-paragraph">XMATCH関数でいちばん多いエラーです。データ自体が存在しない場合と、<strong>型の不一致</strong> で見つからない場合の2パターンがあります。</p>



<p class="wp-block-paragraph">セルの見た目は同じ数字でも、片方が数値・もう片方が文字列だと別物と判定されます。確認するには、対象セルを選択して数式バーの表示をチェックしてください。文字列として入力された数字はセル内で <strong>左寄せ</strong> で表示されます（数値は右寄せ）。VALUE関数で文字列を数値に変換すれば、型を揃えられます。</p>



<pre class="wp-block-code"><code>=XMATCH(VALUE(A2), B2:B100, 0)</code></pre>



<p class="wp-block-paragraph">逆に範囲側が数値で検索値が文字列なら、検索値を <code>VALUE("123")</code> のように変換します。どちらに揃えるかはデータの実体に合わせて選びましょう。</p>



<h3 class="wp-block-heading"><span id="toc23">#VALUE!エラー（範囲指定が不正）の対処法</span></h3>



<p class="wp-block-paragraph">検索範囲に2次元の範囲（A1:C5など）を指定すると発生します。XMATCH関数は <strong>1行または1列のみ</strong> を受け付けます。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;総務部&quot;, C2:D6)</code></pre>



<p class="wp-block-paragraph">このように2列を渡すと <code>#VALUE!</code> になります。複数列を横断して検索したい場合は、前述の「INDEX+XMATCHで行列クロス検索する」のように、行用と列用の2つのXMATCHに分けてください。</p>



<h3 class="wp-block-heading"><span id="toc24">大文字小文字・全角半角の表記ゆれ対策</span></h3>



<p class="wp-block-paragraph">XMATCH関数の値の照合は <strong>大文字と小文字を区別しません</strong>（&#8221;ABC&#8221; と &#8220;abc&#8221; は同じ）。一方で <strong>全角と半角は別物</strong> として扱います（&#8221;E001&#8243; と &#8220;Ｅ００１&#8221; は別）。</p>



<p class="wp-block-paragraph">データに全角の英数字や記号が紛れ込んでいる場合は、事前に ASC関数で半角に統一しておくと安心です。</p>



<pre class="wp-block-code"><code>=XMATCH(ASC(A2), ARRAYFORMULA(ASC(C2:C100)), 0)</code></pre>



<p class="wp-block-paragraph">検索値と範囲の両方を ASC で半角化することで、表記ゆれを吸収できます。範囲側に ARRAYFORMULA を使うのは、関数を範囲全体に適用するためです。</p>



<h2 class="wp-block-heading"><span id="toc25">XMATCH関数とMATCH関数の違い・使い分け</span></h2>



<p class="wp-block-paragraph">XMATCHはMATCH関数の上位互換です。主な違いを比較表で整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MATCH</th><th>XMATCH</th></tr></thead><tbody><tr><td>デフォルトの一致モード</td><td>近似一致（1）</td><td><strong>完全一致（0）</strong></td></tr><tr><td>近似一致の並べ替え</td><td>昇順/降順が必須</td><td><strong>不要</strong></td></tr><tr><td>逆方向検索（末尾から検索）</td><td>不可</td><td><strong>可能（検索モード -1）</strong></td></tr><tr><td>ワイルドカード</td><td>完全一致モード（0）で使用</td><td><strong>専用モード（2）で使用</strong></td></tr><tr><td>バイナリサーチ</td><td>不可</td><td><strong>可能（検索モード 2 / -2）</strong></td></tr><tr><td>正規表現</td><td>不可</td><td><strong>一致モード 3（スプレッドシート独自）</strong></td></tr><tr><td>引数の数</td><td>3つ（検索値・範囲・一致モード）</td><td>4つ（検索値・範囲・一致モード・検索モード）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">MATCH→XMATCHへの書き換え（Before/After）</span></h3>



<p class="wp-block-paragraph">実務でよく使う完全一致のパターンを、書き換え例で見てみましょう。</p>



<p class="wp-block-paragraph"><strong>Before（MATCH関数）:</strong></p>



<pre class="wp-block-code"><code>=MATCH(&quot;総務部&quot;, C2:C6, 0)</code></pre>



<p class="wp-block-paragraph"><strong>After（XMATCH関数）:</strong></p>



<pre class="wp-block-code"><code>=XMATCH(&quot;総務部&quot;, C2:C6)</code></pre>



<p class="wp-block-paragraph">第3引数の <code>0</code> を省略できる分、XMATCHのほうがシンプルです。完全一致がデフォルトなので、書き忘れによるエラーの心配もありません。</p>



<h3 class="wp-block-heading"><span id="toc27">どちらを選ぶべき？シーン別の判断基準</span></h3>



<p class="wp-block-paragraph">判断基準はシンプルに次のとおりです。</p>



<ul class="wp-block-list"><li><strong>新しく数式を作る場合</strong> → XMATCH関数がおすすめ。デフォルト完全一致で安全</li><li><strong>既存シートを部分修正する場合</strong> → 既存のMATCH関数に合わせて統一感を優先</li><li><strong>末尾側の一致を取得したい場合</strong> → XMATCH関数の逆方向検索（-1）一択</li><li><strong>大量データを高速検索したい場合</strong> → XMATCH関数のバイナリサーチ（2/-2）</li><li><strong>正規表現で複雑なパターンを検索したい場合</strong> → XMATCH関数の一致モード3</li></ul>



<h3 class="wp-block-heading"><span id="toc28">XMATCH関数とXLOOKUP関数の使い分け</span></h3>



<p class="wp-block-paragraph">「値そのものを取得したいだけ」なら、<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a> のほうがシンプルに書けます。</p>



<pre class="wp-block-code"><code>=XLOOKUP(&quot;E003&quot;, A2:A6, D2:D6)</code></pre>



<p class="wp-block-paragraph">XLOOKUPは検索範囲と戻り値範囲を直接指定するので、INDEX+XMATCHの2段構えが不要です。一方で <strong>位置番号自体が必要</strong> なケース（行番号を別の計算に流したい・複数列を一度に取りたい・行列クロス検索したいなど）では、XMATCH関数のほうが柔軟性で勝ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>おすすめ関数</th></tr></thead><tbody><tr><td>1列のテーブルから値を取り出すだけ</td><td>XLOOKUP関数</td></tr><tr><td>位置番号を別の計算に使いたい</td><td>XMATCH関数</td></tr><tr><td>行と列の見出しから値を取り出したい（クロス検索）</td><td>INDEX + XMATCH</td></tr><tr><td>検索列の左側の値を取り出したい</td><td>XLOOKUP関数 または INDEX + XMATCH</td></tr><tr><td>検索値が末尾側のものを取得したい</td><td>XMATCH関数（検索モード -1）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc29">INDEX+MATCHとの違い</span></h3>



<p class="wp-block-paragraph">長年の定番である <code>INDEX+MATCH</code> の式も、<code>INDEX+XMATCH</code> に置き換えるだけで動きます。</p>



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



<pre class="wp-block-code"><code>=INDEX(A2:A6, MATCH(&quot;営業部&quot;, C2:C6, 0))</code></pre>



<p class="wp-block-paragraph"><strong>After（INDEX+XMATCH）:</strong></p>



<pre class="wp-block-code"><code>=INDEX(A2:A6, XMATCH(&quot;営業部&quot;, C2:C6))</code></pre>



<p class="wp-block-paragraph">XMATCH側で <code>0</code> を省略できるだけで、ほぼ同じ感覚で使えます。逆方向検索や正規表現が必要になったとき、XMATCHのほうが拡張余地が大きいのが強みです。</p>



<h2 class="wp-block-heading"><span id="toc30">まとめ：XMATCH関数で位置検索を一段ラクにする</span></h2>



<p class="wp-block-paragraph">最後にXMATCH関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は <code>=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])</code> の4引数で、第3・第4引数は省略可</li><li><strong>デフォルトが完全一致</strong> なので、引数の指定ミスが起きにくい</li><li><strong>逆方向検索（検索モード -1）</strong> で、追記型の台帳から最新エントリの位置を一発取得できる</li><li><strong>近似一致で並べ替え不要</strong> になり、価格帯や評価テーブルの参照が手軽に</li><li>ワイルドカードは <strong>専用の一致モード（2）</strong> で使う。完全一致モード（0）では文字として扱われる</li><li>スプレッドシート版には <strong>正規表現の一致モード（3）</strong> もあり、複雑なパターンも検索できる</li><li><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a> と組み合わせれば、<strong>左方向の検索・行列クロス検索</strong> が自由自在</li></ul>



<p class="wp-block-paragraph">まずは <code>=XMATCH("検索値", 範囲)</code> の完全一致パターンから試してみてください。MATCH関数を使っている方は、XMATCHに切り替えるだけで検索の自由度がぐっと広がりますよ。INDEX+MATCH派の方は、<code>MATCH</code> を <code>XMATCH</code> に置き換えるところから始めるのがおすすめです。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方｜INDEX+MATCHで左側も検索できる</a></li><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方｜行列指定で値を取得する方法</a></li><li><a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方｜VLOOKUPとの違いも解説</a></li><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方｜別シート参照・エラー対処まで解説</a></li><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">スプレッドシートのIFERROR関数の使い方｜エラーを別の値に置き換える</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-xmatch-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのXMATCH関数の使い方｜MATCHとの違いを解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-xmatch/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-xmatch/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 22 Jul 2022 07:33:10 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[XMATCH関数]]></category>
		<category><![CDATA[ワイルドカード]]></category>
		<category><![CDATA[完全一致]]></category>
		<category><![CDATA[検索関数]]></category>
		<category><![CDATA[逆順検索]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2418</guid>

					<description><![CDATA[ExcelのXMATCH関数の使い方を解説。MATCH関数との違いを比較表で整理し、一致モード4種・検索モード4種の使い分けをわかりやすく紹介。ワイルドカード検索・逆順検索の実務活用例、INDEX+XMATCHの組み合わせ技まで収録。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelでMATCH関数を使っていて、「逆順に検索できたらいいのに」と感じたことはありませんか？ データが増えるほど、検索の柔軟性が欲しくなりますよね。</p>



<p class="wp-block-paragraph">XMATCH関数なら、その悩みをまるっと解決できます。 逆順検索やワイルドカード検索など、MATCHにはない機能が使えるんです。 この記事では、XMATCH関数の使い方を基本から実務活用まで解説します。</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">XMATCH関数とは？MATCHとの違いを比較表で整理</a><ol><li><a href="#toc2" tabindex="0">XMATCH関数の基本情報（対応バージョン）</a></li><li><a href="#toc3" tabindex="0">MATCHとXMATCHの違い一覧（比較表）</a></li></ol></li><li><a href="#toc4" tabindex="0">XMATCH関数の使い方：書式と引数</a><ol><li><a href="#toc5" tabindex="0">各引数の意味と省略時の挙動</a></li></ol></li><li><a href="#toc6" tabindex="0">一致モード4種の使い分け</a><ol><li><a href="#toc7" tabindex="0">完全一致（デフォルト・0）</a></li><li><a href="#toc8" tabindex="0">以下で一致（-1）／以上で一致（1）</a></li><li><a href="#toc9" tabindex="0">ワイルドカード一致（2）の実用例</a></li></ol></li><li><a href="#toc10" tabindex="0">検索モード4種の使い分け</a><ol><li><a href="#toc11" tabindex="0">先頭から検索（デフォルト・1）</a></li><li><a href="#toc12" tabindex="0">末尾から逆順検索（-1）の実務ユースケース</a></li><li><a href="#toc13" tabindex="0">バイナリサーチ（2・-2）の使いどき</a></li></ol></li><li><a href="#toc14" tabindex="0">INDEX+XMATCHで表引きをもっと柔軟に</a><ol><li><a href="#toc15" tabindex="0">VLOOKUPより優れている理由</a></li><li><a href="#toc16" tabindex="0">INDEX+XMATCHの実務サンプル</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#N/Aが出るケースと回避方法</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ｜XMATCHはMATCHの上位互換</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">XMATCH関数とは？MATCHとの違いを比較表で整理</span></h2>



<p class="wp-block-paragraph">XMATCH関数は、検索範囲から指定した値を探し出し、その位置（何番目か）を数値で返す関数です。 読み方は「エックスマッチ」。「X」は Extended（拡張）を意味し、MATCH関数を強化した拡張版であることを示しています。 従来の<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>の上位互換にあたります。</p>



<p class="wp-block-paragraph">「位置を返す」というのがポイントです。 値そのものではなく、「上から何番目にあるか」を教えてくれます。 この位置情報を<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>と組み合わせると、強力な表引きができます。</p>



<h3 class="wp-block-heading"><span id="toc2">XMATCH関数の基本情報（対応バージョン）</span></h3>



<p class="wp-block-paragraph">XMATCH関数が使えるバージョンは以下のとおりです。</p>



<ul class="wp-block-list"><li>Microsoft 365（Windows / Mac）</li><li>Excel 2024（Windows / Mac）</li><li>Excel 2021（Windows / Mac）</li><li>Excel for the web（Web版）</li></ul>



<p class="wp-block-paragraph">Excel 2019以前では使えません。 その場合はMATCH関数で代用してください。</p>



<h3 class="wp-block-heading"><span id="toc3">MATCHとXMATCHの違い一覧（比較表）</span></h3>



<p class="wp-block-paragraph">「MATCHと何が違うの？」という疑問に、比較表でお答えします。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MATCH</th><th>XMATCH</th></tr></thead><tbody><tr><td>デフォルトの一致モード</td><td>以下の最大値（1）</td><td><strong>完全一致（0）</strong></td></tr><tr><td>近似一致の並べ替え</td><td>必須</td><td><strong>不要</strong></td></tr><tr><td>逆順検索</td><td>できない</td><td><strong>できる（search_mode=-1）</strong></td></tr><tr><td>255文字の制限</td><td>あり</td><td><strong>なし</strong></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に大きいのは「デフォルトが完全一致」になった点です。 MATCH関数は引数を省略すると近似一致になり、意図しない結果を返すことがありました。 XMATCHなら引数を省略しても完全一致で検索してくれます。</p>



<h2 class="wp-block-heading"><span id="toc4">XMATCH関数の使い方：書式と引数</span></h2>



<p class="wp-block-paragraph">XMATCH関数の基本構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])</code></pre>



<h3 class="wp-block-heading"><span id="toc5">各引数の意味と省略時の挙動</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>説明</th><th>省略時</th></tr></thead><tbody><tr><td>検索値（lookup_value）</td><td>○</td><td>探したい値</td><td>—</td></tr><tr><td>検索範囲（lookup_array）</td><td>○</td><td>検索する1行または1列の範囲</td><td>—</td></tr><tr><td>一致モード（match_mode）</td><td>×</td><td>一致の判定方法を指定</td><td>0（完全一致）</td></tr><tr><td>検索モード（search_mode）</td><td>×</td><td>検索する方向を指定</td><td>1（先頭から検索）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第3・第4引数は省略可能です。 省略すると「先頭から完全一致で検索」という最もシンプルな動作になります。</p>



<h2 class="wp-block-heading"><span id="toc6">一致モード4種の使い分け</span></h2>



<p class="wp-block-paragraph">一致モード（match_mode）は、検索値と範囲内の値をどう照合するかを決めます。 4種類あるので、用途に合わせて選びましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">完全一致（デフォルト・0）</span></h3>



<p class="wp-block-paragraph">最も基本的なモードです。 検索値と完全に一致するセルだけを探します。</p>



<p class="wp-block-paragraph">たとえば、社員名簿から「佐藤」の位置を調べる場合はこうなります。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;佐藤&quot;, A2:A10)</code></pre>



<p class="wp-block-paragraph">一致モードを省略しても「0（完全一致）」になります。 見つからなければ <code>#N/A</code> エラーが返ります。</p>



<h3 class="wp-block-heading"><span id="toc8">以下で一致（-1）／以上で一致（1）</span></h3>



<p class="wp-block-paragraph">数値データに対して「ぴったり一致する値がなければ、近い値で代用する」モードです。</p>



<ul class="wp-block-list"><li><strong>-1（以下の最大値）</strong>: 検索値以下で最も大きい値の位置を返す</li><li><strong>1（以上の最小値）</strong>: 検索値以上で最も小さい値の位置を返す</li></ul>



<p class="wp-block-paragraph">たとえば、点数テーブルで85点のランクを調べたいとします。 テーブルに85がなくても、以下のように書けば80の位置を返してくれます。</p>



<pre class="wp-block-code"><code>=XMATCH(85, {60,70,80,90}, -1)</code></pre>



<p class="wp-block-paragraph">この式は「3」を返します。85以下の最大値は80で、3番目だからです。</p>



<p class="wp-block-paragraph">MATCH関数の近似一致ではデータの並べ替えが必須でした。 XMATCHなら並べ替え不要で近似一致ができます。 これは地味ですが、実務では大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc9">ワイルドカード一致（2）の実用例</span></h3>



<p class="wp-block-paragraph">部分一致で検索したいときは、一致モード「2」を使います。 <code>*</code>（任意の文字列）と <code>?</code>（任意の1文字）、<code>~</code>（ワイルドカード文字そのものを検索するエスケープ）が使えます。</p>



<p class="wp-block-paragraph">たとえば、「田中」を含む名前を探す場合はこう書きます。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;*田中*&quot;, A2:A20, 2)</code></pre>



<p class="wp-block-paragraph">これで「田中太郎」「田中花子」など、「田中」を含む最初のセルの位置を返します。 商品名や部署名のあいまい検索に便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc10">検索モード4種の使い分け</span></h2>



<p class="wp-block-paragraph">検索モード（search_mode）は、範囲をどの方向から探すかを決めます。</p>



<h3 class="wp-block-heading"><span id="toc11">先頭から検索（デフォルト・1）</span></h3>



<p class="wp-block-paragraph">上から順に検索し、最初に見つかった位置を返します。 省略時はこのモードになるので、通常はそのままでOKです。</p>



<h3 class="wp-block-heading"><span id="toc12">末尾から逆順検索（-1）の実務ユースケース</span></h3>



<p class="wp-block-paragraph">XMATCH関数の目玉機能ともいえるのが、逆順検索です。 search_mode に「-1」を指定すると、末尾から先頭に向かって検索します。</p>



<p class="wp-block-paragraph">これが活躍するのは「追記型の台帳」です。 たとえば、日報や作業ログのように下へ追記していくシートがあるとします。 同じ担当者名が複数行にあるとき、最新（最後）のエントリの位置を取得できます。</p>



<pre class="wp-block-code"><code>=XMATCH(&quot;佐藤&quot;, A2:A100, 0, -1)</code></pre>



<p class="wp-block-paragraph">MATCH関数では逆順検索ができなかったため、回りくどい数式が必要でした。 XMATCHなら引数ひとつで解決です。</p>



<h3 class="wp-block-heading"><span id="toc13">バイナリサーチ（2・-2）の使いどき</span></h3>



<p class="wp-block-paragraph">データが大量（数万行以上）で、すでに並べ替え済みの場合に使います。</p>



<ul class="wp-block-list"><li><strong>2</strong>: 昇順ソート済みデータに対して二分探索</li><li><strong>-2</strong>: 降順ソート済みデータに対して二分探索</li></ul>



<p class="wp-block-paragraph">通常の検索より高速ですが、データが正しくソートされていないと誤った結果を返します。 少量データなら通常検索で十分なので、無理に使う必要はありません。</p>



<h2 class="wp-block-heading"><span id="toc14">INDEX+XMATCHで表引きをもっと柔軟に</span></h2>



<p class="wp-block-paragraph">XMATCH関数の真価は、INDEX関数との組み合わせで発揮されます。</p>



<h3 class="wp-block-heading"><span id="toc15">VLOOKUPより優れている理由</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>は便利ですが、いくつかの制約があります。</p>



<ul class="wp-block-list"><li>検索列が範囲の左端にないと使えない</li><li>列番号を数値で指定するため、列の挿入でズレる</li></ul>



<p class="wp-block-paragraph">INDEX+XMATCHなら、これらの制約がありません。 検索列が右にあっても左にあっても自在に表引きできます。</p>



<p class="wp-block-paragraph">さらに詳しく知りたい方は、<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド</a>もあわせてご覧ください。</p>



<p class="wp-block-paragraph">なお、<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>が使える環境なら、XLOOKUPのほうがシンプルに書けます。 INDEX+XMATCHは「縦横同時検索」が必要なケースで特に威力を発揮します。</p>



<h3 class="wp-block-heading"><span id="toc16">INDEX+XMATCHの実務サンプル</span></h3>



<p class="wp-block-paragraph">下の表から「商品名」と「月」を指定して売上を取得する例です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>4月</th><th>5月</th><th>6月</th></tr></thead><tbody><tr><td>商品A</td><td>100</td><td>150</td><td>200</td></tr><tr><td>商品B</td><td>80</td><td>120</td><td>160</td></tr><tr><td>商品C</td><td>200</td><td>250</td><td>300</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">セルB3に商品名、C3に月名を入力しておくと、次の数式で交差セルの値を取得できます。</p>



<pre class="wp-block-code"><code>=INDEX(C6:E8, XMATCH(B3, B6:B8), XMATCH(C3, C5:E5))</code></pre>



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li><code>XMATCH(B3, B6:B8)</code> → 商品名の行番号を取得</li><li><code>XMATCH(C3, C5:E5)</code> → 月名の列番号を取得</li><li><code>INDEX</code> → 行と列が交差するセルの値を返す</li></ol>



<p class="wp-block-paragraph">このように、XMATCHを2つ使って縦横同時検索ができます。 VLOOKUPでは実現できない柔軟な表引きです。</p>



<h2 class="wp-block-heading"><span id="toc17">よくあるエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc18">#N/Aが出るケースと回避方法</span></h3>



<p class="wp-block-paragraph">XMATCH関数で最もよく見るエラーが <code>#N/A</code> です。 「一致する値が見つからない」ときに発生します。</p>



<p class="wp-block-paragraph">主な原因は次の3つです。</p>



<ul class="wp-block-list"><li><strong>スペルミスや余分なスペース</strong>: 検索値と範囲内の値が微妙に違う</li><li><strong>データ型の不一致</strong>: 検索値が数値なのに範囲内が文字列として保存されている（またはその逆）</li><li><strong>検索範囲の指定ミス</strong>: 意図した列と違う範囲を選んでいる</li></ul>



<p class="wp-block-paragraph">データ型の問題は見落としがちです。 セルの表示が同じでも、数値と文字列では一致しません。 数式バーで「&#8217;123」のようにシングルクォートがついていたら、文字列として保存されているサインです。</p>



<p class="wp-block-paragraph">エラーを非表示にしたい場合は、IFERROR関数で囲みます。</p>



<pre class="wp-block-code"><code>=IFERROR(XMATCH(&quot;佐藤&quot;, A2:A10), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">ただし、IFERRORで隠すとデータの問題に気づきにくくなります。 まずは原因を特定してから対処するのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc19">まとめ｜XMATCHはMATCHの上位互換</span></h2>



<p class="wp-block-paragraph">XMATCH関数の使い方を振り返りましょう。</p>



<ul class="wp-block-list"><li>デフォルトが完全一致なので、引数の指定ミスが起きにくい</li><li>逆順検索（search_mode=-1）で最新データの位置を簡単に取得できる</li><li>近似一致で並べ替え不要になり、手間が減った</li><li>ワイルドカード一致で部分一致検索もカバー</li><li>255文字の制限がなくなり、長いテキストの検索にも対応</li><li>INDEX関数と組み合わせれば、縦横同時検索が可能</li></ul>



<p class="wp-block-paragraph">MATCH関数を使っている方は、XMATCHに切り替えるだけで検索がグッと楽になりますよ。 対応バージョン（Microsoft 365 / Excel 2024 / Excel 2021）をお使いなら、ぜひ試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-xmatch/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
