<?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%8B%95%E7%9A%84%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.2</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>スプレッドシートのADDRESS関数の使い方｜セル番地を自動作成</title>
		<link>https://mashukabu.com/spreadsheet-address-function/</link>
					<comments>https://mashukabu.com/spreadsheet-address-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:39 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[INDIRECT連携]]></category>
		<category><![CDATA[スプレッドシート関数]]></category>
		<category><![CDATA[セル番地]]></category>
		<category><![CDATA[動的参照]]></category>
		<category><![CDATA[参照形式]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4670</guid>

					<description><![CDATA[スプレッドシートのADDRESS関数の使い方を基本から解説。行番号・列番号からセル番地を自動作成する方法、INDIRECT関数との組み合わせ、参照形式の違いまで実例つきで紹介します。]]></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">スプレッドシートの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></ol></li><li><a href="#toc7" tabindex="0">ADDRESS関数の基本的な使い方</a></li><li><a href="#toc8" tabindex="0">ADDRESS関数の実践的な使い方・応用例</a><ol><li><a href="#toc9" tabindex="0">ADDRESS+INDIRECTで動的セル参照を作る</a></li><li><a href="#toc10" tabindex="0">ROW・COLUMNと組み合わせて位置を動的に取得する</a></li><li><a href="#toc11" tabindex="0">別シートから動的にデータを取得する</a></li><li><a href="#toc12" tabindex="0">MATCH関数と組み合わせて検索結果の位置を表示する</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">似た関数との違い・使い分け</a></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">「行番号と列番号はわかるけど、セル番地の文字列が欲しい」――そんな場面はありませんか？</p>



<p class="wp-block-paragraph">たとえばVLOOKUPやINDEX関数の結果をもとに、「どのセルを見ているか」を表示したい。でもセル番地を手入力で管理するのは面倒ですよね。</p>



<p class="wp-block-paragraph">スプレッドシートの<strong>ADDRESS関数</strong>を使えば、行番号と列番号を指定するだけでセル番地の文字列を自動生成できます。<a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>（文字列をセル参照に変換する関数）と組み合わせれば、動的なセル参照の仕組みも作れますよ。</p>



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



<p class="wp-block-paragraph">ADDRESS関数は「<strong>アドレス関数</strong>」と読みます。英語の「address」は「住所・番地」という意味です。</p>



<p class="wp-block-paragraph">セルの「住所」にあたる番地文字列を返す関数、と覚えるとわかりやすいですね。</p>



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



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



<ul class="wp-block-list"><li>行番号と列番号からセル番地の文字列（例: <code>$A$1</code>）を生成する</li><li>絶対参照・相対参照・複合参照を切り替えて出力する</li><li>A1形式とR1C1形式を選んで出力する</li><li>別シートのセル番地（例: <code>Sheet2!$A$1</code>）を生成する</li><li>INDIRECT関数と組み合わせて、番地から実際の値を取得する</li></ul>



<p class="wp-block-paragraph">ポイントは「<strong>文字列を返す</strong>」ことです。ADDRESS関数だけではセルの値は取得できません。値が欲しいときは<a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>と組み合わせます。</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(行, 列, [参照の型], [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>セルの行番号（1以上の整数）</td></tr><tr><td>列</td><td>必須</td><td>セルの列番号（1以上の整数。A列=1、B列=2&#8230;）</td></tr><tr><td>参照の型</td><td>省略可</td><td>参照形式の種類（下表参照）。省略時は1（絶対参照）</td></tr><tr><td>A1形式</td><td>省略可</td><td>TRUE=A1形式（デフォルト）、FALSE=R1C1形式</td></tr><tr><td>シート名</td><td>省略可</td><td>シート名を文字列で指定。出力にシート名が付く</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">参照の型（第3引数）の一覧</h4>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>参照形式</th><th>出力例</th></tr></thead><tbody><tr><td>1</td><td>絶対参照（行・列とも固定）</td><td><code>$A$1</code></td></tr><tr><td>2</td><td>行だけ絶対参照</td><td><code>A$1</code></td></tr><tr><td>3</td><td>列だけ絶対参照</td><td><code>$A1</code></td></tr><tr><td>4</td><td>相対参照（固定なし）</td><td><code>A1</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務では「1（絶対参照）」か「4（相対参照）」を使うことがほとんどです。迷ったら省略して絶対参照にしておけばOKです。</p>



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



<p class="wp-block-paragraph">もっともシンプルな使い方は、行番号と列番号を直接指定するパターンです。</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>=ADDRESS(3, 2)</code></pre>



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



<p class="wp-block-paragraph">結果は <code>$B$3</code> です。3行目・2列目（B列）のセル番地が、絶対参照の文字列として返されます。</p>



<p class="wp-block-paragraph">相対参照で取得したい場合は、第3引数に4を指定します。</p>



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



<p class="wp-block-paragraph">結果は <code>B3</code> です。<code>$</code> 記号のない相対参照になります。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-address-function/03_result_address-basic.png/">_images/spreadsheet-address-function/03_result_address-basic.png</a></p>



<p class="wp-block-paragraph">R1C1形式で出力したいときは、第4引数をFALSEにします。</p>



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



<p class="wp-block-paragraph">結果は <code>R3C2</code> です。「R=Row（行）3、C=Column（列）2」という意味で、A1形式とは異なる表記になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>R1C1形式はGoogleスプレッドシートの標準設定ではありません。通常はA1形式（デフォルト）のまま使えば問題ありません。</p></blockquote>



<p class="wp-block-paragraph">別シートのセル番地を取得するには、第5引数にシート名を指定します。</p>



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



<p class="wp-block-paragraph">結果は <code>'売上データ'!$A$1</code> です。シート名がシングルクォーテーションで囲まれた形式になります。</p>



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



<h3 class="wp-block-heading"><span id="toc9">ADDRESS+INDIRECTで動的セル参照を作る</span></h3>



<p class="wp-block-paragraph">ADDRESS関数は「文字列」を返すだけなので、そのままでは値を取得できません。<a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>と組み合わせると、セルの値を取り出せます。</p>



<p class="wp-block-paragraph">たとえばA1セルに行番号「5」、B1セルに列番号「3」が入っているとします。</p>



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



<p class="wp-block-paragraph">ADDRESS(A1, B1)が <code>$C$5</code> を返します。INDIRECT関数がこれをセル参照に変換して、C5セルの値を取得します。</p>



<p class="wp-block-paragraph">行番号や列番号をセルで管理すれば、参照先を自由に切り替えられます。プルダウンや入力欄と連動させると、見たいデータをすばやく表示できますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc10">ROW・COLUMNと組み合わせて位置を動的に取得する</span></h3>



<p class="wp-block-paragraph">ROW関数（セルの行番号を返す関数）やCOLUMN関数（セルの列番号を返す関数）との組み合わせも便利です。現在位置を基準にしたセル番地を生成できます。</p>



<p class="wp-block-paragraph">たとえば「2行上のセル番地」を取得するには、次のように書きます。</p>



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



<p class="wp-block-paragraph">ROW()が現在の行番号を返し、そこから2を引いた行と同じ列のセル番地が生成されます。</p>



<p class="wp-block-paragraph">このパターンは数式の動作確認やデバッグに便利です。「この数式はどのセルを見ているのか」を隣のセルに表示して確認できます。</p>



<h3 class="wp-block-heading"><span id="toc11">別シートから動的にデータを取得する</span></h3>



<p class="wp-block-paragraph">ADDRESS関数のシート名引数を活用して、別シートのデータを動的に取得するパターンです。</p>



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



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



<p class="wp-block-paragraph">ADDRESS関数が <code>'1月'!$C$2</code> を返します。INDIRECT関数がこの文字列をセル参照に変換し、「1月」シートのC2セルの値を取得します。</p>



<p class="wp-block-paragraph">A1セルを「2月」に変えれば、参照先は自動的に「2月」シートに切り替わります。</p>



<p class="wp-block-paragraph">月次レポートの集計や、部署別シートの切り替えなど、同じ構成のシートを横断するときに重宝します。</p>



<h3 class="wp-block-heading"><span id="toc12">MATCH関数と組み合わせて検索結果の位置を表示する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-match-function/">MATCH関数</a>（検索値の位置を返す関数）の結果をADDRESS関数に渡すと、検索結果がどのセルにあるかを番地で表示できます。</p>



<p class="wp-block-paragraph">A列に商品名が入っているとします。</p>



<pre class="wp-block-code"><code>=ADDRESS(MATCH(&quot;りんご&quot;, A:A, 0), 1)</code></pre>



<p class="wp-block-paragraph">MATCH関数が「りんご」の行番号を返します。ADDRESS関数がその行のA列のセル番地を生成します。結果は <code>$A$5</code> のような文字列です。</p>



<p class="wp-block-paragraph">「検索した値がどこにあるか」を別セルに表示したいとき、このパターンが使えます。</p>



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



<p class="wp-block-paragraph">ADDRESS関数で発生するエラーとその対処法をまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>主な原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>行番号に0以下の値を指定した</td><td>行番号が1以上の整数になっているか確認する</td></tr><tr><td><code>#VALUE!</code></td><td>列番号に0以下の値を指定した</td><td>列番号が1以上の整数になっているか確認する</td></tr><tr><td><code>#VALUE!</code></td><td>引数に文字列を指定した</td><td>行・列番号が数値であることを確認する</td></tr><tr><td><code>#REF!</code></td><td>INDIRECTと組み合わせたとき、存在しないシート名を指定した</td><td>シート名のスペルを確認する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ADDRESS関数自体はエラーが起きにくい関数です。行番号と列番号に正の整数を渡せば、ほぼ確実に動作します。</p>



<p class="wp-block-paragraph">エラーが出るのは多くの場合、INDIRECT関数と組み合わせたときです。ADDRESS関数が生成した文字列をINDIRECT関数に渡す場面で、参照先が存在しないと<code>#REF!</code>になります。</p>



<p class="wp-block-paragraph">デバッグするときは、まずADDRESS関数だけの結果を確認してみてください。出力された文字列が正しいセル番地になっているかを目視で確認するのが早いです。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>特徴</th><th>使いどころ</th></tr></thead><tbody><tr><td>ADDRESS</td><td>行番号・列番号からセル番地の文字列を返す</td><td>セル番地の文字列を生成したいとき</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT</a></td><td>文字列をセル参照に変換して値を取得する</td><td>ADDRESS等で作った番地文字列から値を取り出すとき</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX</a></td><td>範囲から行番号・列番号で直接値を取得する</td><td>「セル番地の文字列」が不要で値だけ欲しいとき</td></tr><tr><td>ROW / COLUMN</td><td>セルの行番号・列番号を数値で返す</td><td>ADDRESS関数に渡す行・列番号を取得するとき</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>ADDRESS関数とINDEX関数の使い分けがポイントです。</strong></p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>は、行番号と列番号から直接値を取得します。「値だけ欲しい」なら、ADDRESS+INDIRECTの2段階を踏むよりINDEX関数のほうがシンプルです。</p>



<p class="wp-block-paragraph">ADDRESS関数が活きるのは「セル番地そのもの」が必要な場面です。参照先の番地を表示したいとき、文字列操作でセル番地を組み立てたいとき、シート名付きの参照文字列を作りたいとき。こうした場面ではADDRESS関数が適しています。</p>



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



<p class="wp-block-paragraph">スプレッドシートのADDRESS関数は、行番号と列番号からセル番地の文字列を生成する関数です。</p>



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



<ul class="wp-block-list"><li>構文は <code>=ADDRESS(行, 列, [参照の型], [A1形式], [シート名])</code></li><li>行番号と列番号を指定するだけでセル番地の文字列を返す</li><li>第3引数で絶対参照・相対参照・複合参照を切り替えられる</li><li><a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>と組み合わせることで、動的なセル参照が実現できる</li><li>INDEX関数で値だけ取得できる場面では、ADDRESS+INDIRECTは不要</li><li>エラーは少ないが、行・列番号には1以上の整数を指定すること</li></ul>



<p class="wp-block-paragraph">「セル番地を数式で自動生成したい」「参照先を動的に切り替えたい」――そんなときはADDRESS関数を活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-address-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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-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">スプレッドシートの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>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>
