<?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>MATCH関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/match%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 23 Apr 2026 11:32:10 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>MATCH関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのIFNA関数の使い方｜#N/Aエラー時の代替値を設定する方法</title>
		<link>https://mashukabu.com/spreadsheet-ifna-function/</link>
					<comments>https://mashukabu.com/spreadsheet-ifna-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 23 Mar 2026 14:55:13 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IFERROR関数]]></category>
		<category><![CDATA[IFNA関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[VLOOKUP関数]]></category>
		<category><![CDATA[エラー処理]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5204</guid>

					<description><![CDATA[スプレッドシートのIFNA関数の使い方を基本から解説。#N/Aエラーだけを処理する構文から、VLOOKUPやINDEX/MATCHとの組み合わせ、IFERROR関数との違い、よくあるエラーの対処法まで実務シナリオで丁寧に解説します。]]></description>
										<content:encoded><![CDATA[
<p>スプレッドシートでVLOOKUPやMATCHを使ったら「#N/A」が表示された。こんな経験、ありませんか？</p>



<p>「#N/Aだけ消したいけど、数式ミスまで隠すのは怖い」。そんなときに活躍するのがスプレッドシートのIFNA関数です。</p>



<p>この記事では基本の書き方から実務パターンまで解説します。<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>との違いもしっかり紹介しますよ。</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">スプレッドシートのIFNA関数とは？#N/Aエラー専用の処理関数</a></li><li><a href="#toc2" tabindex="0">IFNA関数の書き方（構文・引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">最もシンプルな使用例</a></li></ol></li><li><a href="#toc6" tabindex="0">基本的な使い方3選</a><ol><li><a href="#toc7" tabindex="0">#N/Aを空白にする</a></li><li><a href="#toc8" tabindex="0">#N/Aのときにメッセージを表示する</a></li><li><a href="#toc9" tabindex="0">#N/Aのときに数値を返す</a></li></ol></li><li><a href="#toc10" tabindex="0">実務で使える応用パターン</a><ol><li><a href="#toc11" tabindex="0">VLOOKUP+IFNAで未登録データを処理する</a></li><li><a href="#toc12" tabindex="0">INDEX/MATCH+IFNAで柔軟な検索をする</a></li><li><a href="#toc13" tabindex="0">IFNAのネストで複数テーブルを順番に検索する</a></li><li><a href="#toc14" tabindex="0">IF関数と組み合わせて空白セルを除外する</a></li></ol></li><li><a href="#toc15" tabindex="0">IFNA関数とIFERROR関数の違い・使い分け</a><ol><li><a href="#toc16" tabindex="0">どちらを使うべき？判断基準</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc18" tabindex="0">まとめ</a><ol><li><a href="#toc19" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのIFNA関数とは？#N/Aエラー専用の処理関数</span></h2>



<p>IFNA関数（読み方: イフエヌエー関数）は、<strong>数式の結果が#N/Aエラーのときだけ代わりの値を返す関数</strong>です。</p>



<p>「IF」は「もし」、「N/A」は「Not Available（該当なし）」の略です。</p>



<p>たとえば「VLOOKUPで該当なしのときだけ代替値を表示したい」場面です。IFNA関数なら#N/Aだけを処理できます。</p>



<p>それ以外のエラーはそのまま残せますよ。</p>



<p>IFNA関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>や<a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>の#N/Aを空白やメッセージに置き換える</li><li>#N/A以外のエラー（#REF!や#VALUE!など）はそのまま残す</li><li>数式ミスによるエラーを見逃さずに済む</li><li>「検索値が見つからない」ことだけを想定内として処理できる</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>IFERRORとの最大の違い</strong></p><p><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>はすべてのエラーをまとめて処理します。一方、IFNA関数は#N/Aだけが対象です。「検索で見つからない」は想定内だけど、「参照先が消えた」「数式が壊れた」は検知したい。そんなときはIFNA関数のほうが安全ですよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">IFNA関数の書き方（構文・引数）</span></h2>



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



<p>IFNA関数の構文はとてもシンプルです。</p>



<pre class="wp-block-code"><code>=IFNA(値, NA時の値)</code></pre>



<p>引数は2つだけ。<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>とまったく同じ形なので覚えやすいですよね。</p>



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



<p>それぞれの引数の意味を表で整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>#N/Aかどうかをチェックしたい数式やセル参照</td></tr><tr><td>NA時の値</td><td>任意</td><td>#N/Aだったときに返す値。文字列・数値・数式のいずれもOK</td></tr></tbody></table></figure>



<p>第2引数を省略するとどうなるでしょうか。Googleスプレッドシートでは空文字列（&#8221;&#8221;）が返ります。</p>



<p>実務では表示したい値を明示するのがおすすめですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>文字列を返す場合はダブルクォーテーションで囲みます。数値を返す場合は囲みません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc5">最もシンプルな使用例</span></h3>



<p>A2にVLOOKUPの結果が入っているとします。#N/Aのときに「該当なし」と表示してみましょう。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, D:E, 2, FALSE), &quot;該当なし&quot;)</code></pre>



<ul class="wp-block-list"><li><strong>VLOOKUP(A2, D:E, 2, FALSE)</strong>: A2の値をD列から検索</li><li><strong>&#8220;該当なし&#8221;</strong>: #N/Aエラー時に表示するテキスト</li></ul>



<p>検索値が見つかれば結果がそのまま返ります。見つからなければ「該当なし」と表示されます。</p>



<h2 class="wp-block-heading"><span id="toc6">基本的な使い方3選</span></h2>



<p>基本がわかったところで、仕事でよく使うパターンを見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">#N/Aを空白にする</span></h3>



<p>一番よく使うパターンが、#N/Aを空白に置き換えるケースです。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, D:E, 2, FALSE), &quot;&quot;)</code></pre>



<p>検索値が見つからなかったセルが空白になります。印刷する資料や共有用のシートで重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">#N/Aのときにメッセージを表示する</span></h3>



<p>空白ではなく、わかりやすいメッセージを表示することもできます。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, D:E, 2, FALSE), &quot;該当なし&quot;)</code></pre>



<p>#N/Aの代わりに「該当なし」と表示されます。データが見つからなかったことをひと目で伝えたいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc9">#N/Aのときに数値を返す</span></h3>



<p>数値を返すパターンも実務でよく使います。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, 単価表!A:B, 2, FALSE), 0)</code></pre>



<p>#N/Aの代わりに0を返します。SUM関数やAVERAGE関数の集計でエラーが止まるのを防げますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>#VALUE!や#REF!はどうなる？</strong></p><p>IFNA関数は#N/A以外のエラーには反応しません。たとえば参照先を削除して#REF!が発生した場合、そのまま#REF!が表示されます。数式ミスが隠れないので安心ですね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">実務で使える応用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc11">VLOOKUP+IFNAで未登録データを処理する</span></h3>



<p>IFNA関数の最も定番の使い方が、<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>との組み合わせです。</p>



<p>商品コードで商品マスタを検索するケースを考えてみましょう。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, 商品マスタ!A:C, 3, FALSE), &quot;未登録&quot;)</code></pre>



<p>商品コードが見つからなければ「未登録」と表示します。大量データの突合で必須のテクニックですよ。</p>



<p><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>でも同じことはできます。ただしIFERRORだと列番号ミスの#REF!も隠れてしまいます。</p>



<p>IFNA関数なら#REF!はそのまま表示されます。不具合に気づけるのがメリットですよ。</p>



<h3 class="wp-block-heading"><span id="toc12">INDEX/MATCH+IFNAで柔軟な検索をする</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>と<a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>を組み合わせた検索でも活躍します。</p>



<pre class="wp-block-code"><code>=IFNA(INDEX(C:C, MATCH(E2, A:A, 0)), &quot;該当なし&quot;)</code></pre>



<p>「検索列より左側の値を取得する」パターンです。見つからないときだけ「該当なし」を返します。</p>



<p>VLOOKUPでは対応できない検索が必要な場面で使ってみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">IFNAのネストで複数テーブルを順番に検索する</span></h3>



<p>第2引数に別のIFNA関数を入れると、複数テーブルを順番に検索できます。</p>



<pre class="wp-block-code"><code>=IFNA(VLOOKUP(A2, シート1!A:B, 2, FALSE), IFNA(VLOOKUP(A2, シート2!A:B, 2, FALSE), &quot;どちらにもなし&quot;))</code></pre>



<p>まずシート1で検索します。#N/Aならシート2を検索します。どちらにもなければ「どちらにもなし」を表示する仕組みです。</p>



<p>ちょっと複雑に見えますが、やっていることはシンプルです。「最初のIFNAが失敗したら次のIFNAを試す」という流れですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">IF関数と組み合わせて空白セルを除外する</span></h3>



<p><a href="https://mashukabu.com/spreadsheet-if-function/">IF関数</a>とIFNA関数を組み合わせると、入力前のセルを除外できます。</p>



<pre class="wp-block-code"><code>=IF(A2=&quot;&quot;, &quot;&quot;, IFNA(VLOOKUP(A2, D:E, 2, FALSE), &quot;該当なし&quot;))</code></pre>



<p>A2が空白ならそもそも検索しません。値が入っているときだけVLOOKUPを実行します。</p>



<p>入力途中のデータを扱うときに便利なパターンですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">IFNA関数とIFERROR関数の違い・使い分け</span></h2>



<p>IFNA関数と<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>は構文が同じですが、動作が異なります。大きな違いは「処理するエラーの範囲」です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>IFNA</th><th>IFERROR</th></tr></thead><tbody><tr><td>対象エラー</td><td>#N/Aのみ</td><td>全7種のエラー</td></tr><tr><td>主な用途</td><td>VLOOKUP等の「該当なし」だけ処理</td><td>汎用的なエラー処理</td></tr><tr><td>バグ発見</td><td>#N/A以外はそのまま表示される</td><td>エラーを隠す可能性あり</td></tr><tr><td>構文</td><td>=IFNA(値, NA時の値)</td><td>=IFERROR(値, エラー時の値)</td></tr></tbody></table></figure>



<p>具体的に、同じ数式にミスがあった場合の動作を比較してみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>発生したエラー</th><th>IFNA関数</th><th>IFERROR関数</th></tr></thead><tbody><tr><td>#N/A（検索値なし）</td><td>代替値を表示</td><td>代替値を表示</td></tr><tr><td>#REF!（参照先削除）</td><td>#REF!をそのまま表示</td><td>代替値を表示</td></tr><tr><td>#VALUE!（データ型不正）</td><td>#VALUE!をそのまま表示</td><td>代替値を表示</td></tr><tr><td>#NAME?（関数名ミス）</td><td>#NAME?をそのまま表示</td><td>代替値を表示</td></tr></tbody></table></figure>



<p>IFERRORだと#REF!や#NAME?も代替値に置き換わります。数式のスペルミスに気づけないリスクがありますよね。</p>



<h3 class="wp-block-heading"><span id="toc16">どちらを使うべき？判断基準</span></h3>



<p>使い分けの基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>VLOOKUPやMATCHの「該当なし」だけ処理したい</strong> → IFNA関数がおすすめ</li><li><strong>割り算のゼロ除算など複数種のエラーをまとめて処理したい</strong> → <a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>が便利</li><li><strong>数式のバグを見逃したくない</strong> → IFNA関数が安全</li></ul>



<p>迷ったらIFNA関数を選んでおくのが安全です。想定外のエラーはそのまま残せるので、デバッグしやすくなりますよ。</p>



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



<p>IFNA関数自体はシンプルですが、ハマるポイントがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A以外のエラーも処理したい</td><td>IFNA関数は#N/Aのみ対象</td><td><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>に切り替える</td></tr><tr><td>#N/Aなのに代替値が表示されない</td><td>IFNA関数の外で#N/Aが発生している</td><td>#N/Aを返す数式をIFNAの第1引数に直接入れる</td></tr><tr><td>#NAME?エラーが出る</td><td>関数名のスペルミス</td><td>関数名は <code>IFNA</code> と正確に入力する</td></tr><tr><td>意図しない空白が表示される</td><td>第2引数を省略している</td><td>表示したい値（0や&#8221;該当なし&#8221;など）を明示する</td></tr><tr><td>#VALUE!がそのまま表示される</td><td>IFNA関数は#VALUE!に反応しない（正常動作）</td><td>#VALUE!も処理したいならIFERROR関数を使う</td></tr><tr><td>#REF!がそのまま表示される</td><td>IFNA関数は#REF!に反応しない（正常動作）</td><td>参照先のセルやシートが正しいか確認する</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>デバッグのコツ</strong></p><p>トラブル発生時は、まずIFNA関数を外して中の数式だけをテストしましょう。#N/A以外のエラーが出ていないか確認できます。「エラーが消えない」と思ったら、実は#N/A以外のエラーだったというケースが多いですよ。</p></blockquote>



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



<p>スプレッドシートのIFNA関数について解説しました。ポイントを振り返りましょう。</p>



<ul class="wp-block-list"><li>IFNA関数の構文は <code>=IFNA(値, NA時の値)</code> の2つの引数</li><li>#N/Aエラーだけを処理し、他のエラーはそのまま表示する</li><li>VLOOKUP+IFNAの組み合わせが実務で最も頻出</li><li>INDEX/MATCH+IFNAで柔軟な検索にも対応</li><li>IFERRORとの違いは「対象エラーの範囲」</li><li>数式のバグを見逃したくないならIFNA関数が安全</li></ul>



<p>まずはVLOOKUP+IFNAから試してみてください。#N/Aだけをきれいに処理しつつ、数式の不具合も見逃しません。</p>



<h3 class="wp-block-heading"><span id="toc19">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">スプレッドシートのIFERROR関数の使い方</a> &#8212; 全エラーをまとめて処理</li><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方</a> &#8212; 検索の基本</li><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方</a> &#8212; 柔軟なセル参照</li><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方</a> &#8212; 位置を検索する</li><li><a href="https://mashukabu.com/spreadsheet-if-function/">スプレッドシートのIF関数の使い方</a> &#8212; 条件分岐の基本</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-ifna-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>スプレッドシートで<a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>を使っていて、「末尾から検索できたらいいのに」と感じたことはありませんか？</p>



<p>追記型のリストで同じ名前が並んでいると、最新のデータだけ拾いたいのに先頭側がヒットしてしまいますよね。</p>



<p>そこで活躍するのがXMATCH関数です。逆方向検索やワイルドカード専用モードなど、MATCHにはない機能が揃っています。</p>



<p>この記事では、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関数とは？</a></li><li><a href="#toc2" tabindex="0">XMATCH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">一致モード4種の違い</a></li><li><a href="#toc6" tabindex="0">検索モード4種の違い</a></li></ol></li><li><a href="#toc7" tabindex="0">XMATCH関数の基本的な使い方</a><ol><li><a href="#toc8" tabindex="0">完全一致で位置を取得する（一致モード 0）</a></li><li><a href="#toc9" tabindex="0">ワイルドカードで部分一致検索する（一致モード 2）</a></li><li><a href="#toc10" tabindex="0">近似一致で最も近い値を取得する（一致モード -1 / 1）</a></li></ol></li><li><a href="#toc11" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc12" tabindex="0">逆方向検索で最新データの位置を取得する</a></li><li><a href="#toc13" tabindex="0">INDEX+XMATCHで左側の列を検索する</a></li><li><a href="#toc14" tabindex="0">INDEX+XMATCHでクロス検索する（行と列を同時に指定）</a></li><li><a href="#toc15" tabindex="0">IFERRORと組み合わせてエラーを防ぐ</a></li><li><a href="#toc16" tabindex="0">バイナリサーチで大量データを高速検索する</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc18" tabindex="0">XMATCH関数とMATCH関数の違い・使い分け</a><ol><li><a href="#toc19" tabindex="0">どちらを選ぶべき？</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a><ol><li><a href="#toc21" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのXMATCH関数とは？</span></h2>



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



<p>XMATCH関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>検索値が範囲の何番目にあるかを数値で返す</li><li>完全一致・近似一致・ワイルドカード・正規表現の4種類の一致モードに対応する</li><li>先頭から／末尾からの検索方向を選べる（逆方向検索）</li><li><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>と組み合わせて柔軟な表引きを実現する</li></ul>



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



<h2 class="wp-block-heading"><span id="toc2">XMATCH関数の書き方（構文と引数）</span></h2>



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



<p>XMATCH関数の構文はこちらです。</p>



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



<p>引数は4つあります。一致モードと検索モードは省略できます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</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</td></tr><tr><td>検索範囲</td><td>必須</td><td>検索対象の1行または1列の範囲</td><td>A2:A6</td></tr><tr><td>一致モード</td><td>省略可</td><td>一致の判定方法（0, -1, 1, 2）</td><td>0</td></tr><tr><td>検索モード</td><td>省略可</td><td>検索する方向（1, -1, 2, -2）</td><td>1</td></tr></tbody></table></figure>



<p>省略した場合は「先頭から完全一致で検索」という最もシンプルな動作になります。MATCH関数とは異なり、デフォルトが完全一致です。引数の指定ミスが起きにくいのがメリットです。</p>



<h3 class="wp-block-heading"><span id="toc5">一致モード4種の違い</span></h3>



<p>一致モードは検索値と範囲内の値をどう照合するかを決めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>一致モード</th><th>動作</th><th>データの並び順</th></tr></thead><tbody><tr><td>0（デフォルト）</td><td>完全一致。値がぴったり一致する位置を返す</td><td>不問</td></tr><tr><td>-1</td><td>検索値以下の最大値の位置を返す</td><td>不問</td></tr><tr><td>1</td><td>検索値以上の最小値の位置を返す</td><td>不問</td></tr><tr><td>2</td><td>ワイルドカード一致（*、?、~）</td><td>不問</td></tr></tbody></table></figure>



<p>MATCH関数の近似一致ではデータの並べ替えが必須でしたが、XMATCHなら並べ替え不要で近似一致ができます。</p>



<h3 class="wp-block-heading"><span id="toc6">検索モード4種の違い</span></h3>



<p>検索モードは範囲をどの方向から探すかを決めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>検索モード</th><th>動作</th><th>条件</th></tr></thead><tbody><tr><td>1（デフォルト）</td><td>先頭から検索</td><td>不問</td></tr><tr><td>-1</td><td>末尾から逆方向検索</td><td>不問</td></tr><tr><td>2</td><td>昇順ソート済みデータでバイナリサーチ</td><td>昇順必須</td></tr><tr><td>-2</td><td>降順ソート済みデータでバイナリサーチ</td><td>降順必須</td></tr></tbody></table></figure>



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



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



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



<p>次の社員管理表を例に見てみましょう。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>



<p>部署列（C2:C6）の中で「総務部」が何番目にあるか調べるにはこう書きます。</p>



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



<p>結果は「3」です。C2:C6の中で「総務部」はC4にあり、先頭から数えて3番目の位置です。</p>



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



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



<p>部分一致で検索したいときは、一致モードに「2」を指定します。<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>*（アスタリスク）</td><td>任意の文字列（0文字以上）</td><td>&#8220;*太郎&#8221; → 太郎で終わる値</td></tr><tr><td>?（クエスチョン）</td><td>任意の1文字</td><td>&#8220;E00?&#8221; → E001〜E009</td></tr><tr><td>~（チルダ）</td><td>*や?自体をエスケープ</td><td>&#8220;~<em>&#8221; → </em>を検索</td></tr></tbody></table></figure>



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



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



<p>結果は「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）ではワイルドカードは文字として扱われるので注意してください。</p></blockquote>



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



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



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



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



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



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



<p>MATCH関数の近似一致ではデータの昇順・降順ソートが必須でした。XMATCHなら並べ替え不要で近似一致ができます。</p>



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



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



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



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



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



<p>MATCH関数では逆順検索ができなかったため、回りくどい数式が必要でした。XMATCHなら検索モードに-1を指定するだけで解決です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>逆方向検索でも返る値は「先頭からの位置番号」です。たとえばB2:B100の80番目に該当データがあれば、検索方向に関係なく「80」が返ります。</p></blockquote>



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



<p>XMATCH関数が最も活躍するのは、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>との組み合わせです。</p>



<p><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>は検索列が範囲の左端にある必要があります。しかしINDEX+XMATCHなら、検索列と戻り値の列を自由に指定できます。</p>



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



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



<p>処理の流れを順に見ていきます。</p>



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



<p>検索範囲（C列）と戻り値の範囲（A列）を別々に指定できるため、左方向の検索も問題ありません。</p>



<h3 class="wp-block-heading"><span id="toc14">INDEX+XMATCHでクロス検索する（行と列を同時に指定）</span></h3>



<p>ちょっとむずかしく見えますが、やっていることはシンプルです。行と列の両方をXMATCHで動的に指定することで、クロス検索ができます。</p>



<p>「社員番号E003の役職を取得したい」とします。行の位置も列の位置もXMATCHで自動判定する数式です。</p>



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



<p>処理の流れを見てみましょう。</p>



<ol class="wp-block-list"><li>XMATCH(&#8220;E003&#8221;, A2:A6) → 「3」（3行目）</li><li>XMATCH(&#8220;役職&#8221;, A1:D1) → 「4」（4列目）</li><li>INDEX(A2:D6, 3, 4) → 「部長」を返す</li></ol>



<p>列の見出し名で検索するため、途中に列が追加されても数式が壊れません。大きな表を扱うときに重宝するパターンです。</p>



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



<p>XMATCH関数は検索値が見つからないと#N/Aエラーを返します。IFERROR関数で囲めば、エラー表示を防げます。</p>



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



<p>「マーケ部」はデータに存在しないため、「該当なし」が表示されます。</p>



<p>INDEX+XMATCHと組み合わせる場合は、全体をIFERRORで囲みます。</p>



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



<p>共有シートなど他の人が使う表では、IFERRORを付けておくのがおすすめです。</p>



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



<p>データが大量（数万行以上）で、すでに並べ替え済みの場合は、バイナリサーチが使えます。</p>



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



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



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



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



<p>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）を確認する</td></tr></tbody></table></figure>



<p>特にありがちなのが、データ型の不一致です。セルの見た目は同じ数字でも、片方が数値・もう片方が文字列だと一致と判定されません。</p>



<p>確認するにはセルを選択して、数式バーの表示をチェックしてください。文字列として入力された数字は左寄せで表示されます。VALUE関数（文字列を数値に変換する関数）で型を揃えると解決します。</p>



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



<p>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></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">どちらを選ぶべき？</span></h3>



<p>判断基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>新しく数式を作る場合</strong> → XMATCHがおすすめ。デフォルト完全一致で安全</li><li><strong>既存のシートを修正する場合</strong> → 既存のMATCHに合わせるのが無難</li><li><strong>末尾側の一致を取得したい場合</strong> → XMATCHの逆方向検索を使う</li><li><strong>大量データを高速検索したい場合</strong> → XMATCHのバイナリサーチを使う</li></ul>



<p>なお、値そのものを取得したい場合は<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>のほうがシンプルに書けます。XMATCH関数は位置番号が必要なケースや、INDEX関数との組み合わせでクロス検索をしたいケースで特に威力を発揮します。</p>



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



<p>XMATCH関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は =XMATCH(検索値, 検索範囲, 一致モード, 検索モード) の4引数。第3・第4引数は省略可</li><li>デフォルトが完全一致なので、引数の指定ミスが起きにくい</li><li>逆方向検索（検索モード-1）で最新データの位置を簡単に取得できる</li><li>近似一致で並べ替え不要になり、手間が減った</li><li>ワイルドカード一致は専用モード（一致モード2）で使用する</li><li><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>と組み合わせれば、縦横同時のクロス検索が可能</li></ul>



<p>まずは <code>=XMATCH("検索値", 範囲)</code> の完全一致パターンから試してみてください。MATCH関数を使っている方は、XMATCHに切り替えるだけで検索がグッと楽になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc21">関連記事</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-lookup-function/">スプレッドシートのLOOKUP関数の使い方｜検索（1行/1列）</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-xmatch-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのCOLUMN関数の使い方｜列番号を取得する方法</title>
		<link>https://mashukabu.com/spreadsheet-column-function/</link>
					<comments>https://mashukabu.com/spreadsheet-column-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:30 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[ROW関数]]></category>
		<category><![CDATA[列番号]]></category>
		<category><![CDATA[横方向連番]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4666</guid>

					<description><![CDATA[スプレッドシートのCOLUMN関数で列番号を取得する方法を解説。横方向の連番作成やINDEX・ADDRESS関数との組み合わせ技、ROW関数との違いまで、実務で使えるテクニックを紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「スプレッドシートで列の番号を調べたいけど、A列が1でB列が2で&#8230;と数えるのは面倒」そんな経験はありませんか？</p>



<p>列数が多い表だと、目的の列が何番目か数え間違えることもあります。手作業で数えていると時間もかかりますよね。</p>



<p>スプレッドシートのCOLUMN関数を使えば、列番号を一発で取得できます。横方向の連番作成やINDEX関数との組み合わせにも活用できますよ。</p>



<p>この記事では、COLUMN関数の基本から応用技まで紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのCOLUMN関数とは？基本の仕組みを理解しよう</a><ol><li><a href="#toc2" tabindex="0">COLUMN関数の基本構文</a></li><li><a href="#toc3" tabindex="0">COLUMN()引数なしとCOLUMN(A1)の違い</a></li></ol></li><li><a href="#toc4" tabindex="0">COLUMN関数で横方向の連番を作る方法</a><ol><li><a href="#toc5" tabindex="0">月別・日別のヘッダーを自動で作る</a></li><li><a href="#toc6" tabindex="0">表の開始列がA列でない場合の対処法</a></li><li><a href="#toc7" tabindex="0">TEXT関数と組み合わせて月名を自動生成する</a></li></ol></li><li><a href="#toc8" tabindex="0">INDEX+COLUMNの組み合わせ技</a><ol><li><a href="#toc9" tabindex="0">INDEX関数と組み合わせて動的に列を切り替える</a></li></ol></li><li><a href="#toc10" tabindex="0">ADDRESS+COLUMNの組み合わせ技</a><ol><li><a href="#toc11" tabindex="0">ADDRESS関数と組み合わせてセル番地を自動生成する</a></li></ol></li><li><a href="#toc12" tabindex="0">COLUMN関数とROW関数の違い・使い分け</a><ol><li><a href="#toc13" tabindex="0">比較表</a></li></ol></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc15" tabindex="0">まとめ</a><ol><li><a href="#toc16" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのCOLUMN関数とは？基本の仕組みを理解しよう</span></h2>



<p>COLUMN関数（読み方: カラム関数）は、<strong>セルの列番号を数値で返す関数</strong>です。「COLUMN」は英語で「列」を意味します。</p>



<p>たとえばセルC1にCOLUMN関数を入力すると、結果は「3」です。C列は左から3番目なので、その位置を数値で教えてくれます。</p>



<p>COLUMN関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>セルの列番号を数値で返す</li><li>引数を省略すると、数式が入っているセル自身の列番号を返す</li><li>横方向の連番作成に使える</li><li>他の関数と組み合わせて動的な参照を作れる</li></ul>



<h3 class="wp-block-heading"><span id="toc2">COLUMN関数の基本構文</span></h3>



<pre class="wp-block-code"><code>=COLUMN([セル参照])</code></pre>



<p>カッコの中に、列番号を知りたいセルを指定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>セル参照</td><td>任意</td><td>列番号を調べたいセル。省略すると数式のあるセル自身の列番号を返す</td></tr></tbody></table></figure>



<p>引数は1つだけで、しかも省略できます。ROW関数と同じく、とてもシンプルな構文ですね。</p>



<h3 class="wp-block-heading"><span id="toc3">COLUMN()引数なしとCOLUMN(A1)の違い</span></h3>



<p>COLUMN関数の使い方は大きく2つあります。</p>



<pre class="wp-block-code"><code>=COLUMN()</code></pre>



<p>引数なしで使うと、<strong>数式が入っているセルの列番号</strong>を返します。セルD3に入力すれば結果は「4」です。D列は左から4番目ですね。</p>



<pre class="wp-block-code"><code>=COLUMN(A1)</code></pre>



<p>セル参照を指定すると、<strong>そのセルの列番号</strong>を返します。どのセルに入力しても結果は「1」です。A列は常に1番目だからです。</p>



<p>範囲を指定した場合は、先頭列の番号だけが返ります。</p>



<pre class="wp-block-code"><code>=COLUMN(C3:F10)</code></pre>



<p>この結果は「3」です。C列からF列の範囲のうち、先頭のC列の列番号が返る仕組みです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>COLUMN関数はGoogleスプレッドシートの全バージョンで使えます。Excelでもまったく同じ構文で動作しますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">COLUMN関数で横方向の連番を作る方法</span></h2>



<p>COLUMN関数の最も実用的な使い方が、<strong>横方向に並ぶ連番</strong>の作成です。</p>



<h3 class="wp-block-heading"><span id="toc5">月別・日別のヘッダーを自動で作る</span></h3>



<p>たとえば、B1セルから右方向に「1, 2, 3&#8230;」と月番号を振りたい場合です。</p>



<pre class="wp-block-code"><code>=COLUMN()-1</code></pre>



<p>B1セルに入力すると <code>2-1=1</code>、C1セルなら <code>3-1=2</code> になります。数式を右にコピーするだけで連番が完成します。</p>



<p>列の挿入・削除にも自動で対応するので、手入力の番号より管理がラクです。</p>



<h3 class="wp-block-heading"><span id="toc6">表の開始列がA列でない場合の対処法</span></h3>



<p>実務では、表の左側にラベル列があるケースが多いですよね。たとえばデータがD列から始まる場合を考えてみましょう。</p>



<p><code>=COLUMN()-1</code> だとD列のセルは「3」になってしまいます。こんなときは次の数式を使います。</p>



<pre class="wp-block-code"><code>=COLUMN()-COLUMN($D$1)+1</code></pre>



<p><code>$D$1</code> はデータ開始列のセルです。絶対参照にするのがポイントです。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル位置</th><th>計算内容</th><th>結果</th></tr></thead><tbody><tr><td>D列</td><td>4 &#8211; 4 + 1</td><td>1</td></tr><tr><td>E列</td><td>5 &#8211; 4 + 1</td><td>2</td></tr><tr><td>F列</td><td>6 &#8211; 4 + 1</td><td>3</td></tr></tbody></table></figure>



<p>この方法なら、表がどの列から始まっても正しい連番になります。列を挿入・削除しても自動で振り直されるので安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">TEXT関数と組み合わせて月名を自動生成する</span></h3>



<p>COLUMN関数で作った連番を月名に変換するテクニックです。</p>



<pre class="wp-block-code"><code>=TEXT(DATE(2026,COLUMN()-1,1),&quot;M月&quot;)</code></pre>



<p>B1セルに入力して右にコピーすると、「1月, 2月, 3月&#8230;」と月名ヘッダーが自動で並びます。</p>



<p>DATE関数で各月の1日を作り、TEXT関数で月名に整形する流れです。COLUMN()-1 の部分が月番号になっています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>縦方向の連番にはROW関数、横方向の連番にはCOLUMN関数と覚えておくと迷いません。ROW関数の詳しい使い方は「<a href="https://mashukabu.com/spreadsheet-row-function/">スプレッドシートのROW関数の使い方</a>」で解説しています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">INDEX+COLUMNの組み合わせ技</span></h2>



<h3 class="wp-block-heading"><span id="toc9">INDEX関数と組み合わせて動的に列を切り替える</span></h3>



<p>INDEX関数（指定した範囲から行番号・列番号で値を取り出す関数）と組み合わせると、<strong>列の位置に連動して参照先が自動的に変わる数式</strong>を作れます。</p>



<p>たとえば、A1:E10に売上データが入っているとします。2行目以降のデータを、列番号に連動して取り出すケースです。</p>



<pre class="wp-block-code"><code>=INDEX($A$1:$E$10, 2, COLUMN())</code></pre>



<p>A列に入力すると1列目、B列なら2列目の値が取り出されます。数式を右にコピーするだけで、各列のデータを横に並べられます。</p>



<p>データの開始列がずれている場合は、オフセットを加えます。</p>



<pre class="wp-block-code"><code>=INDEX($A$1:$E$10, 2, COLUMN()-COLUMN($C$1)+1)</code></pre>



<p>C1セルから数式を入力し始める場合の例です。COLUMN()-COLUMN($C$1)+1 で常に1から始まる連番を作り、INDEXの列番号に渡しています。</p>



<p>この組み合わせが活きる場面は次のとおりです。</p>



<ul class="wp-block-list"><li>元データの列順を変えずに、別の場所で並び替えた表を作りたいとき</li><li>ダッシュボードで表示項目を切り替えたいとき</li><li>複数シートから同じ列位置のデータを集約したいとき</li></ul>



<p>INDEX関数の詳しい使い方は「<a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方</a>」で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc10">ADDRESS+COLUMNの組み合わせ技</span></h2>



<h3 class="wp-block-heading"><span id="toc11">ADDRESS関数と組み合わせてセル番地を自動生成する</span></h3>



<p>ADDRESS関数（行番号と列番号からセル番地の文字列を作る関数）にCOLUMN関数の結果を渡すと、<strong>セル番地を動的に生成</strong>できます。</p>



<pre class="wp-block-code"><code>=ADDRESS(1, COLUMN())</code></pre>



<p>A列に入力すると「$A$1」、B列なら「$B$1」が返ります。列の位置に応じてセル番地が自動で変わる仕組みです。</p>



<p>INDIRECT関数と組み合わせれば、生成したセル番地をそのまま参照に変換できます。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(ROW(), COLUMN()-1))</code></pre>



<p>この数式は「自分の1つ左のセルの値」を返します。ROW関数で行番号、COLUMN()-1 で1つ左の列番号を取得し、ADDRESS関数でセル番地を組み立てています。</p>



<p>こうした動的参照は、次のような場面で便利です。</p>



<ul class="wp-block-list"><li>累計計算で「1つ前のセルの値を足す」パターン</li><li>条件によって参照先の列を切り替えたいとき</li><li>マクロを使わずに柔軟なセル参照を実現したいとき</li></ul>



<p>ADDRESS関数の詳しい使い方は「<a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシートのADDRESS関数の使い方</a>」を参考にしてみてください。</p>



<h2 class="wp-block-heading"><span id="toc12">COLUMN関数とROW関数の違い・使い分け</span></h2>



<p>COLUMN関数とROW関数は、どちらもセルの位置を数値で返す関数です。取得する方向が異なります。</p>



<h3 class="wp-block-heading"><span id="toc13">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>COLUMN関数</th><th>ROW関数</th></tr></thead><tbody><tr><td>返す値</td><td>列番号（横方向の位置）</td><td>行番号（縦方向の位置）</td></tr><tr><td>構文</td><td><code>=COLUMN([セル参照])</code></td><td><code>=ROW([セル参照])</code></td></tr><tr><td>使用例</td><td><code>=COLUMN(C1)</code> → 3</td><td><code>=ROW(A3)</code> → 3</td></tr><tr><td>連番の方向</td><td>横方向（右にコピー）</td><td>縦方向（下にコピー）</td></tr><tr><td>よくある用途</td><td>横の連番、列ベースの動的参照</td><td>縦の連番、行ベースの動的参照</td></tr></tbody></table></figure>



<p>使い分けのポイントはシンプルです。</p>



<ul class="wp-block-list"><li><strong>横方向の連番やヘッダー</strong> → COLUMN関数</li><li><strong>縦方向の連番やナンバリング</strong> → ROW関数</li></ul>



<p>また、COLUMNS関数（範囲の列数を数える関数）との混同に注意してください。COLUMN関数は「<strong>何列目か</strong>」、COLUMNS関数は「<strong>何列あるか</strong>」を返す別の関数です。</p>



<pre class="wp-block-code"><code>=COLUMN(C3:F10)    → 3（先頭列の列番号）
=COLUMNS(C3:F10)   → 4（範囲の列数）</code></pre>



<p>ROW関数の詳しい使い方は「<a href="https://mashukabu.com/spreadsheet-row-function/">スプレッドシートのROW関数の使い方</a>」で解説しています。</p>



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



<p>COLUMN関数自体は非常にシンプルなので、単独でエラーになることはほとんどありません。ただし、他の関数と組み合わせたときにエラーが出るケースがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#REF!</code></td><td>参照先のセルや列が削除された</td><td>数式内のセル参照を確認し、有効な範囲に修正する</td></tr><tr><td><code>#VALUE!</code></td><td>COLUMN関数に文字列を渡した</td><td>引数にはセル参照のみ指定する。<code>"A1"</code> のような文字列は不可</td></tr><tr><td><code>#REF!</code>（INDIRECT併用時）</td><td>INDIRECT関数の参照先が存在しない</td><td>シート名やセルアドレスの文字列を確認する</td></tr><tr><td>連番がずれる</td><td>列の挿入・削除でオフセットが変わった</td><td><code>=COLUMN()-COLUMN($開始セル)+1</code> の形式で、開始セルを絶対参照にする</td></tr></tbody></table></figure>



<p>特に注意したいのが「連番がずれる」ケースです。単純な <code>=COLUMN()-1</code> だと、列を挿入したときにオフセット値が合わなくなります。</p>



<p>安全に連番を作りたい場合は、<code>=COLUMN()-COLUMN($開始セル)+1</code> のパターンを使ってください。開始セルを絶対参照にしておけば、列の挿入・削除に強くなりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>COLUMN関数の引数にセルアドレスの文字列を渡すのはよくある間違いです。<code>=COLUMN("C1")</code> はエラーになります。文字列をセル参照に変換したい場合は、INDIRECT関数を使いましょう。<code>=COLUMN(INDIRECT("C1"))</code> のように書けばOKです。</p></blockquote>



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



<p>COLUMN関数は、セルの列番号を返すシンプルな関数です。単体で使うだけでなく、横方向の連番や動的参照の土台として幅広く活用できます。</p>



<p>この記事のポイントをおさらいしておきましょう。</p>



<ul class="wp-block-list"><li>COLUMN関数は引数なしで自分のセルの列番号、セル参照指定でそのセルの列番号を返す</li><li><code>=COLUMN()-COLUMN($開始セル)+1</code> で、表がどの列から始まっても正しい横方向の連番を作れる</li><li>列の挿入・削除にも自動対応するので、手入力の番号より管理がラク</li><li>INDEX関数と組み合わせれば、列位置に連動する動的な値の取得ができる</li><li>ADDRESS関数と組み合わせれば、セル番地の動的生成もできる</li><li>COLUMN関数は「何列目か」、ROW関数は「何行目か」、COLUMNS関数は「何列あるか」</li></ul>



<p>まずは <code>=COLUMN()-COLUMN($A$1)+1</code> の横方向連番パターンから試してみてください。月別ヘッダーや日別の集計表で、すぐに効果を実感できますよ。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc16">この記事で紹介した関数・関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-row-function/">スプレッドシートのROW関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシートのADDRESS関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-column-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのINDEX関数の使い方｜行列指定で値を取得する方法</title>
		<link>https://mashukabu.com/spreadsheet-index-function/</link>
					<comments>https://mashukabu.com/spreadsheet-index-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:16 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[INDEX+MATCH]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[検索関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4660</guid>

					<description><![CDATA[スプレッドシートのINDEX関数の引数と基本構文を解説。MATCH関数と組み合わせてVLOOKUPでは難しい左列検索を実現する方法や、VLOOKUPとの使い分け基準も紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「社員番号から名前を引っ張りたいけど、VLOOKUPだと左側の列は検索できない」。スプレッドシートでこんな壁にぶつかったことはありませんか。</p>



<p>列の並びを変えれば対応できますが、元の表を崩すのは避けたいですよね。</p>



<p>そんなときに頼りになるのがINDEX関数です。行番号と列番号を指定するだけで、表のどこからでも値を取得できます。この記事では、INDEX関数の基本から実践的な使い方まで解説します。MATCH関数との組み合わせやVLOOKUPとの使い分けもカバーします。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのINDEX関数とは？</a></li><li><a href="#toc2" tabindex="0">INDEX関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">INDEX関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">行番号と列番号を指定して値を取得する</a></li><li><a href="#toc7" tabindex="0">行番号・列番号に0を指定する</a></li></ol></li><li><a href="#toc8" tabindex="0">INDEX+MATCHの組み合わせ（実践パターン）</a><ol><li><a href="#toc9" tabindex="0">INDEX+MATCHの基本パターン</a></li><li><a href="#toc10" tabindex="0">左列への逆引き検索（VLOOKUPでは不可能）</a></li><li><a href="#toc11" tabindex="0">2次元検索（行と列の両方をMATCHで検索）</a></li></ol></li><li><a href="#toc12" tabindex="0">VLOOKUPとINDEX+MATCHの使い分け</a><ol><li><a href="#toc13" tabindex="0">どちらを選ぶべき？</a></li></ol></li><li><a href="#toc14" tabindex="0">INDEX関数でよくあるエラーと対処法</a><ol><li><a href="#toc15" tabindex="0">#REF! エラー</a></li><li><a href="#toc16" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc17" tabindex="0">#N/A エラー（MATCH使用時）</a></li></ol></li><li><a href="#toc18" tabindex="0">INDEX関数のまとめ</a><ol><li><a href="#toc19" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのINDEX関数とは？</span></h2>



<p>INDEX関数（読み方: インデックス関数）は、範囲内の指定した行・列の位置にある値を返す関数です。名前はIndex（索引・見出し）が由来で、「表の中から座標を指定してピンポイントで値を取り出す」イメージです。</p>



<p>INDEX関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>行番号と列番号を指定して、表から値を1つ取得する</li><li>行番号に0を指定して、列全体を配列として返す</li><li>MATCH関数（検索値の位置番号を返す関数）と組み合わせて柔軟な検索を行う</li><li>VLOOKUPでは不可能な左方向への検索を実現する</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Googleスプレッドシートではarea_num（区画番号）引数に対応していません。Excelから数式を移行する場合はご注意ください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">INDEX関数の書き方（構文と引数）</span></h2>



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



<p>INDEX関数の構文はこちらです。</p>



<pre class="wp-block-code"><code>=INDEX(参照, [行], [列])</code></pre>



<p>引数は3つあります。行と列はどちらも省略できます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</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>A2:D5</td></tr><tr><td>行</td><td>省略可</td><td>範囲内の行番号（1から数える）</td><td>2</td></tr><tr><td>列</td><td>省略可</td><td>範囲内の列番号（1から数える）</td><td>3</td></tr></tbody></table></figure>



<p>行と列にはそれぞれ特殊な指定方法があります。</p>



<ul class="wp-block-list"><li><strong>0を指定した場合</strong>: 行に0を指定すると列全体、列に0を指定すると行全体を配列として返します</li><li><strong>省略した場合</strong>: 省略すると1が指定されたものとして扱われます</li></ul>



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



<h3 class="wp-block-heading"><span id="toc6">行番号と列番号を指定して値を取得する</span></h3>



<p>次の社員管理表を例に見てみましょう。A1:D5にデータが入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>社員番号</th><th>名前</th><th>部署</th><th>内線番号</th></tr></thead><tbody><tr><td>1001</td><td>田中</td><td>営業部</td><td>3001</td></tr><tr><td>1002</td><td>佐藤</td><td>経理部</td><td>3002</td></tr><tr><td>1003</td><td>鈴木</td><td>人事部</td><td>3003</td></tr><tr><td>1004</td><td>高橋</td><td>総務部</td><td>3004</td></tr></tbody></table></figure>



<p>データ部分（A2:D5）から2行目・3列目の値を取得するにはこう書きます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D5, 2, 3)</code></pre>



<p>結果は「経理部」です。A2:D5の2行目は佐藤の行、3列目は部署の列なので、その交差する値が返ります。</p>



<p>もう1つ試してみましょう。3行目・2列目を指定します。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D5, 3, 2)</code></pre>



<p>結果は「鈴木」です。行と列の番号は範囲の左上を起点にカウントする点がポイントです。</p>



<h3 class="wp-block-heading"><span id="toc7">行番号・列番号に0を指定する</span></h3>



<p>行番号に0を指定すると、指定した列全体が配列として返ります。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D5, 0, 2)</code></pre>



<p>この数式は名前列（B列のデータ部分）を丸ごと返します。SUM関数やAVERAGE関数の引数として使うと便利です。</p>



<p>同様に列番号に0を指定すると、指定した行全体が返ります。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D5, 1, 0)</code></pre>



<p>結果は田中の行全体（1001, 田中, 営業部, 3001）です。</p>



<h2 class="wp-block-heading"><span id="toc8">INDEX+MATCHの組み合わせ（実践パターン）</span></h2>



<p>INDEX関数の真価は、MATCH関数と組み合わせたときに発揮されます。MATCH関数は検索値が範囲内の何番目にあるかを返す関数です。</p>



<h3 class="wp-block-heading"><span id="toc9">INDEX+MATCHの基本パターン</span></h3>



<p>基本の構文はこちらです。</p>



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



<p>MATCH関数の第3引数「0」は完全一致を意味します。</p>



<p>先ほどの社員管理表で、社員番号1003の部署を取得してみましょう。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C5, MATCH(1003, A2:A5, 0))</code></pre>



<p>処理の流れを順に見ていきます。</p>



<ol class="wp-block-list"><li>MATCH(1003, A2:A5, 0) → A2:A5の中で1003は3番目 → 「3」を返す</li><li>INDEX(C2:C5, 3) → C2:C5の3番目 → 「人事部」を返す</li></ol>



<p>VLOOKUPと似た動きですが、検索列と戻り値の列を別々に指定できるのが大きな違いです。</p>



<h3 class="wp-block-heading"><span id="toc10">左列への逆引き検索（VLOOKUPでは不可能）</span></h3>



<p>INDEX+MATCHが最も活躍するのが、左方向への検索です。</p>



<p>たとえば「経理部の社員番号を知りたい」とします。部署（C列）で検索して社員番号（A列）を返す、つまり右から左への検索です。<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>では左方向の検索ができないため、この場面ではINDEX+MATCHの出番です。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A5, MATCH(&quot;経理部&quot;, C2:C5, 0))</code></pre>



<p>処理の流れは次のとおりです。</p>



<ol class="wp-block-list"><li>MATCH(&#8220;経理部&#8221;, C2:C5, 0) → C2:C5の中で経理部は2番目 → 「2」を返す</li><li>INDEX(A2:A5, 2) → A2:A5の2番目 → 「1002」を返す</li></ol>



<p>検索範囲と戻り値の範囲を自由に設定できるため、列の位置に制約がありません。</p>



<h3 class="wp-block-heading"><span id="toc11">2次元検索（行と列の両方をMATCHで検索）</span></h3>



<p>ちょっとむずかしく見えますが、行と列の両方をMATCHで動的に指定することもできます。</p>



<p>「社員番号1002の内線番号を取得したい」とします。行の位置も列の位置もMATCHで自動判定する数式です。</p>



<pre class="wp-block-code"><code>=INDEX(A2:D5, MATCH(1002, A2:A5, 0), MATCH(&quot;内線番号&quot;, A1:D1, 0))</code></pre>



<p>処理の流れを見てみましょう。</p>



<ol class="wp-block-list"><li>MATCH(1002, A2:A5, 0) → 「2」（2行目）</li><li>MATCH(&#8220;内線番号&#8221;, A1:D1, 0) → 「4」（4列目）</li><li>INDEX(A2:D5, 2, 4) → 「3002」を返す</li></ol>



<p>列の見出し名で検索するため、途中に列が追加されても数式が壊れません。大きな表を扱うときに重宝するパターンです。</p>



<h2 class="wp-block-heading"><span id="toc12">VLOOKUPとINDEX+MATCHの使い分け</span></h2>



<p>どちらを使うべきか迷う方も多いと思います。比較表で整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>特徴</th><th>VLOOKUP</th><th>INDEX+MATCH</th></tr></thead><tbody><tr><td>左方向検索</td><td>不可</td><td>可能</td></tr><tr><td>列追加への耐性</td><td>弱い（番号がズレる）</td><td>強い（列名で検索）</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>やや複雑</td></tr><tr><td>処理速度（大量データ）</td><td>やや遅い</td><td>速い</td></tr><tr><td>デフォルトの一致方式</td><td>近似一致（TRUE）</td><td>完全一致（0指定）</td></tr><tr><td>複数列を一括で返す</td><td>不可</td><td>不可</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc13">どちらを選ぶべき？</span></h3>



<p>判断基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>検索列が範囲の左端にある単純な表引き</strong> → VLOOKUPで十分</li><li><strong>左方向への検索が必要</strong> → INDEX+MATCHを使う</li><li><strong>列の追加・削除が頻繁にある表</strong> → INDEX+MATCHが安全</li><li><strong>大量データ（数万行以上）を扱う</strong> → INDEX+MATCHのほうが高速</li></ul>



<p>なお、Googleスプレッドシートでは2022年以降、XLOOKUP関数（VLOOKUPより柔軟な検索関数）が使えます。左方向検索やエラー時の既定値指定など、INDEX+MATCHの利点の多くをカバーしています。新しく数式を作るならXLOOKUPも選択肢に入れてみてください。</p>



<p>VLOOKUPの詳しい使い方は「<a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方</a>」で解説しています。横方向の検索が必要な場合は「<a href="https://mashukabu.com/spreadsheet-hlookup-function/">スプレッドシートのHLOOKUP関数の使い方</a>」も参考にしてください。</p>



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



<h3 class="wp-block-heading"><span id="toc15">#REF! エラー</span></h3>



<p>行番号または列番号が範囲の大きさを超えているときに出ます。</p>



<p>たとえばA2:D5は4行4列の範囲です。行番号に5以上、列番号に5以上を指定すると#REF!エラーになります。範囲のサイズと指定した番号を見直してください。</p>



<h3 class="wp-block-heading"><span id="toc16">#VALUE! エラー</span></h3>



<p>行番号や列番号に負の数や文字列を指定すると発生します。</p>



<p>MATCH関数の結果が正しく数値を返しているか確認しましょう。セル参照先が空白や文字列になっていないかもチェックポイントです。</p>



<h3 class="wp-block-heading"><span id="toc17">#N/A エラー（MATCH使用時）</span></h3>



<p>INDEX+MATCHの組み合わせで起きやすいエラーです。MATCH関数が検索値を見つけられないときに発生します。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>検索値がデータに存在しない</td><td>データを追加するか、IFERRORで対処</td></tr><tr><td>データ型の不一致（数値と文字列）</td><td>検索値と検索範囲のデータ型を揃える</td></tr><tr><td>余分なスペースが含まれている</td><td>TRIM関数で空白を除去する</td></tr></tbody></table></figure>



<p>IFERROR関数（エラー時に別の値を返す関数）で囲めば、エラー表示を防げます。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(C2:C5, MATCH(1005, A2:A5, 0)), &quot;見つかりません&quot;)</code></pre>



<p>社員番号1005はデータに存在しないため、「見つかりません」が表示されます。</p>



<h2 class="wp-block-heading"><span id="toc18">INDEX関数のまとめ</span></h2>



<p>INDEX関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は =INDEX(参照, 行, 列) の3引数。行と列は省略可</li><li>行・列番号は範囲の左上を起点に1から数える</li><li>MATCH関数と組み合わせると、VLOOKUPでは不可能な左方向検索ができる</li><li>2次元検索なら行・列の両方をMATCHで指定する</li><li>エラー対策にはIFERROR関数を組み合わせるのが定番</li></ul>



<p>まずはINDEX+MATCHの基本パターンから試してみてください。一度覚えれば、VLOOKUPの制約に悩まされることがなくなります。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方｜別シート参照・エラー対処まで解説</a></li><li><a href="https://mashukabu.com/spreadsheet-hlookup-function/">スプレッドシートのHLOOKUP関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方｜VLOOKUPとの違いも解説</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方｜条件に合うデータを自動抽出</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-index-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのMATCH関数の使い方｜INDEX+MATCHで左側も検索できる</title>
		<link>https://mashukabu.com/spreadsheet-match-function/</link>
					<comments>https://mashukabu.com/spreadsheet-match-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:07 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[INDEX+MATCH]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[検索関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4656</guid>

					<description><![CDATA[スプレッドシートのMATCH関数の使い方を実務目線で解説。基本の書き方から、INDEX+MATCHでVLOOKUPの左側制限を超えるテクニック、照合の種類0・1・-1の違い、#N/Aエラー対処法まで網羅。]]></description>
										<content:encoded><![CDATA[
<p>「検索した値が表の何番目にあるか知りたい」。スプレッドシートでデータを扱っていると、そんな場面がよくありますよね。</p>



<p>VLOOKUPで値を引っ張ることはできても、位置番号そのものは取得できません。検索列より左にある値を取りたいときも、VLOOKUPだけではお手上げです。</p>



<p>そこで活躍するのがMATCH関数です。検索値が範囲の何番目にあるかを数値で返してくれます。この記事では、MATCH関数の基本から実践的な使い方まで解説します。INDEX関数との組み合わせで左側の列を検索する方法や、エラー対策もカバーしていきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのMATCH関数とは？</a></li><li><a href="#toc2" tabindex="0">MATCH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">検索の種類 0・1・-1 の違い</a></li></ol></li><li><a href="#toc6" tabindex="0">MATCH関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">完全一致で位置を取得する（検索の種類 0）</a></li><li><a href="#toc8" tabindex="0">ワイルドカードで部分一致検索する</a></li></ol></li><li><a href="#toc9" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc10" tabindex="0">INDEX+MATCHで左側の列を検索する（VLOOKUPの制限を超える）</a></li><li><a href="#toc11" tabindex="0">INDEX+MATCHでクロス検索する（行と列を同時に指定）</a></li><li><a href="#toc12" tabindex="0">IFERRORと組み合わせてエラーを防ぐ</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">MATCH関数とXMATCH関数の違い・使い分け</a><ol><li><a href="#toc15" tabindex="0">どちらを選ぶべき？</a></li></ol></li><li><a href="#toc16" tabindex="0">まとめ</a><ol><li><a href="#toc17" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのMATCH関数とは？</span></h2>



<p>MATCH関数（読み方: マッチ関数）は、指定した値が範囲の中で何番目にあるかを返す関数です。名前はMatch（一致する）が由来で、「探している値の位置番号を教えてくれる」イメージです。</p>



<p>MATCH関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>検索値が範囲の何番目にあるかを数値で返す</li><li>完全一致・近似一致（以下/以上）の3種類の検索モードに対応する</li><li>ワイルドカードを使った部分一致検索ができる</li><li><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>と組み合わせて柔軟な表引きを実現する</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>MATCH関数が返すのは値そのものではなく「位置番号」です。値を直接取得したい場合は、INDEX関数やVLOOKUP関数と組み合わせて使います。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">MATCH関数の書き方（構文と引数）</span></h2>



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



<p>MATCH関数の構文はこちらです。</p>



<pre class="wp-block-code"><code>=MATCH(検索キー, 範囲, [検索の種類])</code></pre>



<p>引数は3つあります。検索の種類は省略できます。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</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</td></tr><tr><td>範囲</td><td>必須</td><td>検索対象の1行または1列の範囲</td><td>A2:A6</td></tr><tr><td>検索の種類</td><td>省略可</td><td>検索モードの指定（0, 1, -1）</td><td>0</td></tr></tbody></table></figure>



<p>範囲には1行または1列のみ指定できます。2次元の範囲（A1:C5など）を指定すると#VALUE!エラーになるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc5">検索の種類 0・1・-1 の違い</span></h3>



<p>検索の種類は3つのモードから選べます。</p>



<figure class="wp-block-table"><table><thead><tr><th>検索の種類</th><th>動作</th><th>データの並び順</th></tr></thead><tbody><tr><td>0</td><td>完全一致。値がぴったり一致する位置を返す</td><td>不問</td></tr><tr><td>1（省略時のデフォルト）</td><td>検索キー以下の最大値の位置を返す</td><td>昇順が必須</td></tr><tr><td>-1</td><td>検索キー以上の最小値の位置を返す</td><td>降順が必須</td></tr></tbody></table></figure>



<p>実務では完全一致（0）を使うケースがほとんどです。省略すると1（近似一致・昇順）になるため、意図しない結果を防ぐためにも明示的に0を指定するのがおすすめです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>検索の種類を1または-1にするときは、データが正しくソートされている必要があります。ソートされていないと正しい結果が返りません。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc7">完全一致で位置を取得する（検索の種類 0）</span></h3>



<p>次の社員管理表を例に見てみましょう。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>



<p>部署列（C2:C6）の中で「総務部」が何番目にあるか調べるにはこう書きます。</p>



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



<p>結果は「3」です。C2:C6の中で「総務部」はC4にあり、先頭から数えて3番目の位置です。</p>



<p>もう1つ試してみましょう。氏名列（B2:B6）の中で「高橋健一」の位置を調べます。</p>



<pre class="wp-block-code"><code>=MATCH(&quot;高橋健一&quot;, B2:B6, 0)</code></pre>



<p>結果は「5」です。範囲の先頭から1始まりで数える点がポイントです。</p>



<p>なお、MATCH関数は大文字と小文字を区別しません。社員番号で検索する場合、「e003」と入力しても「E003」と同じ結果が返ります。</p>



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



<p>検索の種類を0にすると、ワイルドカードが使えます。名前の一部だけで検索したいときに便利です。</p>



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



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



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



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



<p>複数一致する場合は最初に見つかった位置が返ります。たとえば「営業部」が2つあるデータで検索すると、先頭側の位置が返る仕組みです。</p>



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



<h3 class="wp-block-heading"><span id="toc10">INDEX+MATCHで左側の列を検索する（VLOOKUPの制限を超える）</span></h3>



<p>MATCH関数が最も活躍するのは、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>との組み合わせです。</p>



<p><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>は検索列が範囲の左端にある必要があります。しかしINDEX+MATCHなら、検索列と戻り値の列を自由に指定できます。</p>



<p>たとえば「営業部の課長の社員番号を知りたい」とします。部署（C列）と役職（D列）で検索して、社員番号（A列）を返す数式です。</p>



<p>まずは、部署列から「営業部」の位置を取得するシンプルな例を見てみましょう。</p>



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



<p>処理の流れを順に見ていきます。</p>



<ol class="wp-block-list"><li>MATCH(&#8220;営業部&#8221;, C2:C6, 0) → C2:C6の中で「営業部」は1番目 → 「1」を返す</li><li>INDEX(A2:A6, 1) → A2:A6の1番目 → 「E001」を返す</li></ol>



<p>検索範囲（C列）と戻り値の範囲（A列）を別々に指定できるため、左方向の検索も問題ありません。VLOOKUPでは実現できない逆引き検索です。</p>



<h3 class="wp-block-heading"><span id="toc11">INDEX+MATCHでクロス検索する（行と列を同時に指定）</span></h3>



<p>ちょっとむずかしく見えますが、やっていることはシンプルです。行と列の両方をMATCHで動的に指定することで、クロス検索ができます。</p>



<p>「社員番号E003の役職を取得したい」とします。行の位置も列の位置もMATCHで自動判定する数式です。</p>



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



<p>処理の流れを見てみましょう。</p>



<ol class="wp-block-list"><li>MATCH(&#8220;E003&#8221;, A2:A6, 0) → 「3」（3行目）</li><li>MATCH(&#8220;役職&#8221;, A1:D1, 0) → 「4」（4列目）</li><li>INDEX(A2:D6, 3, 4) → 「部長」を返す</li></ol>



<p>列の見出し名で検索するため、途中に列が追加されても数式が壊れません。大きな表を扱うときに重宝するパターンです。</p>



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



<p>MATCH関数は検索値が見つからないと#N/Aエラーを返します。IFERROR関数（エラー時に別の値を返す関数）で囲めば、エラー表示を防げます。</p>



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



<p>「マーケ部」はデータに存在しないため、「該当なし」が表示されます。</p>



<p>INDEX+MATCHと組み合わせる場合は、全体をIFERRORで囲みます。</p>



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



<p>社員番号E010はデータに存在しないため、「見つかりません」が表示されます。共有シートなど他の人が使う表では、IFERRORを付けておくのがおすすめです。</p>



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



<p>MATCH関数で発生しやすいエラーとその原因をまとめます。</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>検索の種類1/-1でデータが正しくソートされていない</td><td>データを昇順/降順に並べ替えるか、検索の種類を0にする</td></tr><tr><td>#N/A</td><td>データ型の不一致（数値と文字列の混在）</td><td>検索値と範囲のデータ型を揃える</td></tr><tr><td>#VALUE!</td><td>範囲に2次元の範囲を指定した（例: A1:C5）</td><td>1行または1列の範囲に変更する</td></tr></tbody></table></figure>



<p>特にありがちなのが、データ型の不一致です。セルの見た目は同じ数字でも、片方が数値・もう片方が文字列だとMATCH関数は一致と判定しません。</p>



<p>確認するにはセルを選択して、数式バーの表示をチェックしてください。文字列として入力された数字には左寄せ表示になる特徴があります。VALUE関数（文字列を数値に変換する関数）で型を揃えると解決します。</p>



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



<p>Googleスプレッドシートでは2022年以降、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>完全一致（0）</td></tr><tr><td>近似一致のソート要件</td><td>昇順/降順が必須</td><td>ソート不要</td></tr><tr><td>逆方向検索（末尾から検索）</td><td>不可</td><td>可能（検索モード-1）</td></tr><tr><td>ワイルドカード</td><td>検索の種類0で使用可</td><td>ワイルドカードモード（2）で使用可</td></tr></tbody></table></figure>



<p>XMATCHの大きなメリットは2つあります。</p>



<ul class="wp-block-list"><li><strong>デフォルトが完全一致</strong>。検索の種類を省略しても正確な結果が返ります</li><li><strong>逆方向検索ができる</strong>。同じ値が複数ある場合、末尾側の位置を取得できます</li></ul>



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



<p>上の数式はMATCH関数で書くと次のようになります。</p>



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



<p>XMATCHのほうが引数を省略できる分、シンプルに書けます。</p>



<h3 class="wp-block-heading"><span id="toc15">どちらを選ぶべき？</span></h3>



<p>判断基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>新しく数式を作る場合</strong> → XMATCHがおすすめ。デフォルト完全一致で安全</li><li><strong>既存のシートを修正する場合</strong> → 既存のMATCHに合わせるのが無難</li><li><strong>末尾側の一致を取得したい場合</strong> → XMATCHの逆方向検索を使う</li></ul>



<p>なお、ExcelファイルをGoogleスプレッドシートで開く場合、XMATCHはExcel 2021以降でしか対応していません。互換性が気になるならMATCH関数を使っておくのが安心です。</p>



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



<p>MATCH関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は =MATCH(検索キー, 範囲, 検索の種類) の3引数。検索の種類は省略可</li><li>検索の種類は0（完全一致）を明示するのがおすすめ。省略時は1（近似一致）</li><li>戻り値は「位置番号」。値そのものを取得するにはINDEX関数と組み合わせる</li><li>INDEX+MATCHで<a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP関数</a>では不可能な左方向の検索ができる</li><li>ワイルドカード（*、?）を使えば部分一致検索にも対応</li><li>エラー対策にはIFERROR関数を組み合わせるのが定番</li></ul>



<p>まずは=MATCH(&#8220;検索値&#8221;, 範囲, 0)の完全一致パターンから試してみてください。位置番号の仕組みがわかれば、INDEX+MATCHの応用もスムーズに進みます。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方｜行列指定で値を取得する方法</a></li><li><a href="https://mashukabu.com/spreadsheet-vlookup-function/">スプレッドシートのVLOOKUP関数の使い方｜別シート参照・エラー対処まで解説</a></li><li><a href="https://mashukabu.com/spreadsheet-hlookup-function/">スプレッドシートのHLOOKUP関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-match-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>「VLOOKUPとXLOOKUPって何が違うの？」と迷ったことはありませんか。「INDEX+MATCHのほうがいい」なんて声も聞きますよね。</p>



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



<p>この記事では、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-6" checked><label class="toc-title" for="toc-checkbox-6">目次</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>最初に結論をお伝えします。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>自分の環境に合った関数を判定してみてください。</p>



<p><strong>ステップ1: Excelのバージョンを確認</strong></p>



<p>お使いの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><strong>ステップ2: ファイルを共有する相手のバージョン</strong></p>



<p>古いバージョンの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><strong>ステップ3: 検索方向の確認</strong></p>



<p>検索値より左側の列から値を取得する必要がありますか？</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>たとえば、社員番号「A003」の名前を取得したい場合です。</p>



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



<p>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>VLOOKUPには2つの弱点があります。</p>



<p><strong>1. 左方向に検索できない</strong></p>



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



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



<p><strong>2. 列番号がハードコードでずれやすい</strong></p>



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



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



<p>詳しくは「<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>同じく社員番号「A003」の名前を取得する場合です。</p>



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



<p>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>XLOOKUPでエラー処理を組み込む例です。</p>



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



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



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



<p><strong>1. 対応バージョンが限られる</strong></p>



<p>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><strong>2. ネット上の情報がまだ少ない</strong></p>



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



<p>詳しくは「<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>INDEX関数とMATCH関数を組み合わせて使います。</p>



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



<p>社員番号「A003」の名前を取得する場合です。</p>



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



<p>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><strong>1. 数式が長くなる</strong></p>



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



<p><strong>2. 学習コストがやや高い</strong></p>



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



<p>それぞれの詳しい使い方は以下の記事で解説しています。</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>ここからは、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>XLOOKUPだけがExcel 2021以降に限定されています。社内でバージョンが統一されていない場合は、VLOOKUPかINDEX+MATCHを選んでください。</p>



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



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



<p>たとえば次のような表があるとします。</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>「商品コード 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>検索値が見つからない場合の動作を比較します。</p>



<p><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><strong>XLOOKUPの場合（第4引数で指定）</strong></p>



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



<p><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>XLOOKUPが最もシンプルです。エラー処理を関数内で完結できるのは大きなメリットです。</p>



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



<p>数万行を超えるデータで検索する場合、処理速度に差が出ます。</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>体感できるほどの差が出るのは、数万行以上の表で大量に数式を使う場合です。数百行程度なら速度差はほぼ気になりません。</p>



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



<p>3つの関数で起きやすいトラブルをまとめました。</p>



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



<p>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>エラー処理には<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>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>ヘッダー行から「価格」列の位置を自動で取得しています。列を挿入しても数式がずれません。</p>



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



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



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



<p>XLOOKUP → INDEX+MATCHの書き換え例です。</p>



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



<p>上の数式は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>機能は同じです。XLOOKUPのほうが短いですが、INDEX+MATCHなら全バージョンで動きます。</p>



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



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



<p>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>【Excel】INDEX関数とは？使い方・MATCH連携・エラー対処を解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-index/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-index/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 22 May 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[検索・行列関数]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2303</guid>

					<description><![CDATA[ExcelのINDEX関数の使い方を基本から応用まで解説。構文・引数の意味、MATCH関数との組み合わせ、VLOOKUP・XLOOKUPとの使い分け、よくあるエラーの対処法まで、実務で使える具体例つきで紹介します。]]></description>
										<content:encoded><![CDATA[
<p>ExcelのINDEX関数は、表の中から「何行目・何列目」を指定して値を取り出す関数です。</p>



<p>「VLOOKUPだと左側の列を検索できない」「もっと柔軟にデータを取り出したい」と思ったことはありませんか？ INDEX関数を覚えると、こうした悩みをスッキリ解決できます。</p>



<p>この記事では、INDEX関数の基本構文から、MATCH関数との組み合わせ方、VLOOKUP・XLOOKUPとの使い分け、よくあるエラーの対処法まで、実務で使える具体例をまじえて解説していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">INDEX関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">INDEX関数でできること</a></li><li><a href="#toc4" tabindex="0">配列形式とセル参照形式</a></li></ol></li><li><a href="#toc5" tabindex="0">INDEX関数の書き方（構文と引数）</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc8" tabindex="0">INDEX関数の基本的な使い方</a><ol><li><a href="#toc9" tabindex="0">指定した行・列の値を取得する</a></li><li><a href="#toc10" tabindex="0">行番号・列番号に0を指定して行全体・列全体を返す</a></li></ol></li><li><a href="#toc11" tabindex="0">INDEX関数とMATCH関数の組み合わせ</a><ol><li><a href="#toc12" tabindex="0">INDEX+MATCHの基本パターン</a></li><li><a href="#toc13" tabindex="0">2方向のINDEX+MATCH（クロス検索）</a></li><li><a href="#toc14" tabindex="0">VLOOKUPとの違い・使い分け</a></li><li><a href="#toc15" tabindex="0">XLOOKUPとの使い分け</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#REF! エラー</a></li><li><a href="#toc18" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc19" tabindex="0">#N/A エラー（INDEX+MATCH連携時）</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">INDEX関数とは？</span></h2>



<h3 class="wp-block-heading"><span id="toc2">読み方と語源</span></h3>



<p>読み方は「インデックス関数」です。英語の「index」は「索引・目次」を意味します。表の中から目次のように位置を指定してデータを引っ張ってくる、というイメージですね。</p>



<h3 class="wp-block-heading"><span id="toc3">INDEX関数でできること</span></h3>



<p>INDEX関数は、<strong>指定した行番号・列番号の位置にあるセルの値を返す関数</strong>です。</p>



<p>たとえば「売上管理表の3行目・2列目の値を取り出したい」というケースで活躍します。VLOOKUPのように検索値を使うのではなく、行と列の番号をダイレクトに指定するのが特徴です。</p>



<p>対応環境は、Excel for Microsoft 365、Excel 2024、Excel 2021、Excel 2019、Excel 2016、Excel for the web、Excel for Macです。幅広いバージョンで使えるので安心してください。</p>



<h3 class="wp-block-heading"><span id="toc4">配列形式とセル参照形式</span></h3>



<p>実はINDEX関数には「配列形式」と「セル参照形式」の2種類があります。</p>



<ul class="wp-block-list"><li><strong>配列形式</strong>: <code>=INDEX(配列, 行番号, [列番号])</code> — 通常使うのはこちら</li><li><strong>セル参照形式</strong>: <code>=INDEX(参照, 行番号, [列番号], [領域番号])</code> — 複数の離れた範囲を切り替えて扱いたいときに使う</li></ul>



<p>実務ではほぼ配列形式で事足りるので、この記事では配列形式を中心に解説します。</p>



<h2 class="wp-block-heading"><span id="toc5">INDEX関数の書き方（構文と引数）</span></h2>



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



<p>INDEX関数の構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=INDEX(配列, 行番号, [列番号])</code></pre>



<p>引数は3つありますが、列番号は省略できます。配列が1列だけの場合は、行番号だけで値を取り出せるということですね。</p>



<h3 class="wp-block-heading"><span id="toc7">引数の詳細</span></h3>



<p>各引数の意味を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>配列</td><td>必須</td><td>値を取り出す対象のセル範囲、または配列定数を指定します</td></tr><tr><td>行番号</td><td>必須（※）</td><td>配列の中で値を取り出したい行の位置を数値で指定します</td></tr><tr><td>列番号</td><td>任意</td><td>配列の中で値を取り出したい列の位置を数値で指定します</td></tr></tbody></table></figure>



<p>※列番号を指定する場合は、行番号に <code>0</code> を指定することで省略に相当する扱いになります。</p>



<p>ポイントを補足しておきます。</p>



<ul class="wp-block-list"><li><strong>行番号に「0」を指定</strong>すると、列全体の値を配列として返します</li><li><strong>列番号に「0」を指定</strong>すると、行全体の値を配列として返します</li><li>行番号・列番号に配列の範囲外の数値を指定すると、<code>#REF!</code> エラーになります</li></ul>



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



<h3 class="wp-block-heading"><span id="toc9">指定した行・列の値を取得する</span></h3>



<p>まずは一番シンプルな使い方です。次のような社員名簿があるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>名前</td><td>部署</td><td>内線番号</td></tr><tr><td>2</td><td>田中</td><td>営業部</td><td>1001</td></tr><tr><td>3</td><td>佐藤</td><td>経理部</td><td>2001</td></tr><tr><td>4</td><td>鈴木</td><td>人事部</td><td>3001</td></tr></tbody></table></figure>



<p>ここから「佐藤の内線番号（2行目・3列目）」を取得するには、次のように書きます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, 2, 3)</code></pre>



<p>結果は <code>2001</code> が返ります。配列 <code>A2:C4</code> の2行目・3列目、つまりセルC3の値を取り出しているわけです。</p>



<p>もうひとつ例を見てみましょう。配列が1列だけの場合は、列番号を省略できます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A4, 3)</code></pre>



<p>この場合は「鈴木」が返ります。1列の範囲から3番目の値を取り出す、というシンプルな使い方です。</p>



<h3 class="wp-block-heading"><span id="toc10">行番号・列番号に0を指定して行全体・列全体を返す</span></h3>



<p>行番号または列番号に「0」を指定すると、行全体や列全体の値を配列として取得できます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, 0, 2)</code></pre>



<p>この数式は、2列目（B列）の全データ、つまり「営業部」「経理部」「人事部」を配列として返します。SUM関数やAVERAGE関数と組み合わせると便利ですよ。</p>



<pre class="wp-block-code"><code>=SUM(INDEX(A2:C4, 0, 3))</code></pre>



<p>こうすると、3列目（内線番号）の合計を返します。ちょっとむずかしく見えますが、やっていることはシンプルです。「0」は「全部ちょうだい」という意味だと覚えておけばOKです。</p>



<h2 class="wp-block-heading"><span id="toc11">INDEX関数とMATCH関数の組み合わせ</span></h2>



<p>INDEX関数の真価は、MATCH関数と組み合わせたときに発揮されます。ここが一番実務で役立つパートなので、しっかり押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">INDEX+MATCHの基本パターン</span></h3>



<p>MATCH関数は、指定した値が範囲内の何番目にあるかを返す関数です。この「何番目か」をINDEX関数の行番号に渡すことで、検索値に対応するデータを柔軟に取り出せます。</p>



<p>基本パターンはこちらです。</p>



<pre class="wp-block-code"><code>=INDEX(取り出したい範囲, MATCH(検索値, 検索する範囲, 0))</code></pre>



<p>先ほどの社員名簿で、「佐藤」の内線番号を検索値から取得する場合はこうなります。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C4, MATCH(&quot;佐藤&quot;, A2:A4, 0))</code></pre>



<p>処理の流れを分解すると、次のようになります。</p>



<ol class="wp-block-list"><li><code>MATCH("佐藤", A2:A4, 0)</code> → 「佐藤」はA2:A4の2番目なので <code>2</code> を返す</li><li><code>INDEX(C2:C4, 2)</code> → C2:C4の2番目の値 <code>2001</code> を返す</li></ol>



<p>MATCH関数の第3引数「0」は完全一致を意味します。ほとんどの場合は「0」を指定すると覚えておいてください。</p>



<p>MATCH関数の詳しい使い方は、こちらの記事で解説しています。</p>



<p><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数で範囲内から値を検索し、相対的な位置を取得する</a></p>



<h3 class="wp-block-heading"><span id="toc13">2方向のINDEX+MATCH（クロス検索）</span></h3>



<p>MATCH関数を行番号と列番号の両方に入れると、「縦軸と横軸から交差するセルを取り出す」クロス検索ができます。</p>



<p>たとえば、商品×月のマトリクス表から「商品B」の「3月」の売上を取り出すには、こう書きます。</p>



<pre class="wp-block-code"><code>=INDEX(B2:D5, MATCH(&quot;商品B&quot;, A2:A5, 0), MATCH(&quot;3月&quot;, B1:D1, 0))</code></pre>



<p>行方向と列方向、どちらの検索も柔軟にできるのがINDEX+MATCHの強みです。XLOOKUPが使えない環境でも、この組み合わせなら同じことが実現できます。</p>



<h3 class="wp-block-heading"><span id="toc14">VLOOKUPとの違い・使い分け</span></h3>



<p>「VLOOKUPがあるならINDEX+MATCHは要らないのでは？」と思うかもしれません。実は、INDEX+MATCHにはVLOOKUPにない大きなメリットがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>VLOOKUP</th><th>INDEX+MATCH</th></tr></thead><tbody><tr><td>検索方向</td><td>左端列のみ検索可能</td><td>どの列でも検索可能</td></tr><tr><td>列の挿入・削除</td><td>列番号がずれてエラーの原因になる</td><td>範囲指定なので影響を受けにくい</td></tr><tr><td>処理速度</td><td>データ量が多いと遅くなりやすい</td><td>VLOOKUPより高速な場合がある</td></tr><tr><td>数式の読みやすさ</td><td>シンプルで直感的</td><td>慣れるまでやや複雑</td></tr></tbody></table></figure>



<p>特に重要なのが<strong>検索方向</strong>です。VLOOKUPは検索値が左端列にないと使えませんが、INDEX+MATCHなら検索列と取得列を自由に指定できます。</p>



<p>たとえば「内線番号から名前を逆引きしたい」という場合、VLOOKUPでは対応できませんが、INDEX+MATCHなら簡単です。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A4, MATCH(2001, C2:C4, 0))</code></pre>



<p>結果は「佐藤」が返ります。検索列が右側にあっても問題なく動くのが、INDEX+MATCHの強みです。</p>



<p>VLOOKUPの詳しい使い方はこちらの記事で解説しています。</p>



<p><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数を徹底解説！初心者でも使いこなせる完全ガイド</a></p>



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



<p>Excel for Microsoft 365やExcel 2021以降をお使いなら、XLOOKUP関数という新しい選択肢もあります。VLOOKUPの制限を解消した後継関数で、左方向の検索もスピルにも対応しています。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>対応バージョン</th><th>左方向検索</th><th>数式のシンプルさ</th></tr></thead><tbody><tr><td>VLOOKUP</td><td>全バージョン</td><td>×</td><td>〇</td></tr><tr><td>INDEX+MATCH</td><td>全バージョン</td><td>〇</td><td>△</td></tr><tr><td>XLOOKUP</td><td>365 / 2021以降</td><td>〇</td><td>◎</td></tr></tbody></table></figure>



<p>使い分けの目安は次のとおりです。</p>



<ul class="wp-block-list"><li><strong>Excel 2021以降 or Microsoft 365</strong> → XLOOKUPを第一候補に</li><li><strong>Excel 2019以前も含めて使うファイル</strong> → INDEX+MATCHが安全</li><li><strong>シンプルな左端検索だけ</strong> → VLOOKUPでもOK</li></ul>



<p>XLOOKUPの詳しい使い方はこちらで解説しています。</p>



<p><a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数を徹底解説！基本から応用まで完全マスター</a></p>



<p>3つの関数をまとめて比較したい場合は、こちらの記事もあわせてどうぞ。</p>



<p><a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX+MATCHを徹底比較</a></p>



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



<p>INDEX関数で発生しやすいエラーと、その原因・対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc17">#REF! エラー</span></h3>



<p><code>#REF!</code> エラーは、<strong>行番号や列番号が配列の範囲を超えている</strong>ときに発生します。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, 5, 1)</code></pre>



<p>この例では、A2:C4は3行しかないのに行番号に「5」を指定しているため、<code>#REF!</code> エラーになります。</p>



<p><strong>対処法:</strong> 配列の行数・列数を確認してください。ROWS関数やCOLUMNS関数で範囲のサイズを確認すると安心です。</p>



<pre class="wp-block-code"><code>=ROWS(A2:C4)    → 3（行数）
=COLUMNS(A2:C4) → 3（列数）</code></pre>



<h3 class="wp-block-heading"><span id="toc18">#VALUE! エラー</span></h3>



<p><code>#VALUE!</code> エラーは、<strong>行番号や列番号に数値以外の値（文字列など）を指定した</strong>場合に発生します。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, &quot;二&quot;, 1)</code></pre>



<p><strong>対処法:</strong> 行番号・列番号には必ず数値を指定してください。セル参照を使っている場合は、参照先のセルが数値になっているか確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">#N/A エラー（INDEX+MATCH連携時）</span></h3>



<p>INDEX単体ではあまり出ませんが、MATCHと組み合わせたときに <code>#N/A</code> が出ることがあります。これはMATCH側で検索値が見つからなかったサインです。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C4, MATCH(&quot;高橋&quot;, A2:A4, 0))</code></pre>



<p>A列に「高橋」がいなければ、MATCHが <code>#N/A</code> を返し、そのままINDEXにも伝わってしまいます。</p>



<p><strong>対処法:</strong> IFERROR関数でラップして、見つからなかった場合のメッセージを指定しておくと実務で使いやすくなります。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(C2:C4, MATCH(&quot;高橋&quot;, A2:A4, 0)), &quot;該当なし&quot;)</code></pre>



<p>エラー値の種類と対処方法の詳細は、こちらの記事でまとめています。</p>



<p><a href="https://mashukabu.com/excel-error-value-list/">セルに表示されるエラーの種類と原因、対処方法を解説</a></p>



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



<p>この記事では、ExcelのINDEX関数について解説しました。ポイントを振り返っておきましょう。</p>



<ul class="wp-block-list"><li><strong>INDEX関数</strong>は、行番号と列番号を指定して表から値を取り出す関数</li><li>基本構文は <code>=INDEX(配列, 行番号, [列番号])</code></li><li><strong>MATCH関数との組み合わせ</strong>で、検索値に対応するデータを柔軟に取得できる</li><li>2方向のINDEX+MATCHなら、クロス表からの検索も可能</li><li>VLOOKUPでは対応できない「左方向の検索」や「逆引き」も可能</li><li>Excel 2021以降なら、より簡潔なXLOOKUPも選択肢に</li><li><code>#REF!</code> は範囲外、<code>#VALUE!</code> は数値以外、<code>#N/A</code> はMATCH側の検索失敗が主な原因</li></ul>



<p>INDEX+MATCHは最初はちょっと複雑に感じるかもしれませんが、パターンを覚えてしまえば応用が利く強力な組み合わせです。ぜひ実際のデータで試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-index/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>ExcelでMATCH関数を使っていて、「逆順に検索できたらいいのに」と感じたことはありませんか？ データが増えるほど、検索の柔軟性が欲しくなりますよね。</p>



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



<p>「位置を返す」というのがポイントです。 値そのものではなく、「上から何番目にあるか」を教えてくれます。 この位置情報を<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>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>Excel 2019以前では使えません。 その場合はMATCH関数で代用してください。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>XMATCH関数の真価は、INDEX関数との組み合わせで発揮されます。</p>



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



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



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



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



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



<p>なお、<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>下の表から「商品名」と「月」を指定して売上を取得する例です。</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>セルB3に商品名、C3に月名を入力しておくと、次の数式で交差セルの値を取得できます。</p>



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



<p>ちょっとむずかしく見えますが、やっていることはシンプルです。</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>このように、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>XMATCH関数で最もよく見るエラーが <code>#N/A</code> です。 「一致する値が見つからない」ときに発生します。</p>



<p>主な原因は次の3つです。</p>



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



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



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



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



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



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



<p>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>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>
		<item>
		<title>ExcelのMATCH関数の使い方｜検索値の位置を取得する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-match/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-match/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 22 Jul 2022 07:21:50 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX MATCH]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[位置取得]]></category>
		<category><![CDATA[検索]]></category>
		<category><![CDATA[関数比較]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2416</guid>

					<description><![CDATA[ExcelのMATCH関数で範囲内から値の位置番号を取得する方法を解説。完全一致・近似値の照合の型や、INDEX関数との組み合わせパターン、VLOOKUPとの使い分けを整理しています。]]></description>
										<content:encoded><![CDATA[
<p>「この値、表の何番目にあるんだろう？」と手作業で数えた経験はありませんか。データが数十行、数百行になると、目で追いかけるのは正直しんどいですよね。</p>



<p>MATCH関数を使えば、範囲の中から値の位置番号を一発で取得できます。さらにINDEX関数と組み合わせると、VLOOKUPでは難しかった「左方向の検索」も自由自在です。</p>



<p>この記事では、MATCH関数の基本から照合の型の使い分けまで解説していきます。INDEX+MATCHの黄金パターンやエラーの対処法も実例つきで紹介します。</p>



<p>この記事は次のような人におすすめ</p>



<ul class="wp-block-list"><li>指定した範囲の中から値が何番目にあるか知りたい</li><li>INDEX+MATCHの組み合わせをマスターしたい</li><li>VLOOKUPの左方向検索問題を解決したい</li></ul>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-9" checked><label class="toc-title" for="toc-checkbox-9">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">MATCH関数とは？</a></li><li><a href="#toc2" tabindex="0">MATCH関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">照合の型の詳細</a></li></ol></li><li><a href="#toc6" tabindex="0">MATCH関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">完全一致で位置を取得する（照合の型 0）</a></li><li><a href="#toc8" tabindex="0">以下の最大値で位置を取得する（照合の型 1）</a></li><li><a href="#toc9" tabindex="0">以上の最小値で位置を取得する（照合の型 -1）</a></li><li><a href="#toc10" tabindex="0">ワイルドカードを使った部分一致検索</a></li></ol></li><li><a href="#toc11" tabindex="0">INDEX+MATCH関数の黄金パターン</a><ol><li><a href="#toc12" tabindex="0">基本の書き方</a></li><li><a href="#toc13" tabindex="0">VLOOKUPの左方向検索問題を解決する</a></li><li><a href="#toc14" tabindex="0">行と列の両方をMATCHで検索する</a></li></ol></li><li><a href="#toc15" tabindex="0">MATCH関数の実務活用パターン</a><ol><li><a href="#toc16" tabindex="0">ランク分けの自動判定</a></li><li><a href="#toc17" tabindex="0">最終入力行の自動取得</a></li><li><a href="#toc18" tabindex="0">重複チェックでの活用</a></li><li><a href="#toc19" tabindex="0">IFERROR関数と組み合わせてエラーを防ぐ</a></li></ol></li><li><a href="#toc20" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc21" tabindex="0">VLOOKUP・XLOOKUP・INDEX+MATCHの違いと使い分け</a><ol><li><a href="#toc22" tabindex="0">どれを選べばいい？</a></li></ol></li><li><a href="#toc23" tabindex="0">まとめ</a><ol><li><a href="#toc24" tabindex="0">関連記事</a></li><li><a href="#toc25" tabindex="0">関数一覧</a></li><li><a href="#toc26" tabindex="0">エラー値について</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">MATCH関数とは？</span></h2>



<p>MATCH関数は、指定した範囲の中から検索値を探し、その<strong>相対的な位置番号</strong>を返す関数です。読み方は「マッチ関数」で、英語の match（一致する）が語源です。</p>



<p>たとえば、A1:A5に商品名が5つ入っているとします。「バナナ」の位置を調べると<strong>3</strong>が返ります。セルのアドレスではなく「範囲の先頭から数えて何番目か」を返すのがポイントです。</p>



<p>MATCH関数は単体で使うこともありますが、<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>と組み合わせて使うケースが実務では圧倒的に多いです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>MATCH関数はExcel 2007以降のすべてのバージョン、Microsoft 365、Googleスプレッドシートで使用できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">MATCH関数の書き方（構文と引数）</span></h2>



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



<pre class="wp-block-code"><code>=MATCH(検査値, 検査範囲, [照合の型])</code></pre>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>検査値</td><td>必須</td><td>検索したい値を指定します。数値・文字列・セル参照が使えます</td></tr><tr><td>検査範囲</td><td>必須</td><td>検索対象の範囲を指定します。1行または1列の範囲のみ有効です</td></tr><tr><td>照合の型</td><td>省略可</td><td>検索の方法を 1, 0, -1 のいずれかで指定します。省略すると 1 になります</td></tr></tbody></table></figure>



<p>検査範囲には<strong>1行または1列</strong>しか指定できません。複数行かつ複数列の範囲を指定するとエラーになるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc5">照合の型の詳細</span></h3>



<p>照合の型は MATCH関数の動作を決める重要な引数です。3種類の指定方法があります。</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>検査値と完全に一致する値を検索します</td><td>並び順は問いません</td><td>商品コード・名前など正確な値を探すとき</td></tr><tr><td>1（以下の最大値）</td><td>検査値以下の最大の値を検索します</td><td><strong>昇順に並べておく必要あり</strong></td><td>価格帯・ランク分けなど範囲で区切るとき</td></tr><tr><td>-1（以上の最小値）</td><td>検査値以上の最小の値を検索します</td><td><strong>降順に並べておく必要あり</strong></td><td>在庫数や得点の上限判定をするとき</td></tr></tbody></table></figure>



<p>実務で最も使うのは <strong>照合の型 0（完全一致）</strong> です。迷ったらまず 0 を指定しておけば間違いありません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>照合の型を省略すると 1（以下の最大値）になります。完全一致のつもりで省略すると意図しない結果になるので、明示的に 0 を書く習慣をつけてみてください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc7">完全一致で位置を取得する（照合の型 0）</span></h3>



<p>商品リストから「バナナ」の位置を調べる例です。</p>



<p>A列に商品名が入っているとき、次の数式で位置番号を取得できます。</p>



<pre class="wp-block-code"><code>=MATCH(&quot;バナナ&quot;, A1:A5, 0)</code></pre>



<p>A1:A5が「りんご, みかん, バナナ, ぶどう, もも」なら、結果は <strong>3</strong> です。</p>



<p>セル参照を使って検索値を指定することもできます。</p>



<pre class="wp-block-code"><code>=MATCH(D1, A1:A5, 0)</code></pre>



<p>D1に入っている値をA1:A5から探して位置を返します。</p>



<h3 class="wp-block-heading"><span id="toc8">以下の最大値で位置を取得する（照合の型 1）</span></h3>



<p>価格帯やランク分けに便利なのが照合の型 1 です。</p>



<p>たとえばA1:A4に「0, 60, 70, 80」と昇順で入っているとします。得点が75のとき、次の数式を使います。</p>



<pre class="wp-block-code"><code>=MATCH(75, A1:A4, 1)</code></pre>



<p>75以下の最大値は「70」なので、結果は <strong>3</strong>（3番目の位置）です。これを使えば得点に応じたランク分けが簡単にできます。</p>



<h3 class="wp-block-heading"><span id="toc9">以上の最小値で位置を取得する（照合の型 -1）</span></h3>



<p>照合の型 -1 は降順データから検索するときに使います。</p>



<p>A1:A4に「100, 80, 60, 40」と降順で入っている場合を考えます。</p>



<pre class="wp-block-code"><code>=MATCH(70, A1:A4, -1)</code></pre>



<p>70以上の最小値は「80」なので、結果は <strong>2</strong> です。</p>



<h3 class="wp-block-heading"><span id="toc10">ワイルドカードを使った部分一致検索</span></h3>



<p>照合の型 0 のときだけ、ワイルドカードが使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>ワイルドカード</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td>*</td><td>任意の文字列（0文字以上）</td><td>&#8220;東京*&#8221; で「東京都」「東京支店」に一致</td></tr><tr><td>?</td><td>任意の1文字</td><td>&#8220;田?太郎&#8221; で「田中太郎」に一致</td></tr><tr><td>~</td><td>ワイルドカードのエスケープ</td><td>&#8220;~*&#8221; でアスタリスクそのものを検索</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=MATCH(&quot;東京*&quot;, A1:A10, 0)</code></pre>



<p>「東京」で始まる最初の値の位置を返します。</p>



<h2 class="wp-block-heading"><span id="toc11">INDEX+MATCH関数の黄金パターン</span></h2>



<p>MATCH関数が真価を発揮するのは、<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>との組み合わせです。INDEX関数は「行番号と列番号を指定して値を取り出す」関数です。ここにMATCH関数で取得した位置番号を渡すと、柔軟な検索ができるようになります。</p>



<h3 class="wp-block-heading"><span id="toc12">基本の書き方</span></h3>



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



<p>具体例を見てみましょう。A列に商品コード、B列に商品名、C列に価格が入った表があるとします。</p>



<p>商品コード「A003」の価格を取得するには、次のように書きます。</p>



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



<p>MATCH関数がA列から「A003」の位置を取得し、INDEX関数がC列の同じ行の値を返す仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc13">VLOOKUPの左方向検索問題を解決する</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>は便利な検索関数ですが、<strong>検索列より左側の列からは値を取得できない</strong>という制限があります。</p>



<p>たとえば、A列に商品名、B列に商品コードが並んでいるとき、商品コードから商品名を調べたい場合です。VLOOKUPだと検索列（B列）の左にある商品名（A列）は取り出せません。</p>



<p>INDEX+MATCHならこの制限がありません。</p>



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



<p>B列から「A003」の位置を取得し、A列（左側）の値を返しています。検索列と取得列の位置関係を気にしなくてよいのが大きなメリットです。</p>



<h3 class="wp-block-heading"><span id="toc14">行と列の両方をMATCHで検索する</span></h3>



<p>INDEX関数に行番号と列番号の両方をMATCHで渡すと、クロス検索ができます。</p>



<pre class="wp-block-code"><code>=INDEX(B2:D10, MATCH(&quot;東京&quot;, A2:A10, 0), MATCH(&quot;4月&quot;, B1:D1, 0))</code></pre>



<p>A列から「東京」の行位置を取得し、1行目から「4月」の列位置を取得します。交差するセルの値が結果です。大きな集計表から特定のデータを引き出すときに重宝します。</p>



<h2 class="wp-block-heading"><span id="toc15">MATCH関数の実務活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc16">ランク分けの自動判定</span></h3>



<p>得点に応じてランクを自動判定する例です。F列にランク境界値（0, 60, 70, 80, 90）を入れます。G列にランク名（E, D, C, B, A）を用意しておきます。</p>



<pre class="wp-block-code"><code>=INDEX(G1:G5, MATCH(B2, F1:F5, 1))</code></pre>



<p>照合の型 1 で「得点以下の最大の境界値」の位置を取得し、対応するランク名を返します。IF関数をネストするより圧倒的にスッキリ書けます。</p>



<h3 class="wp-block-heading"><span id="toc17">最終入力行の自動取得</span></h3>



<p>データの最後の行を自動で見つけたいときにも使えます。</p>



<pre class="wp-block-code"><code>=MATCH(9.99E+307, A:A, 1)</code></pre>



<p>9.99E+307 はExcelで扱える最大の数値です。照合の型 1 で「最大値以下」を検索すると、数値データの最終行の位置が返ります。</p>



<p>文字列データの場合は <a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数</a> などと組み合わせる方法もあります。</p>



<h3 class="wp-block-heading"><span id="toc18">重複チェックでの活用</span></h3>



<p>同じ値が複数あるとき、MATCH関数は最初に見つかった位置を返します。この性質を利用して重複チェックに使えます。</p>



<pre class="wp-block-code"><code>=MATCH(A2, A:A, 0)&lt;&gt;ROW(A2)</code></pre>



<p>MATCH関数が返す位置と現在の行番号が一致しない場合、その値は上のほうで既に出現しています。結果がTRUEなら重複データです。</p>



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



<p>MATCH関数は検索値が見つからないと #N/A エラーを返します。<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で囲んでおくと安心です。</p>



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



<p>検索値が見つからない場合に「該当なし」を表示します。</p>



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



<p>MATCH関数で発生しやすいエラーと、その原因・対処法をまとめました。</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>照合の型 1 で昇順になっていない</td><td>データを昇順に並べ替えるか、照合の型 0 に変更</td></tr><tr><td>#N/A</td><td>照合の型 -1 で降順になっていない</td><td>データを降順に並べ替えるか、照合の型 0 に変更</td></tr><tr><td>#N/A</td><td>文字列の前後にスペースが混入</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>で空白を除去してから検索</td></tr><tr><td>#VALUE!</td><td>検査範囲が複数行かつ複数列</td><td>1行または1列の範囲に修正</td></tr><tr><td>#REF!</td><td>INDEX+MATCHで取得範囲がずれている</td><td>INDEX関数の範囲とMATCHの範囲の行数が一致しているか確認</td></tr></tbody></table></figure>



<p>#N/A エラーが最も多いトラブルです。「値が合っているはずなのに #N/A が出る」ときは、次の点をチェックしてみてください。</p>



<ul class="wp-block-list"><li>全角と半角が混在していないか（<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>やASC関数で統一）</li><li>数値が文字列として入力されていないか（セルの左上に緑の三角が出ていたら文字列格納の可能性）</li><li>前後に余計なスペースが入っていないか</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>LEN関数でセルの文字数を確認すると、見えないスペースが混入しているかどうかを判別できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc21">VLOOKUP・XLOOKUP・INDEX+MATCHの違いと使い分け</span></h2>



<p>検索関数はどれを使えばいいか迷いますよね。3つの主要な検索方法を比較してみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>VLOOKUP</th><th>INDEX+MATCH</th><th>XLOOKUP</th></tr></thead><tbody><tr><td>検索方向</td><td>左端列のみ</td><td>自由（左右どちらも可）</td><td>自由（左右どちらも可）</td></tr><tr><td>列の追加・削除への強さ</td><td>列番号がずれる場合あり</td><td>列番号に依存しない</td><td>列番号に依存しない</td></tr><tr><td>近似値検索</td><td>第4引数で対応</td><td>照合の型 1 / -1 で対応</td><td>一致モードで対応</td></tr><tr><td>複数条件の検索</td><td>補助列が必要</td><td>配列数式で対応可</td><td>補助列が必要</td></tr><tr><td>対応バージョン</td><td>すべてのバージョン</td><td>すべてのバージョン</td><td>Microsoft 365 / Excel 2021以降</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>やや長い</td><td>シンプル</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc22">どれを選べばいい？</span></h3>



<ul class="wp-block-list"><li><strong>シンプルに左から右へ検索したい</strong> → <a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>でOK</li><li><strong>左方向の検索が必要、または古いExcelを使っている</strong> → INDEX+MATCHが最適</li><li><strong>Microsoft 365 / Excel 2021を使っている</strong> → <a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>が最も便利</li></ul>



<p>INDEX+MATCHは対応バージョンの広さと柔軟性が最大の強みです。XLOOKUPが使えない環境では、INDEX+MATCHを覚えておけば困ることはありません。</p>



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



<p>MATCH関数は、範囲内の値の位置番号を取得する関数です。この記事で紹介したポイントを振り返ります。</p>



<ul class="wp-block-list"><li><strong>照合の型 0（完全一致）</strong> を基本にする。省略すると 1 になるので明示的に指定する</li><li><strong>INDEX+MATCHの組み合わせ</strong> で、VLOOKUPの左方向検索制限を解消できる</li><li><strong>#N/A エラー</strong> が出たら、全角半角・スペース混入・並び順を確認する</li><li>XLOOKUPが使えない環境では INDEX+MATCH が最強の検索パターン</li></ul>



<p>まずは照合の型 0 の完全一致検索から試してみてください。INDEX+MATCHの組み合わせに慣れると、データ検索の幅がぐっと広がりますよ。</p>



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



<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-vlookup/">VLOOKUP関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li></ul>



<h3 class="wp-block-heading"><span id="toc25">関数一覧</span></h3>



<p>Excel関数の一覧は下記の記事でまとめています。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">【Excel】アルファベット順 関数一覧</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">【Excel】機能別のエクセル関数一覧</a></li></ul>



<h3 class="wp-block-heading"><span id="toc26">エラー値について</span></h3>



<p>Excelのエラー値の種類と対処法は、下記の記事で詳しく解説しています。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">【Excel】セルに表示されるエラーの種類と原因、対処方法を解説</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-match/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのADDRESS関数の使い方｜INDIRECT連携で動的セル参照を実現</title>
		<link>https://mashukabu.com/excel-function-howto-use-address/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-address/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 04 Jun 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[セル参照]]></category>
		<category><![CDATA[動的セル参照]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2156</guid>

					<description><![CDATA[ExcelのADDRESS関数の使い方を解説。ADDRESS単体は文字列を返すだけですが、INDIRECTと組み合わせると別シートへの動的参照が実現します。INDEX関数との使い分け、MATCH・ROWとの応用パターンを実務例で紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「行番号と列番号からセル番地を作りたい」<br>「シート名を動的に切り替えて値を取得したい」<br>こんな場面で手が止まったことはありませんか？</p>



<p>手動でセル番地を書き換えていると、<br>シートが増えるたびに修正の手間が増えていきます。</p>



<p>ExcelのADDRESS関数を使えば，<br>行番号と列番号からセル番地を自動生成できます。<br>INDIRECT関数と組み合わせれば，<br>動的にセル参照を切り替える仕組みも作れますよ。</p>



<p>この記事では，ADDRESS関数の基本構文から<br>MATCH+ADDRESS+INDIRECTとの実務パターンまで，<br>具体例つきで解説していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ADDRESS関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方・語源</a></li><li><a href="#toc3" tabindex="0">ADDRESS関数でできること</a></li></ol></li><li><a href="#toc4" tabindex="0">ADDRESS関数の基本構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li><li><a href="#toc7" tabindex="0">参照の種類（第3引数）</a></li><li><a href="#toc8" tabindex="0">参照形式（第4引数）</a></li><li><a href="#toc9" tabindex="0">シート名（第5引数）</a></li></ol></li><li><a href="#toc10" tabindex="0">ADDRESS関数の基本的な使い方</a><ol><li><a href="#toc11" tabindex="0">絶対参照でセル番地を取得する</a></li><li><a href="#toc12" tabindex="0">相対参照・混合参照に切り替える</a></li><li><a href="#toc13" tabindex="0">別シートのセル番地を生成する</a></li></ol></li><li><a href="#toc14" tabindex="0">ADDRESS関数をINDIRECT関数と組み合わせてセル参照に変換する</a><ol><li><a href="#toc15" tabindex="0">データフローのイメージ</a></li><li><a href="#toc16" tabindex="0">実際の数式</a></li><li><a href="#toc17" tabindex="0">別シートの値を動的に取得する</a></li></ol></li><li><a href="#toc18" tabindex="0">MATCH+ADDRESS+INDIRECTで行を動的に特定する</a><ol><li><a href="#toc19" tabindex="0">3関数の役割</a></li><li><a href="#toc20" tabindex="0">月次集計表から当月データを抽出する例</a></li></ol></li><li><a href="#toc21" tabindex="0">ADDRESS関数で列番号をアルファベットに変換する方法</a></li><li><a href="#toc22" tabindex="0">ADDRESS関数とINDEX関数の使い分け</a><ol><li><a href="#toc23" tabindex="0">判断基準</a></li></ol></li><li><a href="#toc24" tabindex="0">ADDRESS関数のよくあるエラーと対処法</a><ol><li><a href="#toc25" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc26" tabindex="0">INDIRECT連携時の#REF!エラー</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ADDRESS関数とは？</span></h2>



<h3 class="wp-block-heading"><span id="toc2">読み方・語源</span></h3>



<p>読み方は「アドレス関数」です。<br>英語の「address（住所・番地）」が語源になっています。<br>セルの「住所」を文字列で返す関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc3">ADDRESS関数でできること</span></h3>



<p>ADDRESS関数はExcel 2003以降で使えます。<br>行番号と列番号を指定して，<br>セル番地を<strong>文字列</strong>として返す関数です。</p>



<p>たとえば <code>=ADDRESS(3,4)</code> と入力すると，<br>「$D$3」という文字列が返ります。<br>ここで大事なポイントがあります。<br>返るのはあくまで「文字列」です。<br>セル参照そのものではありません。</p>



<p>そのため，ADDRESS関数だけでは値を取得できません。<br>値を取り出すには<br><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>との<br>組み合わせが必要です。</p>



<p>「文字列しか返せない」という特徴を押さえておくと，<br>この後の応用パターンが理解しやすくなりますよ。</p>



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



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



<pre class="wp-block-code"><code>=ADDRESS(行番号, 列番号, [参照の種類], [参照形式], [シート名])</code></pre>



<p>必ず指定するのは「行番号」と「列番号」の2つです。<br>残りの3つは省略できます。</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></tr></thead><tbody><tr><td>行番号</td><td>必須</td><td>セルの行番号（1以上の整数）</td></tr><tr><td>列番号</td><td>必須</td><td>セルの列番号（A列=1、B列=2…）</td></tr><tr><td>参照の種類</td><td>省略可</td><td>1〜4で参照形式を指定（後述）</td></tr><tr><td>参照形式</td><td>省略可</td><td>TRUE=A1形式、FALSE=R1C1形式</td></tr><tr><td>シート名</td><td>省略可</td><td>別シート参照時にシート名を文字列で指定</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">参照の種類（第3引数）</span></h3>



<p>第3引数で絶対参照・相対参照を切り替えられます。</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>絶対</td><td>絶対</td><td>$D$3</td></tr><tr><td>2</td><td>絶対</td><td>相対</td><td>D$3</td></tr><tr><td>3</td><td>相対</td><td>絶対</td><td>$D3</td></tr><tr><td>4</td><td>相対</td><td>相対</td><td>D3</td></tr></tbody></table></figure>



<p>省略すると「1」（完全な絶対参照）になります。</p>



<h3 class="wp-block-heading"><span id="toc8">参照形式（第4引数）</span></h3>



<p>TRUEまたは省略でA1形式になります。<br>FALSEを指定するとR1C1形式で返ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>形式</th><th>結果の例</th></tr></thead><tbody><tr><td>TRUE（既定）</td><td>A1形式</td><td>$C$5</td></tr><tr><td>FALSE</td><td>R1C1形式</td><td>R3C4</td></tr></tbody></table></figure>



<p>R1C1形式はVBAやマクロで使われる形式です。<br>通常のワークシートではA1形式を使うため，<br>この引数は省略するケースがほとんどですよ。</p>



<h3 class="wp-block-heading"><span id="toc9">シート名（第5引数）</span></h3>



<p>別シートのセル番地を作りたいときに指定します。</p>



<pre class="wp-block-code"><code>=ADDRESS(3, 4, 1, TRUE, &quot;売上データ&quot;)</code></pre>



<p>この数式は <code>売上データ!$D$3</code> を返します。<br>別ブックを参照する場合は<br><code>"[Book2.xlsx]Sheet1"</code> のように指定してください。</p>



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



<h3 class="wp-block-heading"><span id="toc11">絶対参照でセル番地を取得する</span></h3>



<p>もっとも基本的な使い方を見てみましょう。<br>3行目・4列目（D列）のセル番地を取得します。</p>



<pre class="wp-block-code"><code>=ADDRESS(3, 4)</code></pre>



<p>結果は <code>$D$3</code> です。<br>第3引数を省略すると絶対参照になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">相対参照・混合参照に切り替える</span></h3>



<p>第3引数の値を変えるだけで切り替えられます。</p>



<pre class="wp-block-code"><code>=ADDRESS(3, 4, 4)</code></pre>



<p>結果は <code>D3</code>（相対参照）です。<br>混合参照にしたい場合は2または3を指定します。<br>2なら行だけ絶対（D$3）、3なら列だけ絶対（$D3）です。</p>



<h3 class="wp-block-heading"><span id="toc13">別シートのセル番地を生成する</span></h3>



<p>第5引数にシート名を指定すると，<br>シート名つきのセル番地が返ります。</p>



<pre class="wp-block-code"><code>=ADDRESS(1, 1, 1, TRUE, &quot;1月&quot;)</code></pre>



<p>結果は <code>'1月'!$A$1</code> です。<br>月別シートへの参照を動的に作りたいときに便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc14">ADDRESS関数をINDIRECT関数と組み合わせてセル参照に変換する</span></h2>



<p>ADDRESS関数が返すのは「文字列」です。<br>セルの値を取得するには<br><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>で<br>セル参照に変換する必要があります。</p>



<h3 class="wp-block-heading"><span id="toc15">データフローのイメージ</span></h3>



<p>処理は3ステップで進みます。</p>



<ol class="wp-block-list"><li>ADDRESS関数がセル番地の文字列を生成する</li><li>INDIRECT関数が文字列をセル参照に変換する</li><li>セル参照を通じてセルの値を取得する</li></ol>



<h3 class="wp-block-heading"><span id="toc16">実際の数式</span></h3>



<p>セルA1に行番号「5」、B1に列番号「3」が<br>入っているとしましょう。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(A1, B1))</code></pre>



<p>この数式はC5セルの値を返します。<br>ADDRESS関数が <code>$C$5</code> という文字列を作り，<br>INDIRECT関数がセル参照に変換しています。</p>



<p>A1やB1の値を変えるだけで，<br>参照先が自動的に切り替わりますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">別シートの値を動的に取得する</span></h3>



<p>シート名をセルに入力しておけば，<br>参照先のシートも動的に切り替えられます。<br>セルC1にシート名「1月」が入っている場合です。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(A1, B1, 1, TRUE, C1))</code></pre>



<p>この数式は「1月」シートのC5セルの値を返します。<br>C1を「2月」「3月」と変えるだけで，<br>取得先シートが自動で切り替わります。</p>



<p>シート名を動的に変更できる点が，<br>INDIRECT+ADDRESSの組み合わせの真の強みです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>INDIRECT関数は揮発性関数です。<br>ブックを開くたびに再計算されるため，<br>大量に使うとパフォーマンスが低下します。<br>目安として，INDIRECT+ADDRESSの組み合わせは<br>INDEX関数の約5,000倍遅いというデータもあります。<br>数百セル程度なら問題ありませんが，<br>数千セル以上で使う場合は注意してください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc18">MATCH+ADDRESS+INDIRECTで行を動的に特定する</span></h2>



<p>実務では「検索値から該当行を見つけて値を取得する」<br>というパターンがよく出てきますよね。<br><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>を<br>加えた3関数の組み合わせで実現できます。</p>



<h3 class="wp-block-heading"><span id="toc19">3関数の役割</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th></tr></thead><tbody><tr><td>MATCH</td><td>検索値が何行目にあるかを返す</td></tr><tr><td>ADDRESS</td><td>行番号と列番号からセル番地を作る</td></tr><tr><td>INDIRECT</td><td>文字列をセル参照に変換して値を取得する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc20">月次集計表から当月データを抽出する例</span></h3>



<p>A列に月名（1月〜12月）、B列に売上が<br>入った集計表があるとします。<br>セルD1に「3月」と入力して，<br>対応する売上を取得してみましょう。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(MATCH(D1, A:A, 0), 2))</code></pre>



<p>処理の流れは次のとおりです。</p>



<ol class="wp-block-list"><li><code>MATCH(D1, A:A, 0)</code> → A列で「3月」の行番号を取得</li><li><code>ADDRESS(..., 2)</code> → その行の2列目のセル番地を生成</li><li><code>INDIRECT(...)</code> → セル番地から実際の値を取得</li></ol>



<p>D1の値を「4月」「5月」と変えるだけで，<br>取得先が自動的に切り替わります。</p>



<p>ちょっと複雑に見えますが，<br>やっていることは<br>「探す→番地を作る→値を取る」の3ステップです。</p>



<p>ただし，同じシート内ならこの処理は<br><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>と<br>MATCH関数の組み合わせでも実現できます。<br>パフォーマンスを考えると，<br>同一シートではINDEX+MATCHがおすすめですよ。</p>



<h2 class="wp-block-heading"><span id="toc21">ADDRESS関数で列番号をアルファベットに変換する方法</span></h2>



<p>「列番号はわかるけどアルファベットで表示したい」<br>という場面ではSUBSTITUTE関数が活躍します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, 5, 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p>この数式は <code>E</code> を返します。<br>仕組みはシンプルです。</p>



<ol class="wp-block-list"><li><code>ADDRESS(1, 5, 4)</code> → <code>E1</code>（相対参照）を生成</li><li><code>SUBSTITUTE(..., "1", "")</code> → 「1」を除去して列名だけ残す</li></ol>



<p>第1引数を「1」に固定しているのがポイントです。<br>行番号「1」のセル番地を作ることで，<br>SUBSTITUTEで数字部分を確実に除去できます。</p>



<p>2桁以上の列でも対応できます。<br>たとえば列番号28なら <code>AB</code> が返りますよ。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, 28, 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p>現在のセルの列名を知りたい場合は，<br><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>と<br>組み合わせてみてください。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, COLUMN(), 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p>列番号のアルファベット変換については<br><a href="https://mashukabu.com/excel-function-howto-get-column-alphabet/">列番号をアルファベットに変換する方法</a>で<br>さらに詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc22">ADDRESS関数とINDEX関数の使い分け</span></h2>



<p>「行番号と列番号から値を取得する」という目的なら，<br><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>でも<br>実現できます。<br>では，どちらを使うべきでしょうか？</p>



<h3 class="wp-block-heading"><span id="toc23">判断基準</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>INDEX関数</th><th>INDIRECT+ADDRESS</th></tr></thead><tbody><tr><td>処理速度</td><td>高速（約0.001秒）</td><td>低速（約5.2秒）</td></tr><tr><td>別シート動的参照</td><td>不可</td><td>可能</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>やや複雑</td></tr><tr><td>推奨場面</td><td>同一シート内のデータ取得</td><td>シート名を動的に切り替えたい場合</td></tr></tbody></table></figure>



<p>処理速度には約5,000倍の差があります。<br>同じシート内で値を取得するだけなら，<br>INDEX関数を使うのが正解です。</p>



<p>一方，シート名をセルの値で切り替えたい場合は<br>INDEX関数では対応できません。<br>この場面がINDIRECT+ADDRESSの出番です。</p>



<p>迷ったときの判断はシンプルですよ。<br>「シート名を動的に変えたいか？」がYesなら<br>INDIRECT+ADDRESS、NoならINDEXを選んでください。</p>



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



<h3 class="wp-block-heading"><span id="toc25">#VALUE!エラー</span></h3>



<p>行番号または列番号に問題がある場合に発生します。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>行番号・列番号が0以下</td><td>1以上の整数を指定する</td></tr><tr><td>行番号・列番号が数値でない</td><td>文字列が混入していないか確認する</td></tr><tr><td>参照の種類が1〜4以外</td><td>1〜4の整数を指定する</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=ADDRESS(0, 3)</code></pre>



<p>この数式は #VALUE! エラーになります。<br>行番号は1以上の整数を指定してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc26">INDIRECT連携時の#REF!エラー</span></h3>



<p>ADDRESS関数自体は正しくても，<br>INDIRECT関数と組み合わせたときに<br>#REF!エラーが出ることがあります。</p>



<p>主な原因は次の2つです。</p>



<ul class="wp-block-list"><li><strong>存在しないシート名を指定している</strong></li></ul>



<p>  シート名のスペルミスや，<br>  削除済みシートの参照が原因です。<br>  シート名を正確に確認してください。</p>



<ul class="wp-block-list"><li><strong>シート名に特殊文字が含まれている</strong></li></ul>



<p>  スペースや記号を含むシート名は，<br>  シングルクォーテーションで囲む必要があります。<br>  ADDRESS関数の第5引数で指定すれば自動で付きます。<br>  ただし手動で文字列結合している場合は<br>  自分で付ける必要があるので注意してくださいね。</p>



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



<p>ADDRESS関数は，行番号と列番号から<br>セル番地の文字列を生成するExcel関数です。</p>



<p>この記事のポイントをおさらいしましょう。</p>



<ul class="wp-block-list"><li>ADDRESS関数が返すのは「文字列」であり，セル参照ではない</li><li>値を取得するにはINDIRECT関数との組み合わせが必須</li><li>MATCH+ADDRESS+INDIRECTで検索値から動的にデータを取得できる</li><li>列番号→アルファベット変換にも使える</li><li>同一シート内のデータ取得にはINDEX関数のほうが高速</li><li>INDIRECT+ADDRESSの出番はシート名を動的に切り替えたい場面</li></ul>



<p>ADDRESS関数は単体で使うことはあまりありません。<br><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>や<br><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>と<br>組み合わせることで真価を発揮します。</p>



<p>まずはINDIRECTとの基本パターンを試してみてください。<br>動的なセル参照の仕組みがわかると，<br>月別集計やシート横断の処理がぐっと楽になりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
