<?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>INDEX+MATCH &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/indexmatch/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:45:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>INDEX+MATCH &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 class="wp-block-paragraph">「社員番号から名前を引っ張りたいけど、VLOOKUPだと左側の列は検索できない」。スプレッドシートでこんな壁にぶつかったことはありませんか。</p>



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



<p class="wp-block-paragraph">そんなときに頼りになるのが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-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">スプレッドシートの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 class="wp-block-paragraph">INDEX関数（読み方: インデックス関数）は、範囲内の指定した行・列の位置にある値を返す関数です。名前はIndex（索引・見出し）が由来で、「表の中から座標を指定してピンポイントで値を取り出す」イメージです。</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">INDEX関数の構文はこちらです。</p>



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



<p class="wp-block-paragraph">引数は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 class="wp-block-paragraph">行と列にはそれぞれ特殊な指定方法があります。</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 class="wp-block-paragraph">次の社員管理表を例に見てみましょう。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 class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-index-function/01_data_employee-table.png/">_images/spreadsheet-index-function/01_data_employee-table.png</a></p>



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_index-basic.png" alt="02 formula index basic" /></figure>



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



<p class="wp-block-paragraph">もう1つ試してみましょう。3行目・2列目を指定します。</p>



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_index-basic.png" alt="03 result index basic" /></figure>



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



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



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



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



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



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



<p class="wp-block-paragraph">結果は田中の行全体（1001, 田中, 営業部, 3001）です。</p>



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



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



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



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



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



<p class="wp-block-paragraph">MATCH関数の第3引数「0」は完全一致を意味します。</p>



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



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



<p class="wp-block-paragraph">処理の流れを順に見ていきます。</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 class="wp-block-paragraph">VLOOKUPと似た動きですが、検索列と戻り値の列を別々に指定できるのが大きな違いです。</p>



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



<p class="wp-block-paragraph">INDEX+MATCHが最も活躍するのが、左方向への検索です。</p>



<p class="wp-block-paragraph">たとえば「経理部の社員番号を知りたい」とします。部署（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 class="wp-block-paragraph">処理の流れは次のとおりです。</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>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_index-match-leftlookup.png" alt="04 result index match leftlookup" /></figure>



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



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



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



<p class="wp-block-paragraph">「社員番号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 class="wp-block-paragraph">処理の流れを見てみましょう。</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 class="wp-block-paragraph">列の見出し名で検索するため、途中に列が追加されても数式が壊れません。大きな表を扱うときに重宝するパターンです。</p>



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



<p class="wp-block-paragraph">どちらを使うべきか迷う方も多いと思います。比較表で整理しましょう。</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 class="wp-block-paragraph">判断基準はシンプルです。</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 class="wp-block-paragraph">なお、Googleスプレッドシートでは2022年以降、XLOOKUP関数（VLOOKUPより柔軟な検索関数）が使えます。左方向検索やエラー時の既定値指定など、INDEX+MATCHの利点の多くをカバーしています。新しく数式を作るならXLOOKUPも選択肢に入れてみてください。</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">行番号または列番号が範囲の大きさを超えているときに出ます。</p>



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



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



<p class="wp-block-paragraph">行番号や列番号に負の数や文字列を指定すると発生します。</p>



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">IFERROR関数（エラー時に別の値を返す関数）で囲めば、エラー表示を防げます。</p>



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_error_na-iferror.png" alt="05 error na iferror" /></figure>



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">まずは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 class="wp-block-paragraph">「検索した値が表の何番目にあるか知りたい」。スプレッドシートでデータを扱っていると、そんな場面がよくありますよね。</p>



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



<p class="wp-block-paragraph">そこで活躍するのが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-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">スプレッドシートの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 class="wp-block-paragraph">MATCH関数（読み方: マッチ関数）は、指定した値が範囲の中で何番目にあるかを返す関数です。名前はMatch（一致する）が由来で、「探している値の位置番号を教えてくれる」イメージです。</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">MATCH関数の構文はこちらです。</p>



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



<p class="wp-block-paragraph">引数は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 class="wp-block-paragraph">範囲には1行または1列のみ指定できます。2次元の範囲（A1:C5など）を指定すると#VALUE!エラーになるので注意してください。</p>



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



<p class="wp-block-paragraph">検索の種類は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 class="wp-block-paragraph">実務では完全一致（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 class="wp-block-paragraph">次の社員管理表を例に見てみましょう。A1:D6にデータが入っているとします。</p>



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_match-basic.png" alt="02 formula match basic" /></figure>



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



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



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_match-basic.png" alt="03 result match basic" /></figure>



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



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



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



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



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



<p class="wp-block-paragraph">複数一致する場合は最初に見つかった位置が返ります。たとえば「営業部」が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 class="wp-block-paragraph">MATCH関数が最も活躍するのは、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>との組み合わせです。</p>



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



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



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



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



<p class="wp-block-paragraph">処理の流れを順に見ていきます。</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 class="wp-block-paragraph">検索範囲（C列）と戻り値の範囲（A列）を別々に指定できるため、左方向の検索も問題ありません。VLOOKUPでは実現できない逆引き検索です。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-match-function/04_result_index-match-leftlookup.png/">_images/spreadsheet-match-function/04_result_index-match-leftlookup.png</a></p>



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



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



<p class="wp-block-paragraph">「社員番号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 class="wp-block-paragraph">処理の流れを見てみましょう。</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 class="wp-block-paragraph">列の見出し名で検索するため、途中に列が追加されても数式が壊れません。大きな表を扱うときに重宝するパターンです。</p>



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



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



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



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



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



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/05_result_iferror.png" alt="05 result iferror" /></figure>



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



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



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">上の数式はMATCH関数で書くと次のようになります。</p>



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



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



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



<p class="wp-block-paragraph">判断基準はシンプルです。</p>



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



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">まずは=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>
	</channel>
</rss>
