<?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>別シート参照 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E5%88%A5%E3%82%B7%E3%83%BC%E3%83%88%E5%8F%82%E7%85%A7/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 12 Jun 2026 21:55:13 +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>別シート参照 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのINDIRECT関数の使い方｜文字列からセル参照</title>
		<link>https://mashukabu.com/spreadsheet-indirect-function/</link>
					<comments>https://mashukabu.com/spreadsheet-indirect-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:12 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMPORTRANGE]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[スプレッドシート関数]]></category>
		<category><![CDATA[セル参照]]></category>
		<category><![CDATA[別シート参照]]></category>
		<category><![CDATA[動的参照]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4658</guid>

					<description><![CDATA[スプレッドシートのINDIRECT関数の使い方を解説。別シート・別ファイルへの動的参照、IMPORTRANGE連携、#REF!エラーの対処法まで実例つきで紹介します。]]></description>
										<content:encoded><![CDATA[

  <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">スプレッドシートのINDIRECT関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方・語源</a></li><li><a href="#toc3" tabindex="0">INDIRECT関数でできること</a></li></ol></li><li><a href="#toc4" tabindex="0">スプレッドシートのINDIRECT関数の書き方（構文・引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc7" tabindex="0">INDIRECT関数の基本的な使い方</a><ol><li><a href="#toc8" tabindex="0">同じシート内のセルを文字列で参照する</a></li><li><a href="#toc9" tabindex="0">別シートのセルを動的に参照する</a></li><li><a href="#toc10" tabindex="0">セル番地を文字列で組み立てて参照する</a></li></ol></li><li><a href="#toc11" tabindex="0">スプレッドシートならではの実践活用パターン</a><ol><li><a href="#toc12" tabindex="0">パターン1: プルダウンで参照先シートを切り替える</a></li><li><a href="#toc13" tabindex="0">パターン2: IMPORTRANGE+INDIRECTで別ファイルを動的に切り替える</a></li><li><a href="#toc14" tabindex="0">パターン3: INDEX/MATCHと組み合わせた検索</a></li><li><a href="#toc15" tabindex="0">パターン4: 名前付き範囲をINDIRECTで呼び出す</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc17" tabindex="0">似た関数との違い・使い分け</a></li><li><a href="#toc18" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">「シート名をセルで切り替えたい」「プルダウンの選択に応じて参照先を変えたい」――そんな場面、ありませんか？</p>



<p class="wp-block-paragraph">手作業でいちいち数式を書き換えるのは面倒ですし、シートが増えるたびに修正が必要になります。</p>



<p class="wp-block-paragraph">スプレッドシートの<strong>INDIRECT関数</strong>を使えば、文字列をセル参照に変換できます。参照先を動的に切り替える仕組みが、数式ひとつで作れますよ。</p>



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



<p class="wp-block-paragraph">INDIRECT関数は「<strong>インダイレクト関数</strong>」と読みます。英語の「indirect」は「間接的な」という意味です。</p>



<p class="wp-block-paragraph">セル番地を直接指定するのではなく、<strong>文字列を経由して間接的に参照する</strong>。この動きがそのまま関数名になっています。</p>



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



<p class="wp-block-paragraph">INDIRECT関数を使うと、次のようなことができます。</p>



<ul class="wp-block-list"><li>文字列で指定したセル番地の値を取得する</li><li>プルダウンの選択値に応じて参照先シートを切り替える</li><li>IMPORTRANGE（別ファイルのデータを取り込む関数）と組み合わせて、参照先ファイルを動的に変更する</li><li>セル番地を文字列の結合で組み立てて参照する</li></ul>



<p class="wp-block-paragraph">ポイントは「<strong>参照先を固定しない</strong>」ことです。セルの値や数式の結果に応じて、どこを見に行くかを自在に変えられます。</p>



<h2 class="wp-block-heading"><span id="toc4">スプレッドシートのINDIRECT関数の書き方（構文・引数）</span></h2>



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



<pre class="wp-block-code"><code>=INDIRECT(セル参照の文字列, [A1形式にする])</code></pre>



<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>セル参照を表す文字列、またはその文字列が入ったセル参照</td></tr><tr><td>A1形式にする</td><td>省略可</td><td>TRUE（またはデフォルト）= A1形式。FALSE = R1C1形式</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第1引数には<code>"A1"</code>のような文字列リテラルだけでなく、セル参照も渡せます。たとえばA1セルに「B3」と入力されていれば、<code>=INDIRECT(A1)</code>でB3セルの値を取得します。</p>



<p class="wp-block-paragraph">第2引数は、ほとんどの場合は省略してOKです。R1C1形式を使いたいときだけFALSEを指定してください。</p>



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



<h3 class="wp-block-heading"><span id="toc8">同じシート内のセルを文字列で参照する</span></h3>



<p class="wp-block-paragraph">もっともシンプルな使い方です。文字列でセル番地を指定して、その値を取得します。</p>



<p class="wp-block-paragraph">たとえばB2セルに「100」と入っているとします。</p>



<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>



<pre class="wp-block-code"><code>=INDIRECT(&quot;B2&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「100」です。<code>"B2"</code>という文字列が、B2セルへの参照に変換されます。</p>



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



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



<p class="wp-block-paragraph">「それなら<code>=B2</code>と書けばいいのでは？」と思いますよね。そのとおりです。この使い方だけなら、INDIRECT関数を使うメリットはありません。</p>



<p class="wp-block-paragraph">「それなら<code>=B2</code>と書けばいいのでは？」と思いますよね。そのとおりです。この使い方だけなら、INDIRECT関数を使うメリットはありません。</p>



<p class="wp-block-paragraph">真価を発揮するのは、参照先を<strong>動的に変えたい</strong>ときです。</p>



<h3 class="wp-block-heading"><span id="toc9">別シートのセルを動的に参照する</span></h3>



<p class="wp-block-paragraph">A1セルに「売上データ」というシート名が入っているとします。「売上データ」シートのB2セルの値を取得するには、次のように書きます。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">A1の値と<code>"!B2"</code>を結合して、<code>"売上データ!B2"</code>という文字列を作っています。INDIRECT関数がこれをセル参照に変換してくれます。</p>



<p class="wp-block-paragraph">A1セルの値を「経費データ」に変えれば、参照先は自動で「経費データ!B2」に切り替わります。数式を書き換える必要はありません。</p>



<p class="wp-block-paragraph"><strong>注意点</strong>: シート名にスペースや記号が含まれる場合は、シングルクォーテーションで囲む必要があります。</p>



<p class="wp-block-paragraph"><strong>注意点</strong>: シート名にスペースや記号が含まれる場合は、シングルクォーテーションで囲む必要があります。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;'&quot;&amp;A1&amp;&quot;'!B2&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc10">セル番地を文字列で組み立てて参照する</span></h3>



<p class="wp-block-paragraph">行番号や列名をセルに持たせて、参照先を組み立てることもできます。</p>



<p class="wp-block-paragraph">A1セルに「B」、B1セルに「5」と入っているとします。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;B1)</code></pre>



<p class="wp-block-paragraph"><code>"B"</code>と<code>"5"</code>が結合されて<code>"B5"</code>になり、B5セルの値を取得します。</p>



<p class="wp-block-paragraph">ADDRESS関数（行番号と列番号からセル番地の文字列を生成する関数）と組み合わせる方法もあります。</p>



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



<p class="wp-block-paragraph">ADDRESS(3,2)は<code>"$B$3"</code>を返します。これをINDIRECT関数がB3セルへの参照に変換し、B3の値が取得されます。</p>



<h2 class="wp-block-heading"><span id="toc11">スプレッドシートならではの実践活用パターン</span></h2>



<h3 class="wp-block-heading"><span id="toc12">パターン1: プルダウンで参照先シートを切り替える</span></h3>



<p class="wp-block-paragraph">月別にシートを分けている場合を考えてみましょう。「1月」「2月」「3月」というシートがあるとします。</p>



<p class="wp-block-paragraph">A1セルにプルダウンを作成し、シート名を選べるようにします。B2セルに次の数式を入力します。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">プルダウンで「2月」を選ぶと、2月シートのB2が参照されます。「3月」に切り替えれば、3月シートのB2に変わります。</p>



<p class="wp-block-paragraph">月次レポートの集計など、同じ構成のシートを切り替えて見たいときに便利です。</p>



<p class="wp-block-paragraph">範囲全体を参照したい場合は、次のように書きます。</p>



<pre class="wp-block-code"><code>=SUM(INDIRECT(A1&amp;&quot;!B2:B10&quot;))</code></pre>



<p class="wp-block-paragraph">これでプルダウンの選択に応じたシートのB2:B10が合計されます。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン2: IMPORTRANGE+INDIRECTで別ファイルを動的に切り替える</span></h3>



<p class="wp-block-paragraph">これはスプレッドシートならではの使い方です。Excelではできません。</p>



<p class="wp-block-paragraph">IMPORTRANGE関数は、別のスプレッドシートファイルからデータを取り込む関数です。通常はURLを直接指定しますが、INDIRECT関数と組み合わせると参照先ファイルを動的に切り替えられます。</p>



<p class="wp-block-paragraph">A1セルにスプレッドシートのURLが入っているとします。</p>



<pre class="wp-block-code"><code>=IMPORTRANGE(INDIRECT(A1),&quot;Sheet1!A1:D10&quot;)</code></pre>



<p class="wp-block-paragraph">INDIRECT(A1)がA1セルのURL文字列を返し、IMPORTRANGEがそのファイルのデータを取り込みます。</p>



<p class="wp-block-paragraph">A1のURLを変えるだけで、別ファイルのデータに切り替わります。部署ごとにファイルが分かれている場合などに活用できます。</p>



<p class="wp-block-paragraph"><strong>注意点</strong>: IMPORTRANGEは初回使用時にアクセス許可が必要です。URLを切り替えるたびに、新しいファイルへの許可が求められる場合があります。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン3: INDEX/MATCHと組み合わせた検索</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>（範囲から行・列番号で値を取り出す関数）と<a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>（検索キーの位置を返す関数）にINDIRECT関数を組み合わせると、検索対象の範囲自体を動的に切り替えられます。</p>



<p class="wp-block-paragraph">A1セルにシート名「商品マスタ」が入っているとします。</p>



<pre class="wp-block-code"><code>=INDEX(INDIRECT(A1&amp;&quot;!C2:C100&quot;),MATCH(&quot;りんご&quot;,INDIRECT(A1&amp;&quot;!B2:B100&quot;),0))</code></pre>



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



<ol class="wp-block-list"><li>MATCH関数が「りんご」の行番号を探す</li><li>INDEX関数がその行のC列の値を返す</li><li>INDIRECT関数が検索範囲のシートを動的に決めている</li></ol>



<p class="wp-block-paragraph">シート名を変えるだけで、別のマスタから同じ検索ができます。</p>



<p class="wp-block-paragraph">ただし、参照先が固定で決まっている場合はINDIRECT関数を使う必要はありません。<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>とMATCH関数だけで十分です。「参照先を切り替えたい」ときにINDIRECT関数を足す、と覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン4: 名前付き範囲をINDIRECTで呼び出す</span></h3>



<p class="wp-block-paragraph">スプレッドシートでは「名前付き範囲」を設定できます。たとえば「売上合計」という名前でA1:A10を定義しているとします。</p>



<pre class="wp-block-code"><code>=SUM(INDIRECT(&quot;売上合計&quot;))</code></pre>



<p class="wp-block-paragraph">名前付き範囲の名称を文字列として渡すと、その範囲を参照できます。</p>



<p class="wp-block-paragraph">セルに名前付き範囲の名称を入れておけば、動的な切り替えも可能です。</p>



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



<p class="wp-block-paragraph">A1に「売上合計」と入力すれば売上合計の範囲が、「経費合計」と入力すれば経費合計の範囲が参照されます。</p>



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



<p class="wp-block-paragraph">INDIRECT関数で発生するエラーと、その原因・対処法をまとめます。</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>#REF!</code></td><td>セル参照の文字列が空</td><td>参照元のセルが空でないか確認する</td></tr><tr><td><code>#REF!</code></td><td>不正なセルアドレス（例: <code>"ZZZ1"</code>）</td><td>セル番地の文字列が正しいか確認する</td></tr><tr><td><code>#REF!</code></td><td>IMPORTRANGE連携でURLが無効</td><td>URLが正しいか、アクセス許可があるか確認する</td></tr><tr><td><code>#VALUE!</code></td><td>第2引数にTRUE/FALSE以外を指定した</td><td>第2引数を省略するか、TRUE/FALSEを指定する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">もっとも多いのは<code>#REF!</code>エラーです。INDIRECT関数に渡している文字列が、有効なセル参照になっているかを確認しましょう。</p>



<p class="wp-block-paragraph">デバッグのコツは、INDIRECT関数を外して<strong>引数の文字列だけを確認する</strong>ことです。たとえば<code>=INDIRECT(A1&"!B2")</code>でエラーが出たら、<code>=A1&"!B2"</code>だけをセルに入力してみてください。出力される文字列を目視で確認するのが一番早いです。</p>



<p class="wp-block-paragraph">デバッグのコツは、INDIRECT関数を外して<strong>引数の文字列だけを確認する</strong>ことです。たとえば<code>=INDIRECT(A1&"!B2")</code>でエラーが出たら、<code>=A1&"!B2"</code>だけをセルに入力してみてください。出力される文字列を目視で確認するのが一番早いです。</p>



<h2 class="wp-block-heading"><span id="toc17">似た関数との違い・使い分け</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>特徴</th><th>使いどころ</th></tr></thead><tbody><tr><td>INDIRECT</td><td>文字列をセル参照に変換する</td><td>参照先を動的に切り替えたいとき</td></tr><tr><td>ADDRESS</td><td>行番号・列番号からセル番地の文字列を生成する</td><td>INDIRECTに渡す文字列を組み立てるとき</td></tr><tr><td>INDEX</td><td>範囲から行番号・列番号で直接値を取得する</td><td>参照先が固定なら、INDIRECTより高速でシンプル</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-vlookup-function/">VLOOKUP</a></td><td>検索キーに一致する行の値を返す</td><td>単純な縦方向の検索にはVLOOKUPが手軽</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>INDIRECTとINDEXの使い分けが特に重要です。</strong></p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>は行番号と列番号を指定して値を取得します。参照先が計算で確定するなら、INDEX関数のほうが適しています。</p>



<p class="wp-block-paragraph">INDIRECT関数は<strong>揮発性関数</strong>です。シートの値が変更されるたびに再計算されます。大量に使うとスプレッドシートの動作が重くなる可能性があります。</p>



<p class="wp-block-paragraph">「参照先のシートやファイルを動的に切り替えたい」ならINDIRECT関数。「範囲内の特定の位置から値を取りたい」ならINDEX関数。この基準で選んでみてください。</p>



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



<p class="wp-block-paragraph">スプレッドシートのINDIRECT関数は、文字列をセル参照に変換する関数です。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいします。</p>



<ul class="wp-block-list"><li>構文は<code>=INDIRECT(セル参照の文字列, [A1形式にする])</code></li><li>文字列を「間接的に」セル参照として使える</li><li>プルダウンと組み合わせて参照先シートを切り替えられる</li><li>IMPORTRANGE+INDIRECTで別ファイルの動的切り替えができる（スプレッドシート限定）</li><li>揮発性関数なので、大量使用には注意が必要</li><li>参照先が固定なら<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>のほうがシンプルで高速</li></ul>



<p class="wp-block-paragraph">「どのシートを見るか」「どのファイルから取るか」をセルの値で制御したいとき、INDIRECT関数はとても頼りになります。ぜひ活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-indirect-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのVLOOKUP関数の使い方｜別シート参照・エラー対処まで解説</title>
		<link>https://mashukabu.com/spreadsheet-vlookup-function/</link>
					<comments>https://mashukabu.com/spreadsheet-vlookup-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:12:53 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[XLOOKUP]]></category>
		<category><![CDATA[エラー対処]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[別シート参照]]></category>
		<category><![CDATA[検索関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4650</guid>

					<description><![CDATA[スプレッドシートのVLOOKUP関数の使い方を基本から丁寧に解説。構文・引数の意味、別シート参照、#N/Aエラーの対処法、XLOOKUP・INDEX+MATCHとの使い分けまで実務で使えるサンプルつきで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「商品コードを入れたら商品名を自動で表示したい」。スプレッドシートを使っていると、こんな場面によく出会いますよね。</p>



<p class="wp-block-paragraph">手作業で1つずつ探していたら時間がかかりますし、コピペミスも起きがちです。</p>



<p class="wp-block-paragraph">そんなときに活躍するのが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-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">スプレッドシートのVLOOKUP関数とは？</a></li><li><a href="#toc2" tabindex="0">VLOOKUP関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">「並べ替え済み」（FALSE / TRUE）の使い分け</a></li></ol></li><li><a href="#toc6" tabindex="0">VLOOKUP関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">同じシート内でデータを検索する</a></li><li><a href="#toc8" tabindex="0">別シートのデータを参照する</a></li><li><a href="#toc9" tabindex="0">範囲を固定するコツ（絶対参照）</a></li></ol></li><li><a href="#toc10" tabindex="0">VLOOKUP関数の実務活用パターン</a><ol><li><a href="#toc11" tabindex="0">IFERROR関数と組み合わせてエラーを防ぐ</a></li><li><a href="#toc12" tabindex="0">近似一致（TRUE）で料金ランク判定する</a></li><li><a href="#toc13" tabindex="0">ワイルドカードで部分一致検索する</a></li><li><a href="#toc14" tabindex="0">IMPORTRANGE関数と組み合わせて別ファイルを参照する</a></li><li><a href="#toc15" tabindex="0">複数条件で検索する（補助列の活用）</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#N/Aエラー</a></li><li><a href="#toc18" tabindex="0">#REF!エラー</a></li><li><a href="#toc19" tabindex="0">間違った値が返る</a></li></ol></li><li><a href="#toc20" tabindex="0">VLOOKUP関数と他の検索関数の使い分け</a><ol><li><a href="#toc21" tabindex="0">VLOOKUPの3つの制約</a></li><li><a href="#toc22" tabindex="0">VLOOKUP / XLOOKUP / INDEX+MATCH 比較表</a></li><li><a href="#toc23" tabindex="0">どの関数を選べばいい？</a></li></ol></li><li><a href="#toc24" tabindex="0">まとめ</a><ol><li><a href="#toc25" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">VLOOKUP関数（読み方: ブイルックアップ関数）は、範囲の先頭列を縦方向に検索する関数です。一致した行から、指定した列の値を返してくれます。</p>



<p class="wp-block-paragraph">名前はVertical（垂直）+ Lookup（検索）が由来です。「商品コードから商品名を引っ張る」「社員番号から部署名を取得する」。こうした「表引き」作業を数式1つで片付けてくれます。</p>



<p class="wp-block-paragraph">ポイントは<strong>検索する列が範囲の先頭（左端）にある</strong>ことです。左端以外の列で検索したい場合は、<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>を検討してください。</p>



<p class="wp-block-paragraph">VLOOKUP関数にできることをまとめると、次のとおりです。</p>



<ul class="wp-block-list"><li>マスタ表から名前・価格・区分などを自動取得する</li><li>別シートや別ファイルのデータを参照する</li><li>近似一致で料金ランク・成績判定を行う</li><li>ワイルドカードで部分一致検索をする</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>VLOOKUP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。</p></blockquote>



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



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



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



<pre class="wp-block-code"><code>=VLOOKUP(検索キー, 範囲, 番号, [並べ替え済み])</code></pre>



<p class="wp-block-paragraph">引数は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>A2</td></tr><tr><td>範囲</td><td>必須</td><td>検索対象の表。先頭列に検索キーを含むこと</td><td>B2:E100</td></tr><tr><td>番号</td><td>必須</td><td>範囲の左端から数えて何列目を返すか（1以上）</td><td>3</td></tr><tr><td>並べ替え済み</td><td>省略可</td><td>FALSE = 完全一致 / TRUE = 近似一致</td><td>FALSE</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Excelでは「検索値・列番号・検索の型」と呼びますが、スプレッドシートでは「検索キー・番号・並べ替え済み」です。動作は同じなので、Excel経験者はそのまま読み替えてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc5">「並べ替え済み」（FALSE / TRUE）の使い分け</span></h3>



<p class="wp-block-paragraph">ここがVLOOKUPで一番つまずきやすい部分です。</p>



<p class="wp-block-paragraph"><strong>FALSE（完全一致）</strong> は、検索キーとぴったり一致するデータだけを探します。実務の9割はこちらです。一致しなければ#N/Aエラーになります。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, B2:D100, 2, FALSE)</code></pre>



<p class="wp-block-paragraph"><strong>TRUE（近似一致）</strong> は、検索キー以下の最大値を返します。料金表やランク判定に使います。ただし先頭列が昇順ソートされていることが前提です。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, F2:G10, 2, TRUE)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>「並べ替え済み」を省略するとデフォルトはTRUEです。「なぜか変な値が返る」の原因は、たいていこの省略です。迷ったらFALSEを明示してください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc7">同じシート内でデータを検索する</span></h3>



<p class="wp-block-paragraph">商品コードから商品名を取得する例で見てみましょう。</p>



<p class="wp-block-paragraph">A列〜C列に商品マスタがあるとします。A列が商品コード、B列が商品名、C列が価格です。</p>



<p class="wp-block-paragraph">E2に入力したコードから商品名を取得するにはこう書きます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(E2, A2:C100, 2, FALSE)</code></pre>



<p class="wp-block-paragraph">各引数の意味は次のとおりです。</p>



<ul class="wp-block-list"><li>E2: 検索キー（入力した商品コード）</li><li>A2:C100: 範囲（商品マスタ全体）</li><li>2: 範囲の左から2列目（商品名）を返す</li><li>FALSE: 完全一致で検索</li></ul>



<p class="wp-block-paragraph">E2に「P-001」と入力すると、A列から「P-001」を探し、同じ行のB列の値を返します。</p>



<h3 class="wp-block-heading"><span id="toc8">別シートのデータを参照する</span></h3>



<p class="wp-block-paragraph">実務では検索先が別シートにあることがほとんどです。シート名のあとに「!」をつけて範囲を指定します。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, マスタ!A:D, 3, FALSE)</code></pre>



<p class="wp-block-paragraph">シート名に空白を含む場合はシングルクォーテーションで囲みます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, '商品 マスタ'!A:D, 3, FALSE)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>別シートの範囲をマウスで選択すると、シート名と「!」が自動で入力されます。手入力よりもミスが減るのでおすすめです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc9">範囲を固定するコツ（絶対参照）</span></h3>



<p class="wp-block-paragraph">VLOOKUPを下方向にコピーすると、範囲がズレることがあります。範囲は絶対参照で固定しましょう。</p>



<p class="wp-block-paragraph">セル参照を選択した状態でF4キーを押すと「$」がつきます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, $B$2:$D$100, 2, FALSE)</code></pre>



<p class="wp-block-paragraph">検索キーのA2は相対参照のまま、範囲だけ固定するのが正解です。</p>



<p class="wp-block-paragraph">なお、列全体を参照する書き方（A:Dなど）ならコピーしてもズレません。ただしデータ量が多いと処理が遅くなる場合があります。</p>



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



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



<p class="wp-block-paragraph">VLOOKUPは検索キーが見つからないと#N/Aエラーを返します。資料として見栄えが悪いですし、後続の計算にも影響します。</p>



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



<pre class="wp-block-code"><code>=IFERROR(VLOOKUP(A2, マスタ!A:D, 3, FALSE), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">実務では「該当なし」や空文字「&#8221;&#8221;」を指定するケースが多いです。</p>



<h3 class="wp-block-heading"><span id="toc12">近似一致（TRUE）で料金ランク判定する</span></h3>



<p class="wp-block-paragraph">売上金額からランクを判定する場面では、近似一致が便利です。</p>



<p class="wp-block-paragraph">ランク表が次のようになっているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>下限金額</th><th>ランク</th></tr></thead><tbody><tr><td>0</td><td>C</td></tr><tr><td>100000</td><td>B</td></tr><tr><td>300000</td><td>A</td></tr><tr><td>500000</td><td>S</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この表がF2:G5にあるとします。B2の金額に対してランクを返すにはこう書きます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(B2, $F$2:$G$5, 2, TRUE)</code></pre>



<p class="wp-block-paragraph">B2が250,000なら「B」が返ります。250,000以下の最大値は100,000なので、その行のランクが返る仕組みです。</p>



<p class="wp-block-paragraph">近似一致を使うときは下限金額を必ず昇順で並べてください。</p>



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



<p class="wp-block-paragraph">「並べ替え済み」をFALSEにした状態でワイルドカードが使えます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(&quot;*東京*&quot;, A2:C100, 2, FALSE)</code></pre>



<p class="wp-block-paragraph">「*」は任意の文字列にマッチします。「東京」を含む最初のデータを探したいときに使えます。</p>



<p class="wp-block-paragraph">セル参照を使う場合は「&#038;」で連結します。</p>



<pre class="wp-block-code"><code>=VLOOKUP(&quot;*&quot;&amp;E2&amp;&quot;*&quot;, A2:C100, 2, FALSE)</code></pre>



<h3 class="wp-block-heading"><span id="toc14">IMPORTRANGE関数と組み合わせて別ファイルを参照する</span></h3>



<p class="wp-block-paragraph">スプレッドシートならではの活用法です。IMPORTRANGE関数（別ファイルのデータを取得する関数）で取り込んだ範囲をVLOOKUPの検索対象にできます。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2, IMPORTRANGE(&quot;スプレッドシートURL&quot;, &quot;マスタ!A:D&quot;), 3, FALSE)</code></pre>



<p class="wp-block-paragraph">初回はアクセス許可の確認が表示されます。「アクセスを許可」を押せば、以降は自動的にデータを参照できます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>IMPORTRANGEは共有ドライブの大規模マスタなどで重宝します。ただしファイルが重くなりやすいので、必要な列だけに絞ると安心です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc15">複数条件で検索する（補助列の活用）</span></h3>



<p class="wp-block-paragraph">VLOOKUPは検索キーを1つしか指定できません。「部署」と「役職」の2条件で検索したい場合は、補助列を作ります。</p>



<p class="wp-block-paragraph">補助列に2つの値を「&#038;」で連結した値を入れます。</p>



<pre class="wp-block-code"><code>=A2&amp;&quot;-&quot;&amp;B2</code></pre>



<p class="wp-block-paragraph">VLOOKUPの検索キーも同じ形式で連結します。</p>



<pre class="wp-block-code"><code>=VLOOKUP(E2&amp;&quot;-&quot;&amp;F2, 補助列を含む範囲, 列番号, FALSE)</code></pre>



<p class="wp-block-paragraph">補助列を使いたくない場合は、<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>やFILTER関数も検討してみてください。</p>



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



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



<p class="wp-block-paragraph">「検索キーが見つからない」という意味のエラーです。主な原因と対処法を表にまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>確認ポイント</th><th>対処法</th></tr></thead><tbody><tr><td>値が存在しない</td><td>マスタ側に該当データがあるか</td><td>データを追加するかIFERRORで対処</td></tr><tr><td>データ型の不一致</td><td>数値と文字列が混在していないか</td><td><a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a>で型を統一</td></tr><tr><td>余分なスペース</td><td>見えない空白が入っていないか</td><td><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>で除去</td></tr><tr><td>範囲がズレている</td><td>絶対参照をつけ忘れていないか</td><td>F4キーで$をつける</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">列番号が範囲の列数を超えているときに出ます。</p>



<p class="wp-block-paragraph">たとえば範囲がA:Cの3列なのに、番号に4を指定した場合です。列を削除した直後にも起こりやすいので、範囲と番号の対応を確認してください。</p>



<h3 class="wp-block-heading"><span id="toc19">間違った値が返る</span></h3>



<p class="wp-block-paragraph">エラーにはならないのに期待と違う値が返る。これが一番やっかいなケースです。</p>



<p class="wp-block-paragraph">最も多い原因は「並べ替え済みを省略してTRUEになっている」パターンです。FALSEを明示すれば解決します。</p>



<p class="wp-block-paragraph">もう1つは範囲の先頭列が検索対象と一致していないケースです。範囲の開始列を見直してみてください。</p>



<h2 class="wp-block-heading"><span id="toc20">VLOOKUP関数と他の検索関数の使い分け</span></h2>



<p class="wp-block-paragraph">VLOOKUPは便利ですが、万能ではありません。場面に応じた関数選びのポイントを整理します。</p>



<h3 class="wp-block-heading"><span id="toc21">VLOOKUPの3つの制約</span></h3>



<ol class="wp-block-list"><li><strong>左方向に検索できない</strong>: 範囲の先頭列でしか検索できません</li><li><strong>列番号がハードコード</strong>: 列の挿入や削除で番号がズレます</li><li><strong>最初の一致しか返さない</strong>: 重複があっても先頭の1件だけです</li></ol>



<h3 class="wp-block-heading"><span id="toc22">VLOOKUP / XLOOKUP / INDEX+MATCH 比較表</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>可能</td><td>可能</td></tr><tr><td>列追加への耐性</td><td>弱い</td><td>強い</td><td>強い</td></tr><tr><td>エラー時の既定値</td><td>IFERROR必要</td><td>引数で指定可</td><td>IFERROR必要</td></tr><tr><td>デフォルトの一致方式</td><td>近似一致</td><td>完全一致</td><td>完全一致（0指定）</td></tr><tr><td>複数列を一括で返す</td><td>不可</td><td>可能</td><td>不可</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>シンプル</td><td>やや複雑</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc23">どの関数を選べばいい？</span></h3>



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



<ul class="wp-block-list"><li><strong>左方向の値を取りたい</strong> → <a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>がベスト</li><li><strong>複数列の結果を一括で返したい</strong> → XLOOKUP関数がベスト</li><li><strong>条件に合う複数行を抽出したい</strong> → <a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER関数</a>の出番</li><li><strong>シンプルな右方向の表引き</strong> → VLOOKUPで十分</li></ul>



<p class="wp-block-paragraph">VLOOKUPは「古い関数」と言われることもあります。ただ、構文がシンプルで直感的なのは大きなメリットです。左方向検索が不要な場面ではVLOOKUPのほうが読みやすい数式になります。</p>



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



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



<ul class="wp-block-list"><li>構文は <code>=VLOOKUP(検索キー, 範囲, 番号, 並べ替え済み)</code> の4引数</li><li>「並べ替え済み」は省略せずFALSEを明示するのが安全</li><li>範囲の絶対参照とIFERRORの組み合わせは実務の必須テクニック</li><li>#N/Aエラーは「データ型の不一致」や「余分なスペース」を疑う</li><li>左方向検索が必要なら<a href="https://mashukabu.com/spreadsheet-xlookup/">XLOOKUP関数</a>を検討</li></ul>



<p class="wp-block-paragraph">まずは基本の完全一致検索からはじめてみてください。IFERROR関数やワイルドカードを組み合わせれば、実務のほとんどの場面に対応できます。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-xlookup/">スプレッドシートのXLOOKUP関数の使い方｜VLOOKUPとの違いも解説</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方｜条件に合うデータを自動抽出</a></li><li><a href="https://mashukabu.com/spreadsheet-value-function/">スプレッドシートのVALUE関数の使い方｜文字列を数値に変換</a></li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">スプレッドシートのTRIM関数の使い方｜余分なスペースを一括削除</a></li><li><a href="https://mashukabu.com/spreadsheet-sumif-function/">スプレッドシートのSUMIF関数の使い方｜条件付き合計</a></li><li><a href="https://mashukabu.com/spreadsheet-countif-function/">スプレッドシートのCOUNTIF関数の使い方｜条件付きカウント</a></li><li><a href="https://mashukabu.com/spreadsheet-today-function/">スプレッドシートのTODAY関数の使い方｜今日の日付を自動入力</a></li><li><a href="https://mashukabu.com/spreadsheet-text-function/">スプレッドシートのTEXT関数の使い方｜数値を任意の書式で表示</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-vlookup-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのINDIRECT関数｜別シート参照・エラー対処・揮発性の重さを解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-indirect/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-indirect/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 15 Mar 2025 13:25:55 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[REFエラー]]></category>
		<category><![CDATA[別シート参照]]></category>
		<category><![CDATA[動的参照]]></category>
		<category><![CDATA[揮発性関数]]></category>
		<category><![CDATA[連動ドロップダウン]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2274</guid>

					<description><![CDATA[ExcelのINDIRECT関数の使い方を完全解説。別シート参照のシングルクォート漏れ・#REF!エラーの状況別対処フロー・揮発性による重さとINDEX置換パターン・Excel 365でのスピル関数との使い分けまで、実務で迷わない知識をまとめて紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelのINDIRECT関数を使ってみて、壁にぶつかったことはありませんか。「なぜか#REF!エラーが消えない」「ファイルが急に重くなった」という悩みは、よく聞く声です。</p>



<p class="wp-block-paragraph">INDIRECT関数は「文字列をセル参照に変える」便利な関数です。一方で、別シート参照のクォートの書き方や、揮発性（再計算が頻繁に走る性質）の重さを知らないと、思わぬトラブルにつながります。</p>



<p class="wp-block-paragraph">この記事では、INDIRECT関数の基本から別シート参照の正確なルール、#REF!エラーの状況別対処までを解説します。さらに、INDEXへの乗り換え判断もまとめて紹介します。「正しく動かす」と「使うべき場面を見極める」の両方が一度でわかる内容です。</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">INDIRECT関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方・語源</a></li><li><a href="#toc3" tabindex="0">INDIRECT関数でできること</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">別シート参照の書き方</a><ol><li><a href="#toc7" tabindex="0">基本パターン（スペースなしのシート名）</a></li><li><a href="#toc8" tabindex="0">シート名にスペース・記号がある場合（シングルクォート必須）</a></li><li><a href="#toc9" tabindex="0">よくある書き間違いと確認方法</a></li></ol></li><li><a href="#toc10" tabindex="0">実務で使えるINDIRECT関数の活用パターン</a><ol><li><a href="#toc11" tabindex="0">連動ドロップダウン（名前の定義を使う）</a></li><li><a href="#toc12" tabindex="0">別シートをドロップダウンで動的に切り替える</a></li><li><a href="#toc13" tabindex="0">VLOOKUPの検索範囲をシートごとに切り替える</a></li><li><a href="#toc14" tabindex="0">ADDRESS関数との組み合わせ</a></li></ol></li><li><a href="#toc15" tabindex="0">#REF!エラー状況別フローと対処法</a><ol><li><a href="#toc16" tabindex="0">状況1: シート名にスペースがある（クォート漏れ）</a></li><li><a href="#toc17" tabindex="0">状況2: 参照文字列に余分なスペース（TRIM処理）</a></li><li><a href="#toc18" tabindex="0">状況3: 外部ブックが閉じている（キャッシュ不可の仕様）</a></li><li><a href="#toc19" tabindex="0">状況4: 名前の定義が未登録・スペルミス</a></li></ol></li><li><a href="#toc20" tabindex="0">揮発性の重さとINDEX置換パターン</a><ol><li><a href="#toc21" tabindex="0">揮発性関数とは何か・再計算の仕組み</a></li><li><a href="#toc22" tabindex="0">INDEXに置き換えられるパターン・できないパターン早見表</a></li><li><a href="#toc23" tabindex="0">パフォーマンス改善の判断基準</a></li><li><a href="#toc24" tabindex="0">スピル時代（Excel 365）のINDIRECTの位置づけ</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ・使い分け早見表</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">ExcelのINDIRECT関数は、<strong>文字列をセル参照に変換する</strong>関数です。ふつうの数式では <code>=A1</code> のように参照先を直接書きます。INDIRECT関数を使うと、「A1」という文字列を渡すだけでセルA1の値を取得できます。</p>



<p class="wp-block-paragraph">ポイントは、<strong>参照先を「文字列で」コントロールできる</strong>ことです。セルの値やドロップダウンの選択内容に応じて、参照先をその場で切り替えられます。</p>



<p class="wp-block-paragraph">たとえばセルA1に「B2」という文字が入っているとします。<code>=INDIRECT(A1)</code> と書くと、INDIRECT関数はこの文字を読み取ってセルB2を参照します。A1の中身を「C5」に変えれば、数式はそのままで参照先がC5に切り替わります。</p>



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



<p class="wp-block-paragraph">読み方は「インダイレクト」です。英語の「indirect」は「間接的な」という意味です。</p>



<p class="wp-block-paragraph">セルを直接指さすのではなく、文字列を経由して<strong>間接的に参照する</strong>ことから、この名前がついています。この「間接性」が便利さの源であり、同時にエラーや重さの原因にもなります。</p>



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



<p class="wp-block-paragraph">INDIRECT関数を使うと、次のようなことが実現できます。</p>



<ul class="wp-block-list"><li>セル番地を文字列で指定して、参照先を動的に切り替える</li><li>別シートのデータを、シート名の文字列で参照する</li><li>ドロップダウンの選択に連動して、表示内容を変える</li><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>の検索範囲を、シートごとに切り替える</li></ul>



<p class="wp-block-paragraph">どれも「参照先を動的に変えたい」場面で役立つ使い方です。順番に見ていきましょう。</p>



<p class="wp-block-paragraph">なお、Googleスプレッドシートにも同じINDIRECT関数があります。構文はExcelとほぼ同じです。Sheetsでの使い方は<a href="https://mashukabu.com/spreadsheet-indirect-function/">スプレッドシートのINDIRECT関数の使い方</a>で解説しています。</p>



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



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



<pre class="wp-block-code"><code>=INDIRECT(参照文字列, [参照形式])</code></pre>



<p class="wp-block-paragraph">第1引数の「参照文字列」だけを指定すれば動きます。第2引数の「参照形式」は省略可能です。それぞれの引数の意味は次の表のとおりです。</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>TRUE（省略時のデフォルト）= A1形式で解釈。FALSE = R1C1形式で解釈</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第2引数の「参照形式」は、ほとんどの場面でTRUE（A1形式）を使います。R1C1形式を扱うケースはまれです。基本的には省略してかまいません。</p>



<p class="wp-block-paragraph">ここで「参照文字列」とは、「B2」や「Sheet1!A1」のような、セルの場所を表す文字のことです。INDIRECT関数はこの文字を読み取り、本物のセル参照として扱います。</p>



<h3 class="wp-block-heading"><span id="toc5">最小サンプルで動きを確認する</span></h3>



<p class="wp-block-paragraph">一番シンプルな例を見てみましょう。セルA1に「B」という文字を入れておきます。そのうえで次の数式を入力します。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;2&quot;)</code></pre>



<p class="wp-block-paragraph"><code>A1&"2"</code> の部分で「B」と「2」がつながり、「B2」という文字列ができます。INDIRECT関数がこれをセル参照と解釈し、<strong>セルB2の値</strong>を返します。</p>



<p class="wp-block-paragraph">文字列を直接指定することもできます。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;B2&quot;)</code></pre>



<p class="wp-block-paragraph">この場合は常にB2を参照します。ただし切り替える必要がないなら、ふつうに <code>=B2</code> と書くほうがシンプルです。INDIRECTの価値は「参照先を変えられること」にあります。</p>



<h2 class="wp-block-heading"><span id="toc6">別シート参照の書き方</span></h2>



<p class="wp-block-paragraph">INDIRECT関数が本領を発揮するのは、<strong>別シートの参照</strong>です。ここはエラーが起きやすいポイントなので、シングルクォートのルールを正確に押さえましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">基本パターン（スペースなしのシート名）</span></h3>



<p class="wp-block-paragraph">シート名に空白や記号が含まれない場合は、シンプルに書けます。セルA1にシート名が入っている前提で見てみましょう。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">A1に「1月」と入力されていれば、<code>A1&"!B2"</code> が「1月!B2」という文字列になります。そのまま「1月」シートのB2セルを参照できます。</p>



<p class="wp-block-paragraph">A1の値を「2月」に変えれば、参照先も「2月」シートのB2に切り替わります。月別シートの集計などで重宝するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc8">シート名にスペース・記号がある場合（シングルクォート必須）</span></h3>



<p class="wp-block-paragraph">ここが最大の落とし穴です。シート名に<strong>スペースやハイフン、記号が含まれる</strong>場合、シングルクォーテーション（<code>'</code>）で囲まないと#REF!エラーになります。</p>



<p class="wp-block-paragraph">たとえばシート名が「売上 データ」のように空白を含むとします。この場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;'&quot;&amp;A1&amp;&quot;'!B2&quot;)</code></pre>



<p class="wp-block-paragraph">少し複雑に見えるので、分解して確認しましょう。</p>



<ul class="wp-block-list"><li><code>"'"</code> … 開きのシングルクォート1文字</li><li><code>A1</code> … シート名（例:「売上 データ」）</li><li><code>"'!B2"</code> … 閉じのシングルクォートと、セル番地</li></ul>



<p class="wp-block-paragraph">これらがつながると、<code>'売上 データ'!B2</code> という文字列になります。Excelの正式なシート参照の形と一致するため、正しく参照できます。</p>



<p class="wp-block-paragraph">手入力でシート参照を書いたとき、Excelが自動で <code>'売上 データ'!B2</code> のようにクォートを付ける挙動と同じです。INDIRECTでは自動で付かないので、自分で組み込む必要があります。</p>



<p class="wp-block-paragraph">実務ではスペース入りのシート名も少なくありません。<strong>迷ったらクォート付きの書き方を使う</strong>のが安全です。スペースのないシート名にクォートを付けても問題なく動きます。</p>



<h3 class="wp-block-heading"><span id="toc9">よくある書き間違いと確認方法</span></h3>



<p class="wp-block-paragraph">別シート参照でつまずいたら、まず「文字列が正しく組み立てられているか」を確認します。確認には、INDIRECTを外して文字列だけを表示させる方法が有効です。</p>



<pre class="wp-block-code"><code>=&quot;'&quot;&amp;A1&amp;&quot;'!B2&quot;</code></pre>



<p class="wp-block-paragraph">この数式をどこかの空きセルに入れると、INDIRECTが受け取る文字列がそのまま表示されます。表示結果が <code>'売上 データ'!B2</code> のような正しい形になっているかを目で確認できます。</p>



<p class="wp-block-paragraph">ここで <code>売上 データ'!B2</code>（先頭のクォート抜け）のように崩れていれば、数式の <code>"'"</code> の部分が抜けています。文字列さえ正しければ、INDIRECTは必ず正しく参照します。</p>



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



<h3 class="wp-block-heading"><span id="toc11">連動ドロップダウン（名前の定義を使う）</span></h3>



<p class="wp-block-paragraph">INDIRECT関数の代表的な使い方が<strong>連動ドロップダウン</strong>です。1つ目のドロップダウンで選んだ値に応じて、2つ目の選択肢が自動で切り替わります。</p>



<p class="wp-block-paragraph">たとえば1つ目で「果物」を選ぶと、2つ目に「リンゴ・ミカン・バナナ」が表示されます。「野菜」に変えると別の選択肢に切り替わる、というイメージです。手順を順に見ていきましょう。</p>



<p class="wp-block-paragraph"><strong>ステップ1: 選択肢のデータを用意する</strong></p>



<p class="wp-block-paragraph">カテゴリごとの選択肢を、シートに縦方向で並べておきます。</p>



<p class="wp-block-paragraph"><strong>ステップ2: 名前の定義を登録する</strong></p>



<p class="wp-block-paragraph">選択肢の範囲を選びます。次に「数式」タブの「名前の定義」を開きます。ここで範囲に名前を付けます。</p>



<p class="wp-block-paragraph">ポイントは、<strong>名前をカテゴリ名と一致させる</strong>ことです。</p>



<ul class="wp-block-list"><li>「リンゴ・ミカン・バナナ」の範囲 → 名前:果物</li><li>「ニンジン・キャベツ・トマト」の範囲 → 名前:野菜</li></ul>



<p class="wp-block-paragraph">名前の定義の登録手順は<a href="https://mashukabu.com/excel-named-range/">Excelの「名前の定義」完全ガイド</a>で詳しく解説しています。</p>



<p class="wp-block-paragraph"><strong>ステップ3: 第1ドロップダウンを設定する</strong></p>



<p class="wp-block-paragraph">B2セルを選びます。「データの入力規則」を開きます。ソースに「果物,野菜」とカンマ区切りで入力します。</p>



<p class="wp-block-paragraph"><strong>ステップ4: 第2ドロップダウンにINDIRECTを設定する</strong></p>



<p class="wp-block-paragraph">C2セルを選びます。「データの入力規則」を開きます。ソースに次の数式を入力します。</p>



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



<p class="wp-block-paragraph">B2で「果物」を選ぶと、INDIRECT関数が「果物」という文字列を名前の定義として解釈します。結果として、名前「果物」に登録された範囲がドロップダウンの選択肢になります。</p>



<p class="wp-block-paragraph">なお、<strong>名前の定義にはスペースが使えません</strong>。カテゴリ名に空白が入る場合は、名前側をアンダースコアにします。そのうえで次のように対処するのが実務での定番です。</p>



<pre class="wp-block-code"><code>=INDIRECT(SUBSTITUTE(B2,&quot; &quot;,&quot;_&quot;))</code></pre>



<p class="wp-block-paragraph">これはB2の空白をアンダースコアに置き換えてから名前を呼び出すTipsです。連動ドロップダウンの作り方そのものは<a href="https://mashukabu.com/excel-dropdown-list/">Excelの入力規則（プルダウン）完全ガイド</a>も合わせて参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc12">別シートをドロップダウンで動的に切り替える</span></h3>



<p class="wp-block-paragraph">「東京」「大阪」「名古屋」など、支店ごとにシートが分かれている場合を考えます。集計シートにドロップダウンを置きます。選択した支店のデータを自動で表示させる方法です。</p>



<p class="wp-block-paragraph">A1セルで支店名を選べるようにします。データを取得したいセルに次のように入力します。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">A1で「東京」を選べば東京シートのB2が表示されます。「大阪」を選べば大阪シートのB2に切り替わります。</p>



<p class="wp-block-paragraph">SUM関数と組み合わせれば、範囲集計も動的に切り替えられます。</p>



<pre class="wp-block-code"><code>=SUM(INDIRECT(A1&amp;&quot;!B2:B10&quot;))</code></pre>



<p class="wp-block-paragraph">シートをまたいだ切り替えがドロップダウン1つで完結します。レポート作成がぐっとラクになります。支店名にスペースが入る場合は、前述のクォート付きの書き方を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc13">VLOOKUPの検索範囲をシートごとに切り替える</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>の検索範囲を、INDIRECTで動的に指定するテクニックです。部署ごとにシートが分かれている場面で便利です。</p>



<pre class="wp-block-code"><code>=VLOOKUP(A2,INDIRECT(B1&amp;&quot;!A:C&quot;),2,0)</code></pre>



<p class="wp-block-paragraph">B1セルにシート名（部署名）を入れておきます。同じ数式のまま、検索対象のシートを切り替えられます。</p>



<p class="wp-block-paragraph">VLOOKUPとINDEX+MATCHの使い分けに迷ったら、<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCH使い分けガイド</a>を参考にしてください。なお、Excel 365なら<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>とINDIRECTを組み合わせても同じことができます。</p>



<h3 class="wp-block-heading"><span id="toc14">ADDRESS関数との組み合わせ</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a>は、行番号と列番号からセル番地の文字列を生成します。これをINDIRECT関数に渡すと、行と列の両方を数値でコントロールできます。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(B1,C1))</code></pre>



<p class="wp-block-paragraph">B1に行番号（例:3）、C1に列番号（例:2）を入れます。ADDRESS関数が「$B$3」という文字列を生成します。INDIRECT関数がこれをセル参照に変換し、B3の値を返します。</p>



<p class="wp-block-paragraph">ただし、ここまで複雑になるなら<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>のほうがシンプルです。後の章で、この置き換えを詳しく見ていきます。</p>



<h2 class="wp-block-heading"><span id="toc15">#REF!エラー状況別フローと対処法</span></h2>



<p class="wp-block-paragraph">INDIRECT関数のエラーは、ほとんどが<strong>#REF!</strong>です。原因は1つではありません。状況ごとに対処が違うので、Q&#038;A形式で4つの分岐を整理します。</p>



<p class="wp-block-paragraph">まず、自分のエラーがどの状況に当てはまるかを次の順で確認してください。</p>



<ol class="wp-block-list"><li>別シートを参照していて、シート名にスペース・記号があるか → 状況1</li><li>参照文字列に余分なスペースが混ざっていないか → 状況2</li><li>外部の別ブックを参照していて、そのブックを閉じていないか → 状況3</li><li>名前の定義を参照していて、その名前が登録済みか → 状況4</li></ol>



<h3 class="wp-block-heading"><span id="toc16">状況1: シート名にスペースがある（クォート漏れ）</span></h3>



<p class="wp-block-paragraph">最も多い原因が、シングルクォートの付け忘れです。シート名にスペースやハイフン、記号が含まれると、クォートなしでは#REF!になります。</p>



<p class="wp-block-paragraph">たとえば次の書き方は、シート名が「売上 データ」だと失敗します。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">クォートを付けた次の形に直してください。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;'&quot;&amp;A1&amp;&quot;'!B2&quot;)</code></pre>



<p class="wp-block-paragraph">判断に迷う場合は、シート名に関係なく常にクォート付きで書くのがおすすめです。スペースのないシート名でも、クォート付きで問題なく動きます。</p>



<h3 class="wp-block-heading"><span id="toc17">状況2: 参照文字列に余分なスペース（TRIM処理）</span></h3>



<p class="wp-block-paragraph">シート名やセルの値に、<strong>目に見えない余分なスペース</strong>が混ざっているケースです。ほかのシステムからコピーしたデータでよく起こります。</p>



<p class="wp-block-paragraph">「東京」のつもりが「東京 」（末尾に空白）になっていると、シート名が一致せず#REF!になります。この場合はTRIM関数で前後の空白を取り除きます。</p>



<pre class="wp-block-code"><code>=INDIRECT(TRIM(A1)&amp;&quot;!B2&quot;)</code></pre>



<p class="wp-block-paragraph">TRIM関数は文字列の前後の空白を削除します。スペースが原因かどうかを切り分けるには、<code>=LEN(A1)</code> で文字数を数えてみてください。想定より多ければ、余分な空白が混ざっています。</p>



<h3 class="wp-block-heading"><span id="toc18">状況3: 外部ブックが閉じている（キャッシュ不可の仕様）</span></h3>



<p class="wp-block-paragraph">INDIRECT関数で<strong>別のExcelブック</strong>を参照する場合、参照先のブックを開いておく必要があります。ブックを閉じると#REF!になります。</p>



<p class="wp-block-paragraph">これは仕様です。ふつうのセル参照（<code>=[Book1.xlsx]Sheet1!A1</code>）なら、ブックを閉じていてもキャッシュ（保存済みの値）が表示されます。一方、INDIRECT関数は毎回文字列を評価して参照を組み立て直します。そのためキャッシュが効きません。</p>



<p class="wp-block-paragraph">対処は2つです。参照先のブックを開いたまま使うか、別ブック参照をやめてふつうのリンク数式に切り替えるかです。なお、Excel Online（ブラウザ版）では、そもそも外部ブック参照に対応していません。</p>



<h3 class="wp-block-heading"><span id="toc19">状況4: 名前の定義が未登録・スペルミス</span></h3>



<p class="wp-block-paragraph">連動ドロップダウンなどで名前の定義を参照しているのに、その名前が登録されていないケースです。<code>=INDIRECT(B2)</code> でB2が「果物」でも、名前「果物」が未登録なら#REF!になります。</p>



<p class="wp-block-paragraph">確認手順は次のとおりです。「数式」タブの「名前の管理」を開きます。一覧に該当の名前があるかを確かめます。</p>



<p class="wp-block-paragraph">スペルや表記ゆれ（全角・半角の違いなど）にも注意してください。エラーを事前に防ぎたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-isref/">ISREF関数</a>で参照の有効性を判定できます。</p>



<pre class="wp-block-code"><code>=ISREF(INDIRECT(B2))</code></pre>



<p class="wp-block-paragraph">参照が有効ならTRUE、無効ならFALSEを返します。IFERROR関数と組み合わせて、エラー時に空白や代替文字を表示するのも有効です。</p>



<h2 class="wp-block-heading"><span id="toc20">揮発性の重さとINDEX置換パターン</span></h2>



<p class="wp-block-paragraph">INDIRECT関数の「重さ」に悩んでいる方も多いはずです。原因は揮発性にあります。ここでは仕組みと、INDEXへの具体的な置き換え方法を解説します。</p>



<h3 class="wp-block-heading"><span id="toc21">揮発性関数とは何か・再計算の仕組み</span></h3>



<p class="wp-block-paragraph">INDIRECT関数は<strong>揮発性関数（Volatile Function）</strong>です。揮発性関数とは、シート内のどこかのセルが変わるたびに、<strong>自分も毎回再計算される</strong>関数のことです。</p>



<p class="wp-block-paragraph">通常の関数は、自分が参照しているセルが変わったときだけ再計算されます。一方、揮発性関数は無関係なセルの変更でも再計算が走ります。同じ仲間には、TODAY関数・NOW関数・RAND関数・<a href="https://mashukabu.com/excel-function-howto-use-offset/">OFFSET関数</a>などがあります。</p>



<p class="wp-block-paragraph">問題は、再計算が連鎖することです。INDIRECTを参照している重い関数（VLOOKUPやSUMIFなど）も、つられて毎回計算し直されます。数個なら影響はありません。しかし数百から数千セルで使うと、ファイルを開くたび・セルを編集するたびに処理が重くなります。</p>



<h3 class="wp-block-heading"><span id="toc22">INDEXに置き換えられるパターン・できないパターン早見表</span></h3>



<p class="wp-block-paragraph">重さを解消する王道が、非揮発性の<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>への置き換えです。INDEXは参照先のデータが実際に変わったときだけ再計算されます。</p>



<p class="wp-block-paragraph">ただし、すべてのINDIRECTがINDEXに置き換えられるわけではありません。代表的な3パターンの可否を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>元のINDIRECT</th><th>置換可否</th><th>置換後（INDEX等）</th></tr></thead><tbody><tr><td><code>INDIRECT(ADDRESS(3,2))</code></td><td>置換可</td><td><code>INDEX(A:Z,3,2)</code></td></tr><tr><td><code>INDIRECT("B"&A1)</code></td><td>置換可</td><td><code>INDEX(B:B,A1)</code></td></tr><tr><td><code>INDIRECT(A1&"!B2")</code></td><td>置換不可</td><td>INDIRECTが唯一の手段</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">1つ目は、行・列を数値で指定するパターンです。<code>ADDRESS(3,2)</code> は「$B$3」を作るので、参照先はB3です。<code>INDEX(A:Z,3,2)</code> も範囲A:Zの3行2列目、つまりB3を返します。戻り値は同じで、揮発性だけが消えます。</p>



<p class="wp-block-paragraph">2つ目は、列を固定して行だけ可変にするパターンです。A1が「5」なら、<code>INDIRECT("B"&A1)</code> は「B5」を参照します。<code>INDEX(B:B,A1)</code> も列Bの5番目、つまりB5を返します。こちらも結果は一致します。</p>



<p class="wp-block-paragraph">3つ目の<strong>別シートを動的に切り替えるパターンは置換できません</strong>。INDEXはシート名を文字列で受け取れないからです。連動ドロップダウンの <code>=INDIRECT(B2)</code>（名前を動的に呼ぶ形）も同様で、INDIRECTが唯一の選択肢です。</p>



<h3 class="wp-block-heading"><span id="toc23">パフォーマンス改善の判断基準</span></h3>



<p class="wp-block-paragraph">置き換えるかどうかの判断は、次の基準で考えると迷いません。</p>



<ul class="wp-block-list"><li>参照先を<strong>行番号・列番号の数値</strong>で決められる → INDEXに置き換える（軽量化できる）</li><li>参照先を<strong>シート名や名前（文字列）</strong>で決めている → INDIRECTのまま使う</li></ul>



<p class="wp-block-paragraph">つまり「数値で参照先が決まるか」「文字列で決めたいか」が分かれ目です。文字列ベースの動的参照は、INDIRECTにしかできない仕事です。ここは無理に置き換えず、使う個数を抑える方向で対処します。</p>



<p class="wp-block-paragraph">実務では、すべてを置き換える必要はありません。同じ計算を数百セルで繰り返している箇所だけINDEXに直せば、体感速度は大きく改善します。</p>



<h3 class="wp-block-heading"><span id="toc24">スピル時代（Excel 365）のINDIRECTの位置づけ</span></h3>



<p class="wp-block-paragraph">Excel 365では、FILTER・UNIQUE・XLOOKUPといった<strong>スピル関数</strong>（1つの数式で複数セルに結果が自動展開される関数）が使えます。「これがあればINDIRECTは不要では？」と感じる方もいるでしょう。結論から言うと、用途次第です。</p>



<p class="wp-block-paragraph"><strong>同一シート内</strong>の条件絞り込みは、FILTER関数のほうがシンプルです。たとえば「同じシートの一覧から、特定カテゴリだけ抜き出す」用途を考えます。従来はINDIRECTや作業列を駆使していました。Excel 365なら、FILTERで1行書くだけで動的に絞り込めます。再計算の重さもなく、可読性も高くなります。同じシート内でデータを引きたいだけなら、まずスピル関数を検討してください。</p>



<p class="wp-block-paragraph">一方、<strong>シート名そのものを動的に切り替える</strong>用途は、スピル関数では代替できません。次のような場面です。</p>



<ul class="wp-block-list"><li>連動ドロップダウン（選択値から名前の定義を呼ぶ）</li><li>月別・支店別シートを、選択に応じて切り替える集計</li></ul>



<p class="wp-block-paragraph">FILTERが扱えるのは、あくまで「指定した範囲の中の絞り込み」です。「どのシートを見るか」を文字列で切り替える芸当はできません。ここはExcel 365でもINDIRECTの独壇場です。つまりExcel 365では、<strong>同一シート内の絞り込みはスピル関数、シート横断の動的参照はINDIRECT</strong>という役割分担になります。両者は競合せず、補い合う関係です。</p>



<h2 class="wp-block-heading"><span id="toc25">まとめ・使い分け早見表</span></h2>



<p class="wp-block-paragraph">INDIRECT関数は、<strong>文字列をセル参照に変換する</strong>関数です。便利な反面、別シート参照のクォートと揮発性の重さに注意が必要でした。最後に要点を整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>場面</th><th>結論</th></tr></thead><tbody><tr><td>別シート参照（スペースなし）</td><td><code>=INDIRECT(A1&"!B2")</code> で参照できる</td></tr><tr><td>別シート参照（スペースあり）</td><td><code>=INDIRECT("'"&A1&"'!B2")</code> とクォートで囲む</td></tr><tr><td>#REF!が出た</td><td>クォート漏れ・余分なスペース・閉じたブック・名前未登録の4点を順に確認</td></tr><tr><td>数値で参照先が決まる</td><td><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>に置き換えて軽量化</td></tr><tr><td>文字列で参照先を切り替える</td><td>INDIRECTが唯一の選択肢</td></tr><tr><td>Excel 365で同一シート内を絞り込む</td><td>FILTERなどスピル関数を優先</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときの判断はシンプルです。「シート名や名前を文字列で動的に切り替えたい」ならINDIRECT、「行番号・列番号で参照先が決まる」ならINDEXを選んでください。</p>



<p class="wp-block-paragraph">揮発性による重さが気になったら、置換可能なパターンだけをINDEXに直すと効果的です。まずは別シート参照と連動ドロップダウンから試してみてください。Googleスプレッドシートでも使いたい方は、<a href="https://mashukabu.com/spreadsheet-indirect-function/">スプレッドシートのINDIRECT関数の使い方</a>も参考にしてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-indirect/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
