<?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>INDIRECT関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/indirect%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 11 Aug 2026 09:05:34 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>INDIRECT関数 &#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>スプレッドシートのROW関数の使い方｜連番を自動作成</title>
		<link>https://mashukabu.com/spreadsheet-row-function/</link>
					<comments>https://mashukabu.com/spreadsheet-row-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:12:58 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[ROW関数]]></category>
		<category><![CDATA[行番号]]></category>
		<category><![CDATA[連番]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4652</guid>

					<description><![CDATA[スプレッドシートのROW関数を使って、行追加・削除しても崩れない連番を自動作成する方法を解説。ROW()-offsetの基本パターンからINDEX+ROW、INDIRECT+ROWの組み合わせ技まで、実務で使えるテクニックを丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「スプレッドシートで連番を振ったのに、行を追加したらズレてしまった&#8230;」そんな経験はありませんか？</p>



<p class="wp-block-paragraph">手入力の連番は、行の追加や削除で簡単に崩れてしまいます。そのたびに振り直すのは面倒ですよね。</p>



<p class="wp-block-paragraph">スプレッドシートのROW関数を使えば、行番号をもとに連番を自動作成できます。行の追加・削除にも自動で対応するので、メンテナンスの手間がなくなりますよ。</p>



<p class="wp-block-paragraph">この記事では、ROW関数の基本から連番の作り方、INDEX・INDIRECTとの組み合わせ技まで紹介します。</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">スプレッドシートのROW関数とは？基本の仕組みを理解しよう</a><ol><li><a href="#toc2" tabindex="0">ROW関数の基本構文</a></li><li><a href="#toc3" tabindex="0">ROW()引数なしとROW(A1)の違い</a></li></ol></li><li><a href="#toc4" tabindex="0">ROW()-offsetで崩れない連番を作る</a><ol><li><a href="#toc5" tabindex="0">行を追加・削除しても連番が維持される仕組み</a></li><li><a href="#toc6" tabindex="0">表の開始行が1行目でない場合の対処法</a></li></ol></li><li><a href="#toc7" tabindex="0">INDEX+ROWの組み合わせ技</a><ol><li><a href="#toc8" tabindex="0">INDEX関数と組み合わせて動的参照を作る</a></li></ol></li><li><a href="#toc9" tabindex="0">INDIRECT+ROWの組み合わせ技</a><ol><li><a href="#toc10" tabindex="0">文字列参照でシートをまたいだ動的参照</a></li></ol></li><li><a href="#toc11" tabindex="0">ROWとCOLUMNの違いと使い分け</a><ol><li><a href="#toc12" tabindex="0">比較表</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">まとめ</a><ol><li><a href="#toc15" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">ROW関数（読み方: ロウ関数）は、<strong>セルの行番号を返す関数</strong>です。「ROW」は英語の「Row（行）」がそのまま名前になっています。</p>



<p class="wp-block-paragraph">たとえばセルA3にROW関数を入力すると、結果は「3」です。そのセルが何行目にあるかを教えてくれるシンプルな関数です。</p>



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



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



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



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



<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>行番号を調べたいセル。省略すると数式のあるセル自身の行番号を返す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけで、しかも省略可能です。スプレッドシートの関数の中でもトップクラスにシンプルな構文ですね。</p>



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



<p class="wp-block-paragraph">ROW関数の使い方は大きく2つあります。</p>



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



<p class="wp-block-paragraph">引数なしで使うと、<strong>数式が入っているセルの行番号</strong>を返します。セルB5に入力すれば結果は「5」です。</p>



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



<p class="wp-block-paragraph">セル参照を指定すると、<strong>そのセルの行番号</strong>を返します。どのセルに入力しても結果は「1」です。</p>



<p class="wp-block-paragraph">範囲を指定した場合は、先頭行の番号だけが返ります。</p>



<pre class="wp-block-code"><code>=ROW(B3:B10)</code></pre>



<p class="wp-block-paragraph">この結果は「3」です。B3からB10の範囲のうち、先頭のB3の行番号が返る仕組みです。</p>



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



<h2 class="wp-block-heading"><span id="toc4">ROW()-offsetで崩れない連番を作る</span></h2>



<p class="wp-block-paragraph">ROW関数の最も実用的な使い方が、<strong>行の追加・削除に強い連番</strong>の作成です。</p>



<h3 class="wp-block-heading"><span id="toc5">行を追加・削除しても連番が維持される仕組み</span></h3>



<p class="wp-block-paragraph">手入力で「1, 2, 3&#8230;」と連番を振ると、途中に行を挿入したときに番号がズレます。ROW関数なら行番号をもとに計算するので、自動的に振り直されます。</p>



<p class="wp-block-paragraph">たとえば、A2セルからデータが始まる表で連番を振る場合です。</p>



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



<p class="wp-block-paragraph">A2セルに入力すると <code>2-1=1</code>、A3セルなら <code>3-1=2</code> になります。数式を下にコピーするだけで連番が完成します。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_formula_row-renumber.png" alt="03 formula row renumber" /></figure>



<p class="wp-block-paragraph">途中に行を挿入しても、各セルのROW()の値が自動で変わるため、連番が崩れません。これが手入力との大きな違いです。</p>



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



<p class="wp-block-paragraph">実務では、表の上にタイトルやヘッダーが複数行あるケースが多いですよね。たとえばデータが5行目から始まる場合を考えてみましょう。</p>



<p class="wp-block-paragraph"><code>=ROW()-1</code> だと5行目のセルは「4」になってしまいます。こんなときは次の数式を使います。</p>



<pre class="wp-block-code"><code>=ROW()-ROW($A$5)+1</code></pre>



<p class="wp-block-paragraph"><code>$A$5</code> はデータ開始行のセルです。絶対参照にするのがポイントです。</p>



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



<p class="wp-block-paragraph">この方法なら、表がどの行から始まっても正しい連番になります。行を挿入・削除しても自動で振り直されるので、メンテナンスフリーですよ。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-row-function/04_result_row-renumber-offset.png/">_images/spreadsheet-row-function/04_result_row-renumber-offset.png</a></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>もうひとつの連番作成方法としてSEQUENCE関数があります。<code>=SEQUENCE(10)</code> で1から10までの連番を一括生成できます。ただし、ROW関数のほうが数式コピーで直感的に使えるので、まずはROW関数から覚えるのがおすすめです。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc8">INDEX関数と組み合わせて動的参照を作る</span></h3>



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



<p class="wp-block-paragraph">たとえば、A1からA10に商品名が入っているとします。別の場所にこのリストを動的に参照したいケースを考えましょう。</p>



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



<p class="wp-block-paragraph">この数式を1行目に入力すると、ROW()は「1」を返すのでA1の値が表示されます。2行目なら「2」でA2の値です。</p>



<p class="wp-block-paragraph">データの開始行がずれている場合は、オフセットを加えます。</p>



<pre class="wp-block-code"><code>=INDEX($A$1:$A$10, ROW()-ROW($D$1)+1)</code></pre>



<p class="wp-block-paragraph">D1セルから数式を入力し始める場合の例です。ROW()-ROW($D$1)+1 で常に1から始まる連番を作り、INDEXの行番号に渡しています。</p>



<p class="wp-block-paragraph">この組み合わせが活きる場面は次のとおりです。</p>



<ul class="wp-block-list"><li>元データの並び順を変えずに、別の場所で独自の一覧を作りたいとき</li><li>フィルタ条件に応じて表示するデータを切り替えたいとき</li><li>複数のシートから特定の行を動的に引っ張りたいとき</li></ul>



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



<h2 class="wp-block-heading"><span id="toc9">INDIRECT+ROWの組み合わせ技</span></h2>



<h3 class="wp-block-heading"><span id="toc10">文字列参照でシートをまたいだ動的参照</span></h3>



<p class="wp-block-paragraph">INDIRECT関数は、文字列をセル参照として解釈する関数です。ROW関数と組み合わせると、<strong>セルアドレスを文字列で動的に組み立てる</strong>ことができます。</p>



<p class="wp-block-paragraph">もっとも基本的なパターンはこちらです。</p>



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



<p class="wp-block-paragraph">この数式をB3セルに入力すると、ROW()が「3」を返します。そのため <code>INDIRECT("A3")</code> となり、A3セルの値が表示されます。</p>



<p class="wp-block-paragraph">これだけだとあまりメリットを感じないかもしれませんが、シートをまたぐ参照で真価を発揮します。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;'売上データ'!B&quot; &amp; ROW())</code></pre>



<p class="wp-block-paragraph">「売上データ」シートのB列から、現在の行番号に対応するセルの値を取得できます。</p>



<p class="wp-block-paragraph">さらに応用すると、シート名自体をセルから動的に取得することもできます。</p>



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



<p class="wp-block-paragraph">C1セルに「4月売上」と入力されていれば、「4月売上」シートのB列を参照します。C1の値を変えるだけで参照先のシートが切り替わるので、月次レポートの作成に便利です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>INDIRECT関数は文字列を参照に変換するため、参照先のシートが存在しないと <code>#REF!</code> エラーになります。シート名のスペルに注意してください。</p></blockquote>



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



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



<p class="wp-block-paragraph">ROW関数と似た関数にCOLUMN関数があります。どちらもセルの位置を数値で返しますが、方向が異なります。</p>



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



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



<p class="wp-block-paragraph">使い分けのポイントはシンプルです。</p>



<ul class="wp-block-list"><li><strong>縦方向の連番</strong> → ROW関数</li><li><strong>横方向の連番</strong> → COLUMN関数</li></ul>



<p class="wp-block-paragraph">たとえば、月ごとの列ヘッダー（1月、2月&#8230;）を自動で作るならCOLUMN関数が向いています。</p>



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



<p class="wp-block-paragraph">B1セルに入力して右にコピーすれば「1, 2, 3&#8230;」の連番になります。</p>



<p class="wp-block-paragraph">また、ROWS関数（範囲の行数を数える関数）との混同に注意してください。ROW関数は「<strong>何行目か</strong>」、ROWS関数は「<strong>何行あるか</strong>」を返す、まったく別の関数です。</p>



<pre class="wp-block-code"><code>=ROW(A3:A10)    → 3（先頭行の行番号）
=ROWS(A3:A10)   → 8（範囲の行数）</code></pre>



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



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#REF!</code></td><td>参照先のセルや行が削除された</td><td>数式内のセル参照を確認し、有効な範囲に修正する</td></tr><tr><td><code>#VALUE!</code></td><td>ROW関数に不正な文字列を渡した</td><td>引数にはセル参照のみ指定する。文字列（<code>"A1"</code>など）は不可</td></tr><tr><td><code>#REF!</code>（INDIRECT併用時）</td><td>INDIRECT関数の参照先が存在しない</td><td>シート名やセルアドレスの文字列を確認する</td></tr><tr><td>連番が飛ぶ</td><td>非表示の行がある</td><td>フィルタで非表示にした行もROW関数は元の行番号を返す。SUBTOTAL関数と組み合わせて対処</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に注意したいのが「連番が飛ぶ」ケースです。フィルタで行を非表示にしても、ROW関数は元の行番号をそのまま返します。フィルタ後の見た目と連番が一致しないのは仕様です。</p>



<p class="wp-block-paragraph">フィルタ後に1から始まる連番が必要な場合は、SUBTOTAL関数との組み合わせを検討してみてください。ARRAYFORMULA関数を使う方法もありますよ。</p>



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



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



<p class="wp-block-paragraph">ROW関数は、セルの行番号を返すシンプルな関数です。単体で使うだけでなく、連番や動的参照の土台として幅広く活用できます。</p>



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



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



<p class="wp-block-paragraph">まずは <code>=ROW()-ROW($A$1)</code> の連番パターンから試してみてください。行の追加・削除のたびに番号を振り直す手間がなくなりますよ。</p>



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-indirect-function/">スプレッドシートのINDIRECT関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシートのADDRESS関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-offset-function/">スプレッドシートのOFFSET関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-row-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのINDIRECT関数｜別シート参照と#REF!の5原因</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[エラー対処]]></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!が消えない5つの原因と確認手順、閉じたブックを参照できないときの回避策3択まで整理しました。重くなる原因とINDEXへ置き換える判断基準もまとめています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「支店ごとにシートが分かれた表を、数式1つで切り替えて集計したい」。ExcelのINDIRECT関数にたどり着く方の多くは、ここからスタートしますよね。</p>



<p class="wp-block-paragraph">ところが実際に組んでみると、こんな壁にぶつかります。</p>



<ul class="wp-block-list"><li>別シートを参照した瞬間に <code>#REF!</code> が出る</li><li>式は合っているように見えるのに、どこが悪いのかわからない</li><li>おまけに、ファイルまで重くなってきた</li></ul>



<p class="wp-block-paragraph">つまずきの正体は、たいてい「文字列の組み立て方」と「揮発性（再計算が多い性質）」の2つ。この2点さえ押さえれば、怖い関数ではありません。</p>



<p class="wp-block-paragraph">この記事では、INDIRECT関数の使い方を別シート参照の書き方から整理しました。<code>#REF!</code> が消えない5つの原因と確認手順もセットで解説。「重い」ときに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">ExcelのINDIRECT関数とは？文字列をセル参照に変える関数</a><ol><li><a href="#toc2" tabindex="0">基本構文と引数（参照文字列／参照形式）</a></li><li><a href="#toc3" tabindex="0">=A1 と何が違う？最小例で確認する</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><li><a href="#toc7" tabindex="0">動かないときの1行デバッグ術｜INDIRECTを外して文字列だけ表示する</a></li><li><a href="#toc8" tabindex="0">SUM・VLOOKUPと組み合わせてシート別に集計する</a></li><li><a href="#toc9" tabindex="0">選択に連動するプルダウンを作る4ステップ</a></li></ol></li><li><a href="#toc10" tabindex="0">INDIRECTが#REF!になる5つの原因と直し方</a><ol><li><a href="#toc11" tabindex="0">症状別・原因の切り分け早見表</a></li><li><a href="#toc12" tabindex="0">原因1・2｜クォート漏れと不可視スペース</a></li><li><a href="#toc13" tabindex="0">原因3｜参照先のブックが閉じている（回避策3択）</a></li><li><a href="#toc14" tabindex="0">原因4｜名前の定義が未登録・表記ゆれ</a></li><li><a href="#toc15" tabindex="0">原因5｜シート名を後からリネームした</a></li></ol></li><li><a href="#toc16" tabindex="0">「重い」「使わない方がいい」の理由とINDIRECTをやめる判断基準</a><ol><li><a href="#toc17" tabindex="0">揮発性関数とは？INDIRECTが再計算を増やす仕組み</a></li><li><a href="#toc18" tabindex="0">INDIRECTを使わない代替早見表（用途×代替手段×揮発性）</a></li><li><a href="#toc19" tabindex="0">INDIRECTでしか書けない唯一のケース</a></li><li><a href="#toc20" tabindex="0">重くなったファイルを軽くする初手</a></li></ol></li><li><a href="#toc21" tabindex="0">よくある質問｜INDIRECT関数</a><ol><li><a href="#toc22" tabindex="0">Q. シート名を変えたら壊れました。追従させる方法はありますか？</a></li><li><a href="#toc23" tabindex="0">Q. Web版Excelでも使えますか？</a></li><li><a href="#toc24" tabindex="0">Q. Googleスプレッドシートでも同じ書き方ですか？</a></li><li><a href="#toc25" tabindex="0">Q. INDIRECTは何個までなら重くなりませんか？</a></li><li><a href="#toc26" tabindex="0">Q. OFFSETとINDIRECTはどちらを使うべきですか？</a></li><li><a href="#toc27" tabindex="0">Q. エラーを事前に防ぐ方法はありますか？</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ｜場面別のINDIRECT早見表</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのINDIRECT関数とは？文字列をセル参照に変える関数</span></h2>



<p class="wp-block-paragraph">INDIRECT関数とは、文字列で書かれたセル番地やシート名を、実際のセル参照に変える関数です。読み方は「インダイレクト」。英語の indirect（間接的な）が語源です。</p>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong>: INDIRECT関数そのものは Excel 2003 以降のすべてのバージョンで使えます。ただし外部ブック（別ファイル）への参照は Web版Excel（ブラウザ版）では新規作成できません。記事後半では FILTER などのスピル関数にも触れます。こちらは Microsoft 365 / Excel 2021 以降が対象です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">基本構文と引数（参照文字列／参照形式）</span></h3>



<p class="wp-block-paragraph">構文はシンプルで、覚える引数は実質1つだけ。</p>



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



<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引数は、ほとんどの場面で省略してかまいません。R1C1形式（行も列もアルファベットではなく数値で表す参照方式）を使う機会はまれ。基本は第1引数だけで十分です。</p>



<h3 class="wp-block-heading"><span id="toc3">=A1 と何が違う？最小例で確認する</span></h3>



<p class="wp-block-paragraph">普通の数式は <code>=B2</code> のように参照先を直接書きます。対してINDIRECTは、「B2」という<strong>文字</strong>を受け取ってからB2を参照する仕組み。</p>



<p class="wp-block-paragraph">セルA1に「B2」と入力し、別のセルに次の数式を入れてみてください。</p>



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



<p class="wp-block-paragraph">これでセルB2の値が返ります。A1を「C5」に書き換えれば、数式はそのままで参照先がC5に変わる。この「後から参照先を動かせる」点こそがINDIRECTの存在意義です。</p>



<p class="wp-block-paragraph">逆に言うと、切り替える必要のない参照にINDIRECTを使う理由はありません。</p>



<h2 class="wp-block-heading"><span id="toc4">INDIRECTで別シートを参照する書き方｜シート名をセルで切り替える</span></h2>



<p class="wp-block-paragraph">INDIRECTが本領を発揮するのは、支店別・部署別・月別にシートが分かれた表の集計です。同時に、ここがエラーの最大の発生源。クォートのルールを正確に押さえましょう。</p>



<h3 class="wp-block-heading"><span id="toc5">基本形｜シート名を入れたセルと「!セル番地」をつなぐ</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」という文字列になります。INDIRECTがこれを参照に変換し、1月シートのB2の値を返します。</p>



<p class="wp-block-paragraph">A1を「2月」に変えるだけで、参照先も2月シートに切り替わる。数式は1文字も書き換えません。月次レポートで重宝するパターンですよ。</p>



<h3 class="wp-block-heading"><span id="toc6">シート名にスペースや記号があるときはシングルクォートで囲む</span></h3>



<p class="wp-block-paragraph">ここが最大の落とし穴。シート名にスペースやハイフンなどの記号が含まれていると、さきほどの書き方では <code>#REF!</code> になります。</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">分解すれば3ブロックだけ。</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の正式なシート参照の形と一致します。手入力ならExcelが自動で付けてくれるクォートを、INDIRECTでは自分で組み込むわけです。</p>



<p class="wp-block-paragraph">迷ったら<strong>常にクォート付きで書く</strong>のが安全。スペースのないシート名に付けても、問題なく動きますよ。</p>



<h3 class="wp-block-heading"><span id="toc7">動かないときの1行デバッグ術｜INDIRECTを外して文字列だけ表示する</span></h3>



<p class="wp-block-paragraph"><code>#REF!</code> が出たら、真っ先にやってほしい確認があります。空いているセルに、INDIRECTのカッコの中身だけを入力してみてください。</p>



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



<p class="wp-block-paragraph">すると <code>'売上 データ'!B2</code> のように、受け取っている文字列が画面に出ます。ここが正しい形なら、INDIRECT側は必ず正しく参照してくれるはず。</p>



<p class="wp-block-paragraph">先頭のクォートが抜けていたら、数式の <code>"'"</code> が欠けています。<strong>エラーの原因は、たいていこの文字列の組み立て方</strong>。1行足すだけで自己解決できますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">SUM・VLOOKUPと組み合わせてシート別に集計する</span></h3>



<p class="wp-block-paragraph">INDIRECTは範囲も返せるので、SUM関数の引数にもそのまま入ります。</p>



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



<p class="wp-block-paragraph">A1で選んだシートのB2:B10だけを合計する数式です。支店を切り替えるたびに数式を直す作業から解放されますね。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>（表を縦に検索して該当行の値を取り出す関数）の検索範囲も、同じ要領で切り替えられます。</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にシート名（部署名）を入れておきます。B1を変えるだけで、同じ数式のまま検索先が切り替わる。スペース入りのシート名なら、クォート付きの形に直してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc9">選択に連動するプルダウンを作る4ステップ</span></h3>



<p class="wp-block-paragraph">「大分類で『果物』を選ぶと、小分類に『リンゴ・ミカン・バナナ』だけが並ぶ」。この連動プルダウンも、INDIRECTの代表的な使い道です。</p>



<ol class="wp-block-list"><li>カテゴリごとに、選択肢を縦方向に並べておきます。</li><li>各範囲を選択し「数式」タブの「名前の定義」へ。カテゴリ名と完全一致する名前を付けます。</li><li>大分類のセル（例: B2）に「データの入力規則」でリストを設定します。ソースは「果物,野菜」とカンマ区切り。</li><li>小分類のセル（例: C2）の入力規則のソースに <code>=INDIRECT(B2)</code> と入力します。</li></ol>



<p class="wp-block-paragraph">B2で「果物」が選ばれると、INDIRECTはその文字列を<strong>名前の定義</strong>として解釈します。名前の定義とは、セル範囲に付けた呼び名のこと。登録された範囲が、そのまま小分類の選択肢になる仕組みです。</p>



<p class="wp-block-paragraph">つまずきやすいのは名前の付け方。名前の定義にはスペースが使えないため、カテゴリ名に空白が入ると登録できません。</p>



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



<p class="wp-block-paragraph">SUBSTITUTE関数（文字列の一部を別の文字に置き換える関数）を挟む形です。空白を <code>_</code> に変換してから、名前を呼び出します。</p>



<p class="wp-block-paragraph">名前の登録手順は<a href="https://mashukabu.com/excel-named-range/">Excelの名前の定義</a>、入力規則の操作は<a href="https://mashukabu.com/excel-dropdown-list/">Excelのプルダウン（ドロップダウンリスト）完全ガイド</a>へ。手が止まったら、あわせて読んでみてください。</p>



<h2 class="wp-block-heading"><span id="toc10">INDIRECTが#REF!になる5つの原因と直し方</span></h2>



<p class="wp-block-paragraph">INDIRECTのエラーは、ほぼ <code>#REF!</code> の一択です。<code>#REF!</code> は「参照先が見つからない」という意味のエラー値。ほかのエラー値との違いは<a href="https://mashukabu.com/excel-error-value-list/">Excelのエラー値一覧と対処法</a>にまとめています。</p>



<p class="wp-block-paragraph">やっかいなのは、同じ表示なのに原因が5通りある点。まずは早見表で、自分の症状がどれに当たるかを絞り込みましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">症状別・原因の切り分け早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>症状・心当たり</th><th>原因</th><th>1分でできる確認</th><th>対処</th></tr></thead><tbody><tr><td>シート名にスペース・記号がある</td><td>1. クォート漏れ</td><td><code>="'"&A1&"'!B2"</code> で文字列を目視</td><td><code>"'"&A1&"'!</code> の形に直す</td></tr><tr><td>他システムからコピーした値を参照</td><td>2. 不可視スペース</td><td><code>=LEN(A1)</code> で文字数を数える</td><td>TRIM／SUBSTITUTEで空白を削除</td></tr><tr><td>別ファイル（別ブック）を参照</td><td>3. ブックが閉じている</td><td>そのブックを開くと直るか試す</td><td>回避策3択（後述）</td></tr><tr><td>連動プルダウン・名前を参照</td><td>4. 名前が未登録・表記ゆれ</td><td>「名前の管理」で一覧と突合</td><td>名前を登録／表記を揃える</td></tr><tr><td>最近シート名を変更した</td><td>5. リネームに追従しない</td><td>数式内の文字列と実際の名前を比較</td><td>文字列を書き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">上から順に見ていけば、たいてい数分で原因は特定できます。ここからは原因別に直し方を確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">原因1・2｜クォート漏れと不可視スペース</span></h3>



<p class="wp-block-paragraph">原因1は、シングルクォートの付け忘れ。シート名に空白・ハイフン・記号が含まれると、クォートなしでは参照が成立しません。</p>



<pre class="wp-block-code"><code>=INDIRECT(A1&amp;&quot;!B2&quot;)        ← シート名が「売上 データ」だと #REF!
=INDIRECT(&quot;'&quot;&amp;A1&amp;&quot;'!B2&quot;)   ← これが正解</code></pre>



<p class="wp-block-paragraph">前述の1行デバッグ術で文字列を表示すれば、クォートの有無はひと目で確認できます。</p>



<p class="wp-block-paragraph">原因2は、参照文字列に紛れ込んだ<strong>目に見えない空白</strong>です。他システムから貼り付けた値でよく起こります。「東京」のつもりが「東京 」（末尾に空白）なら、シート名と一致せずエラーに。</p>



<p class="wp-block-paragraph">切り分けは <code>=LEN(A1)</code> で文字数を数えるだけ。「東京」なら2のはず。3以上が返るなら、余計な文字が混ざっています。</p>



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



<p class="wp-block-paragraph">TRIM関数（文字列の前後にある余分な半角スペースを削除する関数）で挟めば、たいていは直ります。</p>



<p class="wp-block-paragraph">ただしTRIMが消せるのは半角スペースだけ。全角スペースや、Webからのコピーに多いCHAR(160)には効きません。その場合はSUBSTITUTEで半角スペースに変換してから渡しましょう。</p>



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



<p class="wp-block-paragraph"><code>"　"</code> の中身には、全角スペースを直接入力してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc13">原因3｜参照先のブックが閉じている（回避策3択）</span></h3>



<p class="wp-block-paragraph">別のExcelファイルをINDIRECTで参照する場合、そのファイルを<strong>開いていないと <code>#REF!</code> になります</strong>。不具合ではなく仕様です。</p>



<p class="wp-block-paragraph">比べてみましょう。普通のリンク数式（<code>=[Book1.xlsx]Sheet1!A1</code> の形）なら、相手を閉じていても値が残ります。最後に取得した値をキャッシュとして保持するからです。</p>



<p class="wp-block-paragraph">一方のINDIRECTは、毎回文字列を評価して参照を組み立て直す仕組み。だからキャッシュが効きません。回避策は次の3つです。</p>



<figure class="wp-block-table"><table><thead><tr><th>回避策</th><th>手軽さ</th><th>自動更新</th><th>Web版Excel</th></tr></thead><tbody><tr><td>参照先ブックを開いたまま使う</td><td>設定は不要。2ファイルを同時に開く負担はある</td><td>開いている間はリアルタイム</td><td>外部ブック参照の新規作成ができない</td></tr><tr><td>通常のリンク数式に切り替える</td><td>数式を書き換えるだけ</td><td>閉じていても直近のキャッシュ値を表示。最新化は「データ」タブ→「リンクの編集」→「値の更新」</td><td>新規作成は不可（既存の参照は表示可）</td></tr><tr><td>Power Queryで統合する</td><td>初期構築の手間はやや大きい</td><td>更新ボタンや自動更新の設定で更新できる</td><td>2026年1月から利用可能に。クエリ編集まで使えるかはプランによる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Power Query（Excelに標準搭載されたデータ取得・整形の機能）は、複数ブックの統合に強い選択肢。ただしWeb版での対応範囲はプラン次第なので、導入前に自分の環境で確かめてください。</p>



<p class="wp-block-paragraph">そもそもシート名を切り替えたいだけなら、<strong>1ファイル内にシートを集約する</strong>のが結局いちばんラクですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">原因4｜名前の定義が未登録・表記ゆれ</span></h3>



<p class="wp-block-paragraph">連動プルダウンで多いのがこのパターン。<code>=INDIRECT(B2)</code> でB2が「果物」でも、名前「果物」が登録されていなければ <code>#REF!</code> です。</p>



<p class="wp-block-paragraph">確認は「数式」タブ→「名前の管理」から。ありがちなのは、全角と半角の違いや末尾スペースといった表記ゆれ。</p>



<ul class="wp-block-list"><li>名前が未登録 → 範囲を選び直して登録する</li><li>表記ゆれ → 選択肢側の文字列と名前を完全一致させる</li><li>カテゴリ名に空白がある → SUBSTITUTEで <code>_</code> に置換する（前述）</li></ul>



<p class="wp-block-paragraph">事前に防ぐならISREF関数（参照として有効かを判定する関数）が使えます。<code>=ISREF(INDIRECT(B2))</code> は、有効ならTRUE・無効ならFALSEを返す数式。IFERROR関数と組み合わせておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc15">原因5｜シート名を後からリネームした</span></h3>



<p class="wp-block-paragraph">意外と見落とされがちなのが、これ。<strong>シート名を変更しても、INDIRECTの中の文字列は追従しません</strong>。</p>



<p class="wp-block-paragraph">普通の参照 <code>=Sheet1!A5</code> なら、シート名を「4月」に変えた瞬間にExcelが追従します。数式は <code>=4月!A5</code> へ自動で書き換わるので、こちらは何もしなくて大丈夫。</p>



<p class="wp-block-paragraph">ところがINDIRECTの引数は、Excelから見ればただの文字列。書き換えの対象にならず、リネーム後は <code>#REF!</code> になります。</p>



<p class="wp-block-paragraph">この挙動は、公式ドキュメントに明記されているわけではありません。ただし多くの実務現場で共通して確認されている動きです。シート名を触った直後のエラーなら、真っ先に疑ってください。</p>



<p class="wp-block-paragraph">対処は2択。シート名をセルで管理しているなら、そのセルの値を新しい名前に書き換えます。数式内に <code>"Sheet1!A5"</code> と直書きしているなら、文字列を修正しましょう。</p>



<p class="wp-block-paragraph">切り替えの必要がないなら、<code>=Sheet1!A5</code> という普通の参照に戻すのがいちばん確実。この事故のリスクごと消えますよ。</p>



<h2 class="wp-block-heading"><span id="toc16">「重い」「使わない方がいい」の理由とINDIRECTをやめる判断基準</span></h2>



<p class="wp-block-paragraph">INDIRECTには「重い」という評判がついて回ります。ここでは、その仕組みと使い続けてよい場面の線引きを見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc17">揮発性関数とは？INDIRECTが再計算を増やす仕組み</span></h3>



<p class="wp-block-paragraph">INDIRECTは<strong>揮発性関数</strong>（シートのどこかが変わるたびに再計算される関数）です。ここが「重い」と言われる理由のすべて。</p>



<p class="wp-block-paragraph">普通の関数は、自分が参照しているセルが変わったときだけ計算し直します。対して揮発性関数は、無関係なセルを1文字打っただけでも再計算が走ります。ファイルを開いた瞬間も同じ。</p>



<p class="wp-block-paragraph">同じ仲間には、TODAY・NOW・RAND・RANDBETWEEN、そして<a href="https://mashukabu.com/excel-function-howto-use-offset/">OFFSET関数</a>があります。</p>



<p class="wp-block-paragraph">やっかいなのは、再計算が連鎖する点です。INDIRECTの結果を使うVLOOKUPやSUMIFも、つられて毎回計算し直されます。</p>



<p class="wp-block-paragraph">数個なら体感は変わりません。しかし数百・数千セルに広がると、入力のたびに固まるファイルができあがります。</p>



<h3 class="wp-block-heading"><span id="toc18">INDIRECTを使わない代替早見表（用途×代替手段×揮発性）</span></h3>



<p class="wp-block-paragraph">「INDIRECTは使わない方がいい」という意見をよく見かけますよね。正確に言えば、<strong>代替できる用途では使わない方がいい</strong>、です。用途別に整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>INDIRECTでの書き方</th><th>代替手段</th><th>代替後の揮発性</th></tr></thead><tbody><tr><td>行・列を数値で指定する</td><td><code>=INDIRECT(ADDRESS(3,2))</code></td><td><code>=INDEX(A:Z,3,2)</code></td><td>非揮発性になる</td></tr><tr><td>列は固定・行だけ可変</td><td><code>=INDIRECT("B"&A1)</code></td><td><code>=INDEX(B:B,A1)</code></td><td>非揮発性になる</td></tr><tr><td>増減する表の範囲を追う</td><td><code>=INDIRECT("A2:A"&COUNTA(A:A))</code></td><td>テーブルの構造化参照</td><td>非揮発性になる</td></tr><tr><td>同一シート内の絞り込み</td><td>作業列＋INDIRECT</td><td>FILTER関数（365・2021以降）</td><td>非揮発性になる</td></tr><tr><td>別ブックのデータを取り込む</td><td><code>=INDIRECT("'[Book1.xlsx]Sheet1'!A1")</code></td><td>通常のリンク数式／Power Query</td><td>非揮発性になる</td></tr><tr><td>シート名を文字列で切り替える</td><td><code>=INDIRECT(A1&"!B2")</code></td><td><strong>代替なし</strong></td><td>揮発性のまま</td></tr><tr><td>名前の定義を動的に呼ぶ</td><td><code>=INDIRECT(B2)</code></td><td><strong>代替なし</strong></td><td>揮発性のまま</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">用語を2つ補足します。構造化参照とは、表をテーブル化して <code>テーブル1[金額]</code> のように列名で書く方式のこと。COUNTAは空白でないセルの個数を数える関数です。</p>



<p class="wp-block-paragraph">置き換えの王道は上の2行。<code>ADDRESS(3,2)</code> が作るのは「$B$3」なので、INDIRECTの参照先は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> もB5を返します。戻り値は同じまま、揮発性だけが消えるわけです。</p>



<p class="wp-block-paragraph">ADDRESS関数（行番号と列番号からセル番地の文字列を作る関数）との組み合わせを見かけたら、<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>に置き換えられないか疑ってみてください。判断軸は1本だけ。</p>



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



<h3 class="wp-block-heading"><span id="toc19">INDIRECTでしか書けない唯一のケース</span></h3>



<p class="wp-block-paragraph">代替なしの2行には共通点があります。どちらも「シート名や名前という<strong>文字列</strong>を、その場で参照に解決している」こと。</p>



<p class="wp-block-paragraph">INDEXの範囲引数は、実物のセル範囲を受け取る仕様です。「&#8221;1月&#8221;という文字からシートを探して」という指示は解釈できません。FILTERやXLOOKUPも同じで、扱えるのは<strong>指定した範囲の中</strong>の絞り込みだけ。</p>



<p class="wp-block-paragraph">つまりExcel 365の時代でも、役割分担は変わっていません。</p>



<ul class="wp-block-list"><li>同一シート内の条件絞り込み → FILTERなどのスピル関数（1つの数式で複数セルに結果が自動展開される関数）</li><li>シートをまたぐ動的な切り替え → INDIRECT</li></ul>



<p class="wp-block-paragraph">競合しているようで、実は守備範囲が違うんですね。無理に置き換えず、使う個数を抑える方向で付き合いましょう。</p>



<h3 class="wp-block-heading"><span id="toc20">重くなったファイルを軽くする初手</span></h3>



<p class="wp-block-paragraph">すでに重いファイルでも、全部を置き換える必要はありません。効果が出るのは、<strong>同じ数式が何百行も並んでいる箇所</strong>だけです。</p>



<ol class="wp-block-list"><li><code>Ctrl</code> + <code>F</code> を押して「INDIRECT」を検索します。検索場所は「数式」を選んでください。</li><li>数百セル以上に展開されている列を特定します。</li><li>その列だけ、上の早見表に沿ってINDEXやテーブル参照に置き換えましょう。</li></ol>



<p class="wp-block-paragraph">改善しないなら、原因はINDIRECT以外にあるかもしれません。条件付き書式の重複や不要な画像、巨大すぎる範囲指定も定番の犯人。<a href="https://mashukabu.com/excel-slow-freeze-save-fix/">Excelが重い・固まる・保存できないときの対処</a>で切り分け手順を確認してみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc21">よくある質問｜INDIRECT関数</span></h2>



<h3 class="wp-block-heading"><span id="toc22">Q. シート名を変えたら壊れました。追従させる方法はありますか？</span></h3>



<p class="wp-block-paragraph">INDIRECTの引数は文字列なので、自動で追従させる方法はありません。現実的な対策は2つ。</p>



<p class="wp-block-paragraph">1つは、シート名をセルに入力しておき、そのセルの値だけを更新する運用にすること。もう1つは、切り替えが不要なら普通の <code>=Sheet1!A5</code> に戻すことです。通常の参照ならExcelが自動で追従してくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">Q. Web版Excelでも使えますか？</span></h3>



<p class="wp-block-paragraph">INDIRECT関数そのものは、Web版Excel（ブラウザ版）でも使えます。同じブック内のシート切り替えなら問題ありません。</p>



<p class="wp-block-paragraph">ただし<strong>外部ブック（別ファイル）への参照はWeb版では新規作成できません</strong>。既存の参照は表示できますが、作成や更新設定の変更にはデスクトップ版が必要。別ファイル参照はデスクトップ版で組んでくださいね。</p>



<h3 class="wp-block-heading"><span id="toc24">Q. Googleスプレッドシートでも同じ書き方ですか？</span></h3>



<p class="wp-block-paragraph">はい、スプレッドシートにも同名のINDIRECT関数があり、構文はExcelとほぼ同じ。別シート参照でシングルクォートが必要な点も共通です。</p>



<p class="wp-block-paragraph">ただし別スプレッドシートを参照する仕組みは異なります。Sheets側の書き方は<a href="https://mashukabu.com/spreadsheet-indirect-function/">スプレッドシートのINDIRECT関数の使い方</a>を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc25">Q. INDIRECTは何個までなら重くなりませんか？</span></h3>



<p class="wp-block-paragraph">明確な上限はありません。体感で言えば数十個なら気になりませんが、数百・数千セルに展開すると入力のたびに待たされます。</p>



<p class="wp-block-paragraph">判断は個数より<strong>用途</strong>で。数値で参照先が決まる箇所をINDEXに置き換えれば、残りが多少あっても実用速度に戻せますよ。</p>



<h3 class="wp-block-heading"><span id="toc26">Q. OFFSETとINDIRECTはどちらを使うべきですか？</span></h3>



<p class="wp-block-paragraph">どちらも揮発性関数なので、速度面の優劣はほぼありません。使い分けは<strong>参照先の決め方</strong>で判断します。</p>



<ul class="wp-block-list"><li>基準セルから「何行下・何列右」で位置を決めたい → OFFSET</li><li>シート名や名前を文字列で組み立てたい → INDIRECT</li></ul>



<p class="wp-block-paragraph">なお、OFFSETの用途の多くはINDEXで置き換えられます。軽さを優先するなら、まずINDEXを検討するのが定石ですよ。</p>



<h3 class="wp-block-heading"><span id="toc27">Q. エラーを事前に防ぐ方法はありますか？</span></h3>



<p class="wp-block-paragraph">次の3つを習慣にすると、<code>#REF!</code> の大半は起きなくなります。</p>



<ul class="wp-block-list"><li>シート名は常にクォート付きで書く（<code>="'"&A1&"'!B2"</code> の形）</li><li>セルから受け取る文字列はTRIMで挟む</li><li>名前の定義は「名前の管理」の一覧と突合してから使う</li></ul>



<p class="wp-block-paragraph">そのうえでISREF関数の判定を挟むか、IFERROR関数で表示を整えておくと万全。出てから直すより、出さない作りの方が結局ラクですよね。</p>



<h2 class="wp-block-heading"><span id="toc28">まとめ｜場面別のINDIRECT早見表</span></h2>



<p class="wp-block-paragraph">INDIRECT関数は、文字列をセル参照に変える関数でした。強みは「参照先を後から動かせる」こと。弱点は「文字列が崩れると <code>#REF!</code> になる」ことと「揮発性で重くなる」ことです。</p>



<p class="wp-block-paragraph">最後に、場面別の結論を早見表で整理しておきます。</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><code>#REF!</code> が出た</td><td>クォート漏れ／不可視スペース／閉じたブック／名前未登録／シート名リネーム の5点を順に確認</td></tr><tr><td>式が正しいか確かめたい</td><td>INDIRECTを外して <code>="'"&A1&"'!B2"</code> で文字列を目視</td></tr><tr><td>別ブックを参照したい</td><td>ブックを開いたまま使う。または通常のリンク数式かPower Queryへ</td></tr><tr><td>行・列を数値で決められる</td><td>INDEXに置き換えて軽量化する</td></tr><tr><td>シート名・名前を文字列で切り替える</td><td>INDIRECTが唯一の手段</td></tr><tr><td>同一シート内を絞り込みたい</td><td>FILTERなどのスピル関数を優先（365・2021以降）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときの判断軸はシンプル。「文字列で参照先を切り替えたいか」だけです。イエスならINDIRECT、ノーならINDEXやテーブルの構造化参照を選んでください。</p>



<p class="wp-block-paragraph"><code>#REF!</code> に出くわしたら、まずは1行デバッグ術で文字列を目視。それだけで大半は自己解決できます。月別シートの切り替えから、気軽に試してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-indirect/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのSHEETS関数｜シート数を自動で取得する方法とSHEET関数との違い</title>
		<link>https://mashukabu.com/excel-function-howto-use-sheets/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-sheets/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 20 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[SHEETS関数]]></category>
		<category><![CDATA[SHEET関数]]></category>
		<category><![CDATA[シート数 取得]]></category>
		<category><![CDATA[シート管理]]></category>
		<category><![CDATA[検索・行列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2422</guid>

					<description><![CDATA[ExcelのSHEETS関数でブック内のシート数を自動取得する方法を解説。基本の書式、引数省略と3D参照の使い方、SHEET関数との違い、INDIRECTや IFと組み合わせた実務パターン、非表示シート対応まで、実例つきでまとめています。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このブックにシートが何枚あるか、自動で数えられたらいいのに」と感じたことはありませんか？</p>



<p class="wp-block-paragraph">シート数をセルに手入力していると、追加や削除のたびに数字を直す手間がかかります。うっかり直し忘れると、集計の件数やリンクがズレてしまうこともあります。</p>



<p class="wp-block-paragraph"><strong>ExcelのSHEETS関数を使えば、ブック内のシート数を常に自動で取得できます。</strong> この記事では、SHEETS関数の基本構文から実務での応用パターン、SHEET関数との違い、よくあるエラーと対処法まで、まとめて解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのSHEETS関数とは？読み方と基本の仕組み</a></li><li><a href="#toc2" tabindex="0">SHEETS関数の書式（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">ExcelのSHEETS関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">引数を省略してブック全体のシート数を取得する</a></li><li><a href="#toc7" tabindex="0">3D参照で特定のシート範囲の枚数を取得する</a></li><li><a href="#toc8" tabindex="0">名前定義を指定する</a></li></ol></li><li><a href="#toc9" tabindex="0">SHEETS関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: シートの追加漏れチェック</a></li><li><a href="#toc11" tabindex="0">パターン2: INDIRECT関数と組み合わせてシート一覧を作る</a></li><li><a href="#toc12" tabindex="0">パターン3: 集計の完了率を表示する</a></li><li><a href="#toc13" tabindex="0">パターン4: シート数の変動を検知する</a></li><li><a href="#toc14" tabindex="0">パターン5: 月次レポートの完成度を自動判定</a></li></ol></li><li><a href="#toc15" tabindex="0">SHEETS関数でよくあるエラーと対処法</a><ol><li><a href="#toc16" tabindex="0">エラー一覧表</a></li><li><a href="#toc17" tabindex="0">非表示シートもカウントされる問題</a></li><li><a href="#toc18" tabindex="0">可視シートのみ数える代替策（VBA）</a></li></ol></li><li><a href="#toc19" tabindex="0">SHEET関数との違い・使い分け</a><ol><li><a href="#toc20" tabindex="0">SHEETS関数とSHEET関数の比較表</a></li><li><a href="#toc21" tabindex="0">どちらを使うべき？判断フロー</a></li><li><a href="#toc22" tabindex="0">組み合わせて使うパターン</a></li></ol></li><li><a href="#toc23" tabindex="0">SHEETS関数に関するよくある質問（FAQ）</a><ol><li><a href="#toc24" tabindex="0">Googleスプレッドシートで同じことはできる？</a></li><li><a href="#toc25" tabindex="0">SHEETS関数はいつから使える？</a></li><li><a href="#toc26" tabindex="0">他のブックのシート数は取得できる？</a></li><li><a href="#toc27" tabindex="0">非表示のシートもカウントされますか？</a></li><li><a href="#toc28" tabindex="0">グラフシートやマクロシートも含まれる？</a></li></ol></li><li><a href="#toc29" tabindex="0">まとめ</a><ol><li><a href="#toc30" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのSHEETS関数とは？読み方と基本の仕組み</span></h2>



<p class="wp-block-paragraph">SHEETS関数は、ブックに含まれる<strong>シートの総数</strong>を返す情報関数です。</p>



<p class="wp-block-paragraph">読み方は「<strong>シーツ関数</strong>」です。英語の「sheet（シート）」の複数形がそのまま関数名になっています。関数名の末尾に「S」が付いているかどうかで、単数のシートを扱う<a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a>とは役割がはっきり分かれます。</p>



<p class="wp-block-paragraph">Excel 2013で新しく追加された関数で、現在はExcel 2016・2019・2021・2024、そしてMicrosoft 365でも使えます。Excel for Mac は 2016 以降で対応しています。</p>



<p class="wp-block-paragraph">ここで押さえておきたい重要な仕様が1つあります。SHEETS関数は<strong>非表示シートも含めてカウントする</strong>という点です。</p>



<p class="wp-block-paragraph">たとえばブックに「売上」「経費」「設定（非表示）」の3枚があるとします。このとき <code>=SHEETS()</code> の結果は「3」になります。非表示にしていても数には含まれるのです。さらに、グラフシートやマクロシート、ダイアログシートなど、ワークシート以外のシート種類も含めてカウントされます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>似た名前の<a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a>は「シートの番号」を返す関数です。SHEETS関数は「シートの数」を返します。名前は似ていますが、役割がまったく異なるので注意してください。</p></blockquote>



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



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



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



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>参照</td><td>省略可</td><td>シート数を数えたい参照。省略するとブック全体のシート数を返す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>参照</strong>には、セル範囲や名前定義、3D参照などを指定できます。3D参照とは、「Sheet1:Sheet5!A1」のように複数シートにまたがる参照のことです。</p>



<p class="wp-block-paragraph">参照を省略した場合は、ブック全体のシート数がそのまま返ります。実務で最もよく使うのがこのパターンです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>引数を省略して <code>=SHEETS()</code> と書くのが最もよく使う形です。ブック全体のシート数が一瞬で分かります。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc6">引数を省略してブック全体のシート数を取得する</span></h3>



<p class="wp-block-paragraph">最もシンプルな使い方は、引数を省略して書く形です。</p>



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



<p class="wp-block-paragraph">引数なしで使うと、ブックに含まれるすべてのシートの枚数を返します。シートを追加すれば自動的に数値が増え、削除すれば減ります。手動で数字を直す必要がありません。</p>



<p class="wp-block-paragraph">たとえば次のような使い方ができます。適当なセルに <code>=SHEETS()</code> と入力するだけで、「現在のブックには○枚のシートがあります」とリアルタイムで表示されます。</p>



<h3 class="wp-block-heading"><span id="toc7">3D参照で特定のシート範囲の枚数を取得する</span></h3>



<p class="wp-block-paragraph">ブック全体ではなく、特定の範囲のシート数を数えたい場合は、3D参照を使います。</p>



<pre class="wp-block-code"><code>=SHEETS(Sheet1:Sheet5!A1)</code></pre>



<p class="wp-block-paragraph">この数式は、Sheet1からSheet5までの5つのシートにまたがる3D参照を引数にしています。結果は「5」です。途中のシートが非表示でもカウントされます。</p>



<p class="wp-block-paragraph">3D参照を使うときに注意したいのは、シートの並び順が連続していないとエラーになる点です。たとえば Sheet1 と Sheet5 だけを飛ばして参照することはできません。</p>



<h3 class="wp-block-heading"><span id="toc8">名前定義を指定する</span></h3>



<p class="wp-block-paragraph">「名前の定義」で複数シートにまたがる範囲に名前を付けている場合、その名前を引数に指定できます。</p>



<p class="wp-block-paragraph">たとえば「月別データ」という名前を Sheet1:Sheet3!A1:A10 に割り当てている場合です。</p>



<pre class="wp-block-code"><code>=SHEETS(月別データ)   → 3</code></pre>



<p class="wp-block-paragraph">結果は名前定義が参照しているシート範囲の枚数「3」になります。</p>



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



<p class="wp-block-paragraph">SHEETS関数は単体だとシンプルな関数です。ただし、他の関数と組み合わせると、シート管理の自動化に活用できる場面が広がります。ここでは5つの実務パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン1: シートの追加漏れチェック</span></h3>



<p class="wp-block-paragraph">月別シート（1月〜12月）を使うブックで、12枚すべて揃っているか自動チェックする例です。</p>



<pre class="wp-block-code"><code>=IF(SHEETS()=12, &quot;OK&quot;, SHEETS()&amp;&quot;枚（不足あり）&quot;)</code></pre>



<p class="wp-block-paragraph">シートが12枚なら「OK」、それ以外なら「8枚（不足あり）」のように表示されます。シートの追加忘れや削除ミスを防げます。</p>



<p class="wp-block-paragraph">月初に新しいシートを作るタイプの運用では、このチェックを目立つ場所に置いておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: INDIRECT関数と組み合わせてシート一覧を作る</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と連携して、シート数に応じた連番を振る例です。</p>



<pre class="wp-block-code"><code>=IF(ROW(A1)&lt;=SHEETS(), ROW(A1), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">この数式を下方向にコピーします。シート数以内の行には連番が入り、超えた行は空白になります。シートを追加すれば連番も自動で伸びる仕組みです。</p>



<p class="wp-block-paragraph">たとえば「目次」シートで各シートへのリンクを作りたい場合に便利です。シートの枚数が変わっても、目次の行数が自動調整されます。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 集計の完了率を表示する</span></h3>



<p class="wp-block-paragraph">12枚の月別シートのうち、入力済みのシート数を表示する応用例です。</p>



<pre class="wp-block-code"><code>=&quot;進捗: &quot;&amp;COUNTA(Sheet1:Sheet12!A1)&amp;&quot;/&quot;&amp;SHEETS(Sheet1:Sheet12!A1)&amp;&quot;シート完了&quot;</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-counta/">COUNTA関数</a>でA1セルに入力済みのシート数を数え、SHEETS関数で全シート数を取得しています。「進捗: 8/12シート完了」のように表示されます。</p>



<p class="wp-block-paragraph">月次レポートの進捗管理やチームでのファイル更新状況のモニタリングに役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン4: シート数の変動を検知する</span></h3>



<p class="wp-block-paragraph">前回のシート数を別セルに記録しておき、変動があったら警告を出す例です。</p>



<pre class="wp-block-code"><code>=IF(SHEETS()&lt;&gt;B1, &quot;シート数が変わりました（現在: &quot;&amp;SHEETS()&amp;&quot;枚）&quot;, &quot;変動なし&quot;)</code></pre>



<p class="wp-block-paragraph">B1セルに前回のシート数を入力しておきます。誰かがシートを追加・削除したときに、ひと目で気づけます。</p>



<p class="wp-block-paragraph">共有ブックで複数人が作業する環境では、このチェックが役立つ場面が多いです。知らないうちにシートが消えていた、というトラブルを予防できます。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: 月次レポートの完成度を自動判定</span></h3>



<p class="wp-block-paragraph">月次レポートで「12シート中、完成している数」を判定する実務的な例です。</p>



<pre class="wp-block-code"><code>=IF(SHEETS()=12, &quot;完成&quot;, SHEETS()&lt;12, &quot;作成中 &quot;&amp;SHEETS()&amp;&quot;/12&quot;, &quot;シート過多&quot;)</code></pre>



<p class="wp-block-paragraph">シート数に応じて「完成」「作成中 8/12」「シート過多」の3段階で表示されます。月次レポートのテンプレートに組み込んでおくと、進捗状況がひと目で分かります。</p>



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



<h3 class="wp-block-heading"><span id="toc16">エラー一覧表</span></h3>



<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>#NAME?</code></td><td>関数名のスペルミス（末尾のSを忘れる等）</td><td><code>=SHEETS()</code> とスペルを確認する</td></tr><tr><td><code>#VALUE!</code></td><td>引数に無効な値を指定した</td><td>セル範囲または名前定義を正しく指定する</td></tr><tr><td>結果が1になる</td><td>単独セル参照を指定している</td><td>3D参照（Sheet1:Sheet5!A1 形式）を使う</td></tr><tr><td>非表示シートも含まれる</td><td>SHEETS関数の仕様</td><td>可視シートだけ数えたいときはVBAを使う</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>SHEETS関数で最も多い間違いは、SHEET関数（単数）と混同して使うことです。シートの<strong>数</strong>を知りたいならSHEETS、シートの<strong>番号</strong>を知りたいなら<a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a>を使い分けてください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc17">非表示シートもカウントされる問題</span></h3>



<p class="wp-block-paragraph">SHEETS関数の大きな特徴は、非表示シートも含めてカウントする点です。これが「予想と数が合わない」と感じる原因になります。</p>



<p class="wp-block-paragraph">たとえば画面に見えているのが10枚でも、非表示の設定用シートが2枚ある場合、<code>=SHEETS()</code> の結果は「12」になります。可視シートのみを数えたい場合は、SHEETS関数だけでは対応できません。</p>



<h3 class="wp-block-heading"><span id="toc18">可視シートのみ数える代替策（VBA）</span></h3>



<p class="wp-block-paragraph">可視シートだけをカウントしたい場合は、VBAでユーザー定義関数を作る方法があります。</p>



<pre class="wp-block-code"><code>'--- 可視シートの枚数を返す関数 ---
Function CountVisibleSheets() As Long
    Dim ws As Worksheet
    Dim cnt As Long '可視シートのカウンター
    cnt = 0
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetVisible Then
            cnt = cnt + 1
        End If
    Next ws
    CountVisibleSheets = cnt
End Function</code></pre>



<p class="wp-block-paragraph">このコードを標準モジュールに貼り付けると、<code>=CountVisibleSheets()</code> という自作関数としてセルで使えるようになります。非表示シートは数に含まれません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p><a href="https://mashukabu.com/excel-error-value-list/">エラー値の種類と対処法一覧</a>もあわせて確認すると、SHEETS関数以外のエラー対処にも役立ちます。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc20">SHEETS関数とSHEET関数の比較表</span></h3>



<p class="wp-block-paragraph">SHEETS関数とSHEET関数は名前が似ていて混同しやすい関数です。それぞれの違いを整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>SHEETS関数</th><th><a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a></th></tr></thead><tbody><tr><td>返すもの</td><td>シートの<strong>数</strong>（枚数）</td><td>シートの<strong>番号</strong>（位置）</td></tr><tr><td>引数省略時</td><td>ブック全体のシート数</td><td>現在のシートの番号</td></tr><tr><td>引数の型</td><td>参照（3D参照・名前定義）</td><td>シート名・参照・名前定義</td></tr><tr><td>戻り値の例</td><td>5（ブックに5枚）</td><td>3（左から3番目）</td></tr><tr><td>使用場面</td><td>シート枚数の管理・チェック</td><td>シートの並び順を取得</td></tr><tr><td>Excelバージョン</td><td>2013以降</td><td>2013以降</td></tr><tr><td>分類</td><td>情報関数</td><td>情報関数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">返り値の性質が根本的に違うため、シーンに応じて使い分ける必要があります。</p>



<h3 class="wp-block-heading"><span id="toc21">どちらを使うべき？判断フロー</span></h3>



<p class="wp-block-paragraph">シーンに応じた使い分けは次の基準で判断します。</p>



<ul class="wp-block-list"><li><strong>シートが全部で何枚あるか</strong>を知りたい → SHEETS関数</li><li><strong>このシートは左から何番目か</strong>を知りたい → <a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a></li><li><strong>シートの追加漏れをチェック</strong>したい → SHEETS関数</li><li><strong>現在のシートがどこか目次で強調</strong>したい → <a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a></li></ul>



<p class="wp-block-paragraph">たとえば「12枚のシートが揃っているか確認」ならSHEETS関数です。「現在のシートが何番目か表示」ならSHEET関数を使います。</p>



<h3 class="wp-block-heading"><span id="toc22">組み合わせて使うパターン</span></h3>



<p class="wp-block-paragraph">SHEETS関数とSHEET関数を組み合わせると、「最後のシートかどうか」を判定できます。</p>



<pre class="wp-block-code"><code>=IF(SHEET()=SHEETS(), &quot;最後のシートです&quot;, SHEETS()-SHEET()&amp;&quot;枚先にまだシートがあります&quot;)</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a>で現在のシート番号を取得し、SHEETS関数でシート総数と比較しています。シート番号と総数が一致していれば「最後のシートです」、そうでなければ「あと○枚」と残りシート数を表示します。</p>



<p class="wp-block-paragraph">このパターンは、タブ間を移動しながら作業するときに「あと何枚残っているか」を確認する用途で便利です。</p>



<h2 class="wp-block-heading"><span id="toc23">SHEETS関数に関するよくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc24">Googleスプレッドシートで同じことはできる？</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシートには、残念ながらSHEETS関数は存在しません。同じことを実現したい場合は、Apps Scriptでカスタム関数を作る必要があります。</p>



<pre class="wp-block-code"><code>function countSheets() {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets().length;
}</code></pre>



<p class="wp-block-paragraph">このコードをスクリプトエディタに貼り付けると、セルで <code>=countSheets()</code> という関数として使えるようになります。</p>



<h3 class="wp-block-heading"><span id="toc25">SHEETS関数はいつから使える？</span></h3>



<p class="wp-block-paragraph">Excel 2013以降で使えます。Excel 2010以前では利用できません。Microsoft 365、Excel 2016・2019・2021・2024でもすべて利用可能です。Excel for Mac では2016以降で対応しています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Excel 2010以前を利用している環境では、代替としてVBAでシート数を取得する方法を検討してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc26">他のブックのシート数は取得できる？</span></h3>



<p class="wp-block-paragraph">他のブックのシート数取得は、原則として推奨できません。</p>



<p class="wp-block-paragraph">外部参照を使った <code>=SHEETS('[Book2.xlsx]Sheet1'!A1)</code> のような書き方は、期待通りに動作しないケースが多いです。ブックが同時に開いている場合でも、ファイル構成によっては正しい値が返らないことがあります。</p>



<p class="wp-block-paragraph">他ブックのシート数を取得したい場合は、対象ブックを開いた状態でVBAを使う方法がより確実です。</p>



<h3 class="wp-block-heading"><span id="toc27">非表示のシートもカウントされますか？</span></h3>



<p class="wp-block-paragraph">はい、カウントされます。これはSHEETS関数の仕様です。非表示シートや非常に非表示（VeryHidden）のシートも含めて、すべてのシートが数に含まれます。</p>



<p class="wp-block-paragraph">可視シートのみを数えたい場合は、前述のVBAコード（CountVisibleSheets関数）を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc28">グラフシートやマクロシートも含まれる？</span></h3>



<p class="wp-block-paragraph">はい、含まれます。ワークシートだけでなく、グラフシート・マクロシート・ダイアログシートなど、ブック内のすべてのシート種類がカウント対象です。</p>



<p class="wp-block-paragraph">通常の業務ではワークシートしか使わないことが多いため、意識する場面は少ないですが、古いExcelブックにグラフシートが埋め込まれている場合などに数が合わないときは、この仕様を思い出してください。</p>



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



<p class="wp-block-paragraph">ExcelのSHEETS関数は、ブックに含まれるシートの枚数を返す情報関数です。</p>



<ul class="wp-block-list"><li><code>=SHEETS()</code> でブック全体のシート数を自動取得できる</li><li>引数に3D参照を指定すると、その範囲のシート数を返す</li><li><strong>非表示シートやグラフシートもカウント対象</strong>に含まれる</li><li>Excel 2013以降・Microsoft 365・Mac 2016以降で利用可能</li><li><a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数</a>はシートの「番号」、SHEETS関数はシートの「数」を返す</li><li>IF関数と組み合わせてシートの過不足チェックに使える</li><li>可視シートのみ数えたい場合はVBAで代替する</li></ul>



<p class="wp-block-paragraph">シンプルな関数ですが、シート管理の自動化に役立ちます。月次レポートや進捗管理、共有ブックのトラブル予防まで、使える場面は意外と多いです。ぜひ試してみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-sheet/">SHEET関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-areas/">AREAS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-counta/">COUNTA関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-info/">INFO関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">Excel関数 アルファベット順一覧</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別一覧</a></li><li><a href="https://mashukabu.com/excel-error-value-list/">エラー値の種類と対処法一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-sheets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのSHEET関数の使い方｜シート番号取得と実務活用</title>
		<link>https://mashukabu.com/excel-function-howto-use-sheet/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-sheet/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 19 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[INFO関数]]></category>
		<category><![CDATA[SHEETS関数]]></category>
		<category><![CDATA[SHEET関数]]></category>
		<category><![CDATA[エラー対処]]></category>
		<category><![CDATA[シート番号]]></category>
		<category><![CDATA[情報関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2420</guid>

					<description><![CDATA[ExcelのSHEET関数でシート番号を取得する方法を徹底解説。引数4パターン（省略・シート名・セル参照・テーブル名）を比較表で整理し、SHEETS関数との違いも明確にします。INDIRECT関数との組み合わせ実務例や、#N/A・#REF!エラーの対処法まで網羅した完全ガイドです。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このシートって左から何番目だっけ？」と、手作業で数えた経験はありませんか？</p>



<p class="wp-block-paragraph">シートが10枚、20枚と増えてくると、目視で順番を確認するのは手間がかかります。非表示シートがあると、正確な番号を把握するのはさらに大変です。</p>



<p class="wp-block-paragraph"><strong>ExcelのSHEET関数を使えば、シートの番号を数式で自動取得できます。</strong> この記事では引数の4パターンを比較表で整理し、SHEETS関数との違いやエラー対処法まで解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのSHEET関数とは？できることをおさらい</a><ol><li><a href="#toc2" tabindex="0">SHEET関数の読み方・基本構文</a></li><li><a href="#toc3" tabindex="0">シート番号の仕組み（左から1,2,3…非表示シートも含む）</a></li></ol></li><li><a href="#toc4" tabindex="0">SHEET関数の使い方｜引数4パターン比較</a><ol><li><a href="#toc5" tabindex="0">引数を省略する（現在シートの番号を取得）</a></li><li><a href="#toc6" tabindex="0">シート名を直接指定する</a></li><li><a href="#toc7" tabindex="0">セル参照で指定する</a></li><li><a href="#toc8" tabindex="0">テーブル名・名前付き範囲で指定する</a></li></ol></li><li><a href="#toc9" tabindex="0">SHEET関数とSHEETS関数の違い</a><ol><li><a href="#toc10" tabindex="0">一目でわかる比較表</a></li><li><a href="#toc11" tabindex="0">使い分けの判断基準</a></li></ol></li><li><a href="#toc12" tabindex="0">SHEET関数の実務活用パターン</a><ol><li><a href="#toc13" tabindex="0">INDIRECT関数と組み合わせてシートを動的参照する</a></li><li><a href="#toc14" tabindex="0">シートの並び順を数式でチェックする</a></li></ol></li><li><a href="#toc15" tabindex="0">SHEET関数のエラーと対処方法</a><ol><li><a href="#toc16" tabindex="0">#N/Aが表示される原因と解決策</a></li><li><a href="#toc17" tabindex="0">#REF!が表示される原因と解決策</a></li><li><a href="#toc18" tabindex="0">#NAME?が表示される原因と解決策</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ</a><ol><li><a href="#toc20" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのSHEET関数とは？できることをおさらい</span></h2>



<p class="wp-block-paragraph">SHEET関数は、指定したシートの<strong>番号（位置）</strong>を返す関数です。「このシートはブック内で左から何番目にあるか」を数値で教えてくれます。</p>



<p class="wp-block-paragraph">Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。</p>



<p class="wp-block-paragraph">SHEET関数はExcelの<strong>情報関数</strong>カテゴリに分類されます。同じカテゴリには、Excelのバージョンや動作環境を取得できる<a href="https://mashukabu.com/excel-function-howto-use-info/">INFO関数</a>があります。</p>



<h3 class="wp-block-heading"><span id="toc2">SHEET関数の読み方・基本構文</span></h3>



<p class="wp-block-paragraph">読み方は「<strong>シート関数</strong>」です。英語の「sheet」がそのまま関数名になっています。</p>



<pre class="wp-block-code"><code>=SHEET([値])</code></pre>



<p class="wp-block-paragraph">引数の「値」は省略できます。省略した場合は、数式を入力したシートの番号を返します。</p>



<h3 class="wp-block-heading"><span id="toc3">シート番号の仕組み（左から1,2,3…非表示シートも含む）</span></h3>



<p class="wp-block-paragraph">シート番号は、タブの左端から順に1, 2, 3…と割り振られます。固定IDではありません。シートを並べ替えたり追加・削除したりすると、番号も変わります。</p>



<p class="wp-block-paragraph">ここで注意したいのが、<strong>非表示シートもカウントに含まれる</strong>点です。通常の非表示シートだけでなく、VBAで設定するVery Hidden（完全非表示）シートもカウント対象です。たとえば3枚のシートがあり、2番目が非表示の場合でも番号は1, 2, 3です。非表示だからといって飛ばされることはありません。</p>



<h2 class="wp-block-heading"><span id="toc4">SHEET関数の使い方｜引数4パターン比較</span></h2>



<p class="wp-block-paragraph">SHEET関数は引数の指定方法が4種類あります。まず一覧で確認し、それぞれ詳しく見ていきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>パターン</th><th>数式の例</th><th>返す値</th></tr></thead><tbody><tr><td>引数を省略</td><td><code>=SHEET()</code></td><td>現在のシート番号</td></tr><tr><td>シート名を指定</td><td><code>=SHEET(売上)</code></td><td>「売上」シートの番号</td></tr><tr><td>セル参照で指定</td><td><code>=SHEET(Sheet2!A1)</code></td><td>Sheet2の番号</td></tr><tr><td>テーブル名・名前定義</td><td><code>=SHEET(売上テーブル)</code></td><td>テーブルがあるシートの番号</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc5">引数を省略する（現在シートの番号を取得）</span></h3>



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



<p class="wp-block-paragraph">最もシンプルな使い方です。数式を入力したシートの番号が返ります。たとえば左から3番目のシートに入力すれば、結果は「3」です。</p>



<h3 class="wp-block-heading"><span id="toc6">シート名を直接指定する</span></h3>



<pre class="wp-block-code"><code>=SHEET(売上)</code></pre>



<p class="wp-block-paragraph">シート名をそのまま引数に入力します。<strong>ダブルクォーテーション（&#8221;）で囲む必要はありません。</strong> 「売上」シートが左から2番目にあれば、結果は「2」です。</p>



<p class="wp-block-paragraph">シート名にスペースが含まれる場合も同様です。たとえば「売上 月別」というシート名でも、そのまま <code>=SHEET(売上 月別)</code> と入力できます。</p>



<h3 class="wp-block-heading"><span id="toc7">セル参照で指定する</span></h3>



<pre class="wp-block-code"><code>=SHEET(Sheet2!A1)</code></pre>



<p class="wp-block-paragraph">別シートのセルを参照する形式です。参照先のシートの番号が返ります。セルの値ではなく、セルが存在するシートの位置を取得するのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc8">テーブル名・名前付き範囲で指定する</span></h3>



<pre class="wp-block-code"><code>=SHEET(売上テーブル)</code></pre>



<p class="wp-block-paragraph">テーブル名や名前の定義（ブックスコープ）を指定できます。そのテーブルや名前が存在するシートの番号を返します。</p>



<p class="wp-block-paragraph">ただし、<strong>シートスコープの名前定義を指定すると#NAME?エラー</strong>になります。名前の定義を使う場合は、スコープがブック全体になっているか確認してください。</p>



<h2 class="wp-block-heading"><span id="toc9">SHEET関数とSHEETS関数の違い</span></h2>



<p class="wp-block-paragraph">SHEET関数と<a href="https://mashukabu.com/excel-function-howto-use-sheets/">SHEETS関数</a>は名前が似ていて混同しやすい関数です。役割はまったく異なるので、しっかり区別しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc10">一目でわかる比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>SHEET関数</th><th><a href="https://mashukabu.com/excel-function-howto-use-sheets/">SHEETS関数</a></th></tr></thead><tbody><tr><td>何を返す</td><td>特定シートの番号（位置）</td><td>参照範囲内のシート総数</td></tr><tr><td>引数省略時</td><td>現在のシート番号</td><td>ブック全体のシート総数</td></tr><tr><td>非表示シート</td><td>カウントに含む</td><td>カウントに含む</td></tr><tr><td>主なエラー</td><td>#REF! / #N/A / #NAME?</td><td>#REF!</td></tr><tr><td>用途例</td><td>このシートは何番目？</td><td>このブックに何枚ある？</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">使い分けの判断基準</span></h3>



<ul class="wp-block-list"><li><strong>シートの「位置」を知りたい</strong> → SHEET関数</li><li><strong>シートの「枚数」を知りたい</strong> → SHEETS関数</li></ul>



<p class="wp-block-paragraph">たとえば「現在のシートが左から何番目かを表示したい」ならSHEET関数です。「ブックにシートが全部で何枚あるか確認したい」なら<a href="https://mashukabu.com/excel-function-howto-use-sheets/">SHEETS関数</a>を使います。</p>



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



<p class="wp-block-paragraph">SHEET関数は単体でもシート番号を取得できます。他の関数と組み合わせると、さらに便利に活用できます。</p>



<h3 class="wp-block-heading"><span id="toc13">INDIRECT関数と組み合わせてシートを動的参照する</span></h3>



<p class="wp-block-paragraph">SHEET関数が返すのは数値（番号）です。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>（文字列をセル参照に変換する関数）はシート名の文字列が必要なので、直接組み合わせることはできません。</p>



<p class="wp-block-paragraph">実務では、シート名の一覧をセルに用意しておく方法がよく使われます。A列にシート名の一覧があるとします。</p>



<pre class="wp-block-code"><code>=INDIRECT(&quot;'&quot;&amp;INDEX(A:A,SHEET())&amp;&quot;'!B1&quot;)</code></pre>



<p class="wp-block-paragraph">SHEET関数で現在のシート番号を取得し、INDEX関数でA列からシート名を引き当てています。INDIRECT関数がそのシート名を使ってB1セルを動的に参照します。</p>



<h3 class="wp-block-heading"><span id="toc14">シートの並び順を数式でチェックする</span></h3>



<p class="wp-block-paragraph">シートが想定どおりの順番になっているか確認する例です。</p>



<pre class="wp-block-code"><code>=IF(SHEET()=SHEETS(), &quot;最後のシートです&quot;, &quot;残り&quot;&amp;SHEETS()-SHEET()&amp;&quot;枚&quot;)</code></pre>



<p class="wp-block-paragraph">SHEET関数で現在の番号を取得し、SHEETS関数の総数と比較しています。「最後のシートです」や「残り3枚」のように表示されます。</p>



<h2 class="wp-block-heading"><span id="toc15">SHEET関数のエラーと対処方法</span></h2>



<p class="wp-block-paragraph">SHEET関数で表示されるエラーは主に3種類です。原因と対処法をそれぞれ確認しましょう。エラーの詳細は<a href="https://mashukabu.com/excel-error-value-list/">エラー値の種類と対処方法</a>も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc16">#N/Aが表示される原因と解決策</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 存在しないシート名を引数に指定した場合に発生します。</p>



<pre class="wp-block-code"><code>=SHEET(受注)   → シート「受注」が存在しなければ #N/A</code></pre>



<p class="wp-block-paragraph"><strong>対処法</strong>: シート名のスペルを確認してください。タブに表示されている名前と完全に一致している必要があります。スペースの有無や全角・半角の違いにも注意しましょう。</p>



<h3 class="wp-block-heading"><span id="toc17">#REF!が表示される原因と解決策</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 数式が参照しているシートが削除された場合に発生します。</p>



<p class="wp-block-paragraph">もともと存在していたシートを参照する数式を作成した後で、そのシートを削除すると#REF!になります。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 削除したシートを復元するか、数式の参照先を修正してください。IFERROR関数で囲んでおくと、エラー時に代替値を表示できます。</p>



<h3 class="wp-block-heading"><span id="toc18">#NAME?が表示される原因と解決策</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: スコープがシート限定の名前定義を引数に指定した場合に発生します。</p>



<pre class="wp-block-code"><code>=SHEET(シートスコープの名前)   → #NAME?</code></pre>



<p class="wp-block-paragraph"><strong>対処法</strong>: 「数式」タブの「名前の管理」でスコープを確認してください。「ブック」スコープの名前定義に変更すると解決します。</p>



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



<p class="wp-block-paragraph">SHEET関数は、シートの番号（左からの位置）を返す関数です。</p>



<ul class="wp-block-list"><li><code>=SHEET()</code> で現在のシート番号を取得できる</li><li>引数にはシート名・セル参照・テーブル名を指定できる</li><li>シート名にダブルクォーテーションは不要</li><li><strong>非表示シートもカウント対象</strong>に含まれる</li><li><a href="https://mashukabu.com/excel-function-howto-use-sheets/">SHEETS関数</a>はシートの「枚数」、SHEET関数はシートの「番号」を返す</li></ul>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>との組み合わせなど、応用の幅も広い関数です。ぜひ活用してみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-sheets/">SHEETS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-info/">INFO関数の使い方</a></li><li><a href="https://mashukabu.com/excel-error-value-list/">エラー値の種類と対処方法</a></li><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">Excel関数 アルファベット順一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-sheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのHYPERLINK関数の使い方｜リンク先5種を使い分ける方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-hyperlink/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-hyperlink/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 10 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[HYPERLINK関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[mailto]]></category>
		<category><![CDATA[ハイパーリンク]]></category>
		<category><![CDATA[別シートリンク]]></category>
		<category><![CDATA[目次シート]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2297</guid>

					<description><![CDATA[ExcelのHYPERLINK関数の使い方を基本から応用まで解説。Webサイト・別シート・フォルダ・メール作成など5種類のリンク先の書き方を実例つきで紹介。INDIRECT関数との組み合わせや目次シート作成テクニックも。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「セルをクリックしたら別シートに飛べるようにしたい」<br>「リンク一覧をExcelで管理したいけど、手作業で1つずつ設定するのは面倒」<br>こんな場面、ありませんか？</p>



<p class="wp-block-paragraph">ExcelのHYPERLINK関数を使えば、数式でリンクを一括管理できます。<br>Webサイトだけでなく、別シートへのジャンプやフォルダを開く操作、<br>メール作成まで1つの関数でカバーできますよ。</p>



<p class="wp-block-paragraph">この記事では、HYPERLINK関数の基本から5種類のリンク先の使い方、<br>実務で役立つ応用テクニックまで具体例つきで解説していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">HYPERLINK関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方・語源</a></li><li><a href="#toc3" tabindex="0">HYPERLINK関数でできること</a></li></ol></li><li><a href="#toc4" tabindex="0">ExcelのHYPERLINK関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">構文と引数</a></li><li><a href="#toc6" tabindex="0">Webサイトへのリンクを作る</a></li></ol></li><li><a href="#toc7" tabindex="0">リンク先5種類の書き方と実務パターン</a><ol><li><a href="#toc8" tabindex="0">Webサイト（URL）</a></li><li><a href="#toc9" tabindex="0">同じブック内の別シート</a></li><li><a href="#toc10" tabindex="0">別のブック（ファイル）</a></li><li><a href="#toc11" tabindex="0">フォルダを開く</a></li><li><a href="#toc12" tabindex="0">メールを作成する（mailto）</a></li></ol></li><li><a href="#toc13" tabindex="0">ExcelのHYPERLINK関数の応用テクニック</a><ol><li><a href="#toc14" tabindex="0">INDIRECT関数と組み合わせて動的リンクを作る</a></li><li><a href="#toc15" tabindex="0">目次シートを作る</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><ol><li><a href="#toc19" tabindex="0">関連記事</a></li><li><a href="#toc20" tabindex="0">関数一覧</a></li><li><a href="#toc21" tabindex="0">エラー値についてのまとめ記事</a></li></ol></li></ol>
    </div>
  </div>

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



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



<p class="wp-block-paragraph">読み方は「ハイパーリンク」です。<br>「Hyper（超える）」+「Link（つなぐ）」が語源で、<br>テキスト同士を相互につなぐ仕組みを意味します。</p>



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



<p class="wp-block-paragraph">HYPERLINK関数は、セルにリンクを埋め込む関数です。<br>セルをクリックすると指定した場所にジャンプできます。</p>



<p class="wp-block-paragraph">リンク先として指定できるのは、次の5種類です。</p>



<ul class="wp-block-list"><li>Webサイト（URL）</li><li>同じブック内の別シート</li><li>別のブック（ファイル）</li><li>フォルダ</li><li>メール作成（mailto）</li></ul>



<p class="wp-block-paragraph">右クリックで設定するハイパーリンクとは違い、<br>数式なのでコピーや一括変更がしやすいのが特徴です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>HYPERLINK関数はExcel 2003以降のすべてのバージョンで使えます。Microsoft 365やExcel Onlineにも対応しています。</p></blockquote>



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



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



<pre class="wp-block-code"><code>=HYPERLINK(リンク先, [別名])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>リンク先</td><td>必須</td><td>ジャンプ先のURLやパス。文字列はダブルクォーテーションで囲む</td></tr><tr><td>別名</td><td>任意</td><td>セルに表示するテキスト。省略するとリンク先がそのまま表示される</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「別名」を指定すると、長いURLの代わりにわかりやすい文字列を表示できます。<br>省略した場合はURLがそのまま表示されるので、基本的には指定するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc6">Webサイトへのリンクを作る</span></h3>



<p class="wp-block-paragraph">まずは一番シンプルな例として、Webサイトへのリンクを作ってみましょう。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;https://www.example.com&quot;, &quot;サンプルサイトを開く&quot;)</code></pre>



<p class="wp-block-paragraph">セルには「サンプルサイトを開く」と青い下線つきで表示されます。<br>クリックするとブラウザが開いて、指定したURLに移動します。</p>



<p class="wp-block-paragraph">リンク先をセル参照にすることもできます。<br>A1セルにURLが入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=HYPERLINK(A1, &quot;リンクを開く&quot;)</code></pre>



<p class="wp-block-paragraph">URLの一覧があるときは、この書き方でまとめてリンクを作れますよ。</p>



<h2 class="wp-block-heading"><span id="toc7">リンク先5種類の書き方と実務パターン</span></h2>



<p class="wp-block-paragraph">HYPERLINK関数のリンク先は5種類あります。<br>それぞれの書き方と使いどころを見ていきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>リンク先</th><th>書き方の例</th><th>使いどころ</th></tr></thead><tbody><tr><td>Webサイト</td><td><code>"https://〜"</code></td><td>参考サイトの一覧管理</td></tr><tr><td>別シート</td><td><code>"#シート名!セル"</code></td><td>目次シートからの移動</td></tr><tr><td>別ブック</td><td><code>"[パス]シート名!セル"</code></td><td>関連ファイルへのリンク集</td></tr><tr><td>フォルダ</td><td><code>"C:Users〜"</code></td><td>共有フォルダへのショートカット</td></tr><tr><td>メール</td><td><code>"mailto:〜"</code></td><td>連絡先リストからのメール作成</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc8">Webサイト（URL）</span></h3>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;https://www.example.com&quot;, &quot;サンプルサイト&quot;)</code></pre>



<p class="wp-block-paragraph">URLは<code>https://</code>または<code>http://</code>から始めてください。<br>社内ポータルや業務システムのURLを一覧にまとめておくと便利です。</p>



<h3 class="wp-block-heading"><span id="toc9">同じブック内の別シート</span></h3>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;#売上データ!A1&quot;, &quot;売上データを見る&quot;)</code></pre>



<p class="wp-block-paragraph">ポイントは先頭の<code>#</code>（シャープ）です。<br><code>#</code>をつけることで「同じブック内」を意味します。</p>



<p class="wp-block-paragraph">シート名にスペースが含まれる場合は、シングルクォーテーションで囲みます。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;#'月次 レポート'!A1&quot;, &quot;月次レポートを見る&quot;)</code></pre>



<p class="wp-block-paragraph">目次シートを作るときに特に活躍する書き方です。</p>



<h3 class="wp-block-heading"><span id="toc10">別のブック（ファイル）</span></h3>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;[C:UsersDocuments売上報告.xlsx]Sheet1!A1&quot;, &quot;売上報告を開く&quot;)</code></pre>



<p class="wp-block-paragraph">ファイルパスを<code>[]</code>（角括弧）で囲むのがポイントです。<br>共有サーバー上のファイルならUNCパスも使えます。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;[\servershare売上報告.xlsx]Sheet1!A1&quot;, &quot;売上報告を開く&quot;)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>リンク先のファイルが移動・削除されるとエラーになります。共有フォルダのパスが変わらない場所に保存しておくのがおすすめです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc11">フォルダを開く</span></h3>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;C:UsersDocuments報告書&quot;, &quot;報告書フォルダを開く&quot;)</code></pre>



<p class="wp-block-paragraph">フォルダのパスを指定すると、エクスプローラーでそのフォルダが開きます。<br>末尾に<code></code>（バックスラッシュ）をつけるのを忘れないようにしてください。</p>



<p class="wp-block-paragraph">共有フォルダの場合はUNCパスを使います。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;\servershare報告書&quot;, &quot;報告書フォルダを開く&quot;)</code></pre>



<p class="wp-block-paragraph">チームで使う共有フォルダのショートカット集を作るときに便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc12">メールを作成する（mailto）</span></h3>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;mailto:tanaka@example.com&quot;, &quot;田中さんにメール&quot;)</code></pre>



<p class="wp-block-paragraph">クリックするとメールソフトが起動して、新規メール画面が開きます。<br>件名や本文を事前に設定することもできます。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;mailto:tanaka@example.com?subject=月次報告について&amp;body=お疲れ様です。&quot;, &quot;田中さんに月次報告メール&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>パラメータ</th><th>書き方</th><th>内容</th></tr></thead><tbody><tr><td>件名</td><td><code>?subject=〜</code></td><td>メールの件名を事前設定</td></tr><tr><td>本文</td><td><code>&body=〜</code></td><td>メール本文の定型文を設定</td></tr><tr><td>CC</td><td><code>&cc=〜</code></td><td>CCの宛先を追加</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">連絡先リストを作って定型メールを送るときに重宝します。</p>



<h2 class="wp-block-heading"><span id="toc13">ExcelのHYPERLINK関数の応用テクニック</span></h2>



<h3 class="wp-block-heading"><span id="toc14">INDIRECT関数と組み合わせて動的リンクを作る</span></h3>



<p class="wp-block-paragraph">リンク先をセルの値に応じて自動で切り替えたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせます。</p>



<p class="wp-block-paragraph">たとえば、A1セルに「売上データ」と入力されているとします。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;#&quot;&amp;A1&amp;&quot;!A1&quot;, A1&amp;&quot;シートへ移動&quot;)</code></pre>



<p class="wp-block-paragraph">この数式は<code>#売上データ!A1</code>というリンク先を生成します。<br>A1の値を変えるだけで、リンク先のシートが自動的に変わります。</p>



<p class="wp-block-paragraph">シート名の一覧がA列に並んでいる場合は、数式を下にコピーするだけで全シートへのリンクが完成します。<br>目次シートを効率よく作りたいときに特に便利なテクニックですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>INDIRECT関数について詳しくは「<a href="https://mashukabu.com/excel-function-howto-use-indirect/">ExcelのINDIRECT関数の使い方｜文字列からセル参照を動的に切り替える方法</a>」をご覧ください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc15">目次シートを作る</span></h3>



<p class="wp-block-paragraph">複数のシートがあるブックでは、目次シートがあると便利です。<br>HYPERLINK関数で各シートへのリンクを並べましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>No.</th><th>シート名</th><th>数式例</th></tr></thead><tbody><tr><td>1</td><td>売上データ</td><td><code>=HYPERLINK("#売上データ!A1","売上データ")</code></td></tr><tr><td>2</td><td>経費一覧</td><td><code>=HYPERLINK("#経費一覧!A1","経費一覧")</code></td></tr><tr><td>3</td><td>月次レポート</td><td><code>=HYPERLINK("#月次レポート!A1","月次レポート")</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">さらに、各シートのA1セルに「目次に戻る」リンクを置くと、シート間の移動がスムーズになります。</p>



<pre class="wp-block-code"><code>=HYPERLINK(&quot;#目次!A1&quot;, &quot;目次に戻る&quot;)</code></pre>



<p class="wp-block-paragraph">シートが多いブックでは、この仕組みがあるだけで作業効率がぐんと上がりますよ。</p>



<h2 class="wp-block-heading"><span id="toc16">右クリックのハイパーリンクとの違い</span></h2>



<p class="wp-block-paragraph">Excelには「右クリック → リンクの挿入」でリンクを設定する方法もあります。<br>HYPERLINK関数との違いを比較してみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>HYPERLINK関数</th><th>右クリック（リンクの挿入）</th></tr></thead><tbody><tr><td>設定方法</td><td>数式で指定</td><td>ダイアログで手動設定</td></tr><tr><td>コピー</td><td>セルコピーで一括複製</td><td>1つずつ再設定が必要</td></tr><tr><td>一括変更</td><td>置換やセル参照で一括変更可能</td><td>1つずつ編集が必要</td></tr><tr><td>表示テキスト</td><td>別名引数で自由に設定</td><td>ダイアログで設定</td></tr><tr><td>リンクの確認</td><td>数式バーで即確認</td><td>右クリック→編集が必要</td></tr><tr><td>大量管理</td><td>得意（数式コピーで量産）</td><td>苦手（手作業が増える）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">リンクが数件だけなら右クリックで十分です。<br>ただ、10件以上のリンクを管理するならHYPERLINK関数のほうが圧倒的に効率的ですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">エラー原因と対処法</span></h2>



<p class="wp-block-paragraph">HYPERLINK関数は、リンク先が無効でも数式自体はエラーを返しません。<br>セルをクリックしたときに初めてエラーが表示される点が特徴的です。</p>



<figure class="wp-block-table"><table><thead><tr><th>よくある原因</th><th>症状</th><th>対処法</th></tr></thead><tbody><tr><td>URLのスペルミス</td><td>クリック時に「ページが見つかりません」</td><td>URLをコピー&#038;ペーストして正確に入力</td></tr><tr><td>シート名の変更</td><td>クリック時に「参照が正しくありません」</td><td><code>#</code>の後のシート名を最新のものに修正</td></tr><tr><td>ファイルの移動・削除</td><td>クリック時に「ファイルが見つかりません」</td><td>ファイルパスを最新の場所に更新</td></tr><tr><td><code>#</code>の付け忘れ（別シート）</td><td>Webブラウザが開いてしまう</td><td>リンク先の先頭に<code>#</code>を追加</td></tr><tr><td>シート名のスペース</td><td>「参照が正しくありません」</td><td>シート名をシングルクォーテーションで囲む</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>HYPERLINK関数のトラブルで一番多いのは「<code>#</code>の付け忘れ」です。別シートへのリンクなのにWebブラウザが開いてしまう場合は、リンク先の先頭に<code>#</code>があるか確認してみてください。</p></blockquote>



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



<p class="wp-block-paragraph">ExcelのHYPERLINK関数について、5種類のリンク先の使い方を解説しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>リンク先</th><th>書き方のポイント</th></tr></thead><tbody><tr><td>Webサイト</td><td><code>"https://〜"</code> で指定</td></tr><tr><td>別シート</td><td>先頭に<code>#</code>をつける</td></tr><tr><td>別ブック</td><td>ファイルパスを<code>[]</code>で囲む</td></tr><tr><td>フォルダ</td><td>パスの末尾に<code></code>をつける</td></tr><tr><td>メール</td><td><code>"mailto:〜"</code> で件名・本文も設定可能</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">リンクが少ないうちは右クリックで設定しても問題ありません。<br>ただ、10件以上のリンクを管理するようになったら、HYPERLINK関数に切り替えるとぐっと楽になりますよ。</p>



<p class="wp-block-paragraph">まずは別シートへのリンク（<code>#シート名!セル</code>）から試してみてください。<br>目次シートを1つ作るだけで、ブック内の移動が見違えるほどスムーズになります。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-indirect/">ExcelのINDIRECT関数の使い方｜文字列からセル参照を動的に切り替える方法</a></li></ul>



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



<p class="wp-block-paragraph">どちらの関数一覧からでも各関数の解説記事へアクセスできます。</p>



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



<h3 class="wp-block-heading"><span id="toc21">エラー値についてのまとめ記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-error-value-list/">エラー値についてのまとめ記事</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-hyperlink/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのAREAS関数の使い方｜参照に含まれるエリア数を数える方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-areas/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-areas/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 03 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[AREAS関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[セル参照]]></category>
		<category><![CDATA[検索・行列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2327</guid>

					<description><![CDATA[ExcelのAREAS関数で参照に含まれるエリア（セル範囲）の数を数える方法を解説。基本の書き方、INDIRECT関数やINDEX関数との組み合わせ、名前定義での活用パターン、ROWS・COLUMNS・COLUMN関数との違いまで実務で使える具体例つきで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「AREAS関数って何に使うの？」と思っている方は多いのではないでしょうか。</p>



<p class="wp-block-paragraph">実際、単体で使う場面はあまり多くありません。でも<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>と組み合わせると便利です。名前定義の数を自動カウントしたり、複数範囲を動的に切り替えたりできます。</p>



<p class="wp-block-paragraph"><strong>AREAS関数の仕組みと実務で役立つ組み合わせパターンを、この記事でまとめて解説します。</strong></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのAREAS関数とは？読み方と基本の仕組み</a></li><li><a href="#toc2" tabindex="0">AREAS関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">ExcelのAREAS関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">連続したセル範囲（エリアは1つ）</a></li><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">AREAS関数の実務活用パターン</a><ol><li><a href="#toc11" tabindex="0">パターン1: INDIRECT関数と組み合わせて名前定義の数を数える</a></li><li><a href="#toc12" tabindex="0">パターン2: INDEX関数の領域番号と組み合わせて動的にデータを切り替える</a></li><li><a href="#toc13" tabindex="0">パターン3: 入力済みシート数のカウント</a></li><li><a href="#toc14" tabindex="0">パターン4: エラーチェックで範囲の整合性を確認する</a></li></ol></li><li><a href="#toc15" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc16" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc17" tabindex="0">AREAS関数が「数えるもの」の違い</a></li><li><a href="#toc18" tabindex="0">どの関数を使うべき？</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ</a><ol><li><a href="#toc20" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのAREAS関数とは？読み方と基本の仕組み</span></h2>



<p class="wp-block-paragraph">AREAS関数は、指定した参照に含まれる<strong>エリア（セル範囲）の個数</strong>を返す関数です。</p>



<p class="wp-block-paragraph">読み方は「<strong>エリアズ関数</strong>」です。英語の「area（領域）」の複数形がそのまま関数名になっています。Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。</p>



<p class="wp-block-paragraph">ここで大事なポイントが1つあります。AREAS関数が数えるのは<strong>セルの個数ではなく、エリア（範囲の塊）の個数</strong>です。</p>



<p class="wp-block-paragraph">たとえば <code>=AREAS(A1:C10)</code> は、どれだけセルが含まれていても結果は「1」です。A1:C10という1つのエリアしかないからです。</p>



<p class="wp-block-paragraph">一方、<code>=AREAS((A1:C3,D5:F8))</code> は「2」を返します。カンマで区切られた2つのエリアがあるからです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>「セルの個数」を数えたいときは、行数なら<a href="https://mashukabu.com/excel-function-howto-use-row/">ROWS関数</a>、列数なら<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMNS関数</a>を使います。AREAS関数とは役割が異なるので注意してください。</p></blockquote>



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



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



<pre class="wp-block-code"><code>=AREAS(参照)</code></pre>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>参照</td><td>必須</td><td>エリア数を数えたいセル参照・名前定義・範囲の集合</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>参照</strong>には、セル範囲・名前定義・複数範囲をまとめたものを指定できます。</p>



<p class="wp-block-paragraph">複数の離れた範囲を1つの引数にまとめるときは、<strong>全体を括弧で囲む</strong>のがルールです。<code>=AREAS((A1:B2,C3:D4,E5:F6))</code> のように書きます。内側にカンマ区切りの範囲を並べ、外側の括弧で1つの参照にまとめる形です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>括弧を付け忘れると「引数が多すぎます」というエラーになります。AREAS関数の引数は1つだけなので、複数範囲は必ず括弧でまとめてください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc6">連続したセル範囲（エリアは1つ）</span></h3>



<pre class="wp-block-code"><code>=AREAS(A1:G5)   → 1</code></pre>



<p class="wp-block-paragraph">A1:G5は1つの連続した範囲なので、結果は「1」です。範囲のサイズに関係なく、連続していれば常に1を返します。</p>



<h3 class="wp-block-heading"><span id="toc7">離れた複数のセル範囲（エリアは複数）</span></h3>



<pre class="wp-block-code"><code>=AREAS((A1:B3,D1:E3,G1:H3))   → 3</code></pre>



<p class="wp-block-paragraph">カンマで区切った3つの範囲をまとめて渡しています。エリアが3つあるので、結果は「3」です。</p>



<h3 class="wp-block-heading"><span id="toc8">単一セルもエリアとしてカウントされる</span></h3>



<pre class="wp-block-code"><code>=AREAS((A1,B5,C10))   → 3</code></pre>



<p class="wp-block-paragraph">1つのセルも「1つのエリア」として数えられます。A1・B5・C10はそれぞれ独立したエリアです。そのため結果は「3」になります。</p>



<h3 class="wp-block-heading"><span id="toc9">名前定義を指定する</span></h3>



<p class="wp-block-paragraph">名前の定義で「売上データ」という名前をA1:A10に割り当てている場合です。</p>



<pre class="wp-block-code"><code>=AREAS(売上データ)   → 1</code></pre>



<p class="wp-block-paragraph">名前定義が参照している範囲が1つなら「1」を返します。</p>



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



<p class="wp-block-paragraph">AREAS関数は単体だとシンプルすぎて使いどころが少ない関数です。でも他の関数と組み合わせると、実務で役に立つ場面が出てきます。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン1: INDIRECT関数と組み合わせて名前定義の数を数える</span></h3>



<p class="wp-block-paragraph">名前の定義で「1月」「2月」「3月」など月別のデータ範囲を作っているとします。いくつの月データがあるか自動カウントする例です。</p>



<pre class="wp-block-code"><code>=AREAS(INDIRECT(&quot;1月,2月,3月&quot;))</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>この方法は名前定義が存在しない場合に <code>#REF!</code> エラーになります。名前の定義が正しく設定されているか事前に確認してください。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>は文字列をセル参照に変換する関数です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">パターン2: INDEX関数の領域番号と組み合わせて動的にデータを切り替える</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>には「領域番号」という引数があります。複数の範囲から何番目を使うかを指定できる引数です。AREAS関数で領域の総数を求め、最後の領域のデータを取り出す例を見てみましょう。</p>



<pre class="wp-block-code"><code>=INDEX((A1:A10,B1:B10,C1:C10), 1, 1, AREAS((A1:A10,B1:B10,C1:C10)))</code></pre>



<p class="wp-block-paragraph">この数式は3つの範囲の中から最後（3番目）の範囲の1行1列目を返します。範囲を追加・削除しても、AREAS関数が自動的に総数を返します。そのため数式を書き換える必要がありません。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン3: 入力済みシート数のカウント</span></h3>



<p class="wp-block-paragraph">月別シートで「1月」から「12月」まで名前定義を作っているとします。入力済みのシートだけ名前定義を追加していく運用の例です。</p>



<pre class="wp-block-code"><code>=AREAS(INDIRECT(&quot;1月,2月,3月,4月&quot;))   → 4</code></pre>



<p class="wp-block-paragraph">名前定義を追加するたびにINDIRECT関数の文字列を更新します。するとAREAS関数が入力済みの月数を自動で返してくれます。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン4: エラーチェックで範囲の整合性を確認する</span></h3>



<p class="wp-block-paragraph">複数の名前定義がすべて存在するかどうかを確認するチェック式です。</p>



<pre class="wp-block-code"><code>=IF(AREAS(INDIRECT(&quot;売上,仕入,利益&quot;))=3, &quot;OK&quot;, &quot;名前定義が不足&quot;)</code></pre>



<p class="wp-block-paragraph">3つの名前定義がすべて存在していれば「3」が返り、「OK」と表示されます。1つでも欠けていれば <code>#REF!</code> エラーになります。<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で囲むとより安全です。</p>



<pre class="wp-block-code"><code>=IFERROR(IF(AREAS(INDIRECT(&quot;売上,仕入,利益&quot;))=3, &quot;OK&quot;, &quot;不足&quot;), &quot;名前定義にエラーあり&quot;)</code></pre>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#REF!</code></td><td>存在しない名前定義を参照した</td><td>名前の定義が正しく設定されているか確認する</td></tr><tr><td><code>#VALUE!</code></td><td>参照に無効な値を指定した</td><td>セル範囲または名前定義を正しく指定する</td></tr><tr><td>引数が多すぎます</td><td>複数範囲を括弧でまとめていない</td><td><code>=AREAS((A1:B2,C3:D4))</code> のように全体を括弧で囲む</td></tr><tr><td>常に1が返る</td><td>連続範囲を1つだけ指定している</td><td>複数範囲をカンマ区切りで指定しているか確認する</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>AREAS関数で最も多いミスは「括弧の付け忘れ」です。複数の範囲を指定するときは、外側の括弧を忘れていないか必ず確認してください。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc17">AREAS関数が「数えるもの」の違い</span></h3>



<p class="wp-block-paragraph">AREAS関数と混同しやすい関数がいくつかあります。それぞれ「何を数えるか」が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>数えるもの</th><th>例</th><th>結果</th></tr></thead><tbody><tr><td>AREAS</td><td>エリア（範囲の塊）の個数</td><td><code>=AREAS((A1:B3,D1:E3))</code></td><td>2</td></tr><tr><td>ROWS</td><td>行数</td><td><code>=ROWS(A1:A10)</code></td><td>10</td></tr><tr><td>COLUMNS</td><td>列数</td><td><code>=COLUMNS(A1:E1)</code></td><td>5</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a></td><td>列番号</td><td><code>=COLUMN(C1)</code></td><td>3</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-row/">ROW関数</a></td><td>行番号</td><td><code>=ROW(A5)</code></td><td>5</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc18">どの関数を使うべき？</span></h3>



<ul class="wp-block-list"><li><strong>エリア（範囲の塊）がいくつあるか</strong>を知りたい → AREAS関数</li><li><strong>行数</strong>を数えたい → ROWS関数</li><li><strong>列数</strong>を数えたい → COLUMNS関数</li><li><strong>特定セルの列番号</strong>を知りたい → <a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a></li><li><strong>特定セルの行番号</strong>を知りたい → <a href="https://mashukabu.com/excel-function-howto-use-row/">ROW関数</a></li></ul>



<p class="wp-block-paragraph">「エリア数」と「セル数」の違いを押さえておけば、使い分けで迷うことはありません。</p>



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



<p class="wp-block-paragraph">AREAS関数は、参照に含まれるエリア（セル範囲の塊）の個数を返す関数です。</p>



<ul class="wp-block-list"><li><code>=AREAS(参照)</code> でエリアの数を取得できる</li><li>複数範囲を指定するときは<strong>括弧を二重にする</strong>のがポイント</li><li><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせると、名前定義の数を自動カウントできる</li><li><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>の領域番号と連携して、動的にデータを切り替えられる</li><li>「セルの個数」を数えたいときはROWS関数やCOLUMNS関数を使う</li></ul>



<p class="wp-block-paragraph">ニッチな関数ですが、名前定義を活用した集計シートや動的な参照切り替えで活躍します。ぜひ試してみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-row/">ROW関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">Excel関数 アルファベット順一覧</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別一覧</a></li><li><a href="https://mashukabu.com/excel-error-value-list/">エラー値の種類と対処法一覧</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-areas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのROW関数の使い方｜行の増減に強い連番と5つの実務パターン</title>
		<link>https://mashukabu.com/excel-function-howto-use-row/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-row/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 27 May 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[ROW関数]]></category>
		<category><![CDATA[SEQUENCE関数]]></category>
		<category><![CDATA[SMALL関数]]></category>
		<category><![CDATA[行番号]]></category>
		<category><![CDATA[連番]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2063</guid>

					<description><![CDATA[ExcelのROW関数の使い方を基本から応用まで解説。行の追加・削除に強い崩れない連番の作り方、INDEX×ROWで行を動的参照する方法、SMALL+IFの配列数式、FILTERやSEQUENCEとの使い分けまで実務5パターンを紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excelで連番を手入力していて、行を挿入したら番号がズレた経験ありませんか？　1つ2つならすぐ直せますが、100行を超えるリストだと修正漏れが出てきますよね。そんな悩みを解決するのが、ExcelのROW関数です。</p>



<p class="wp-block-paragraph">この記事では、ROW関数の基本から崩れない連番の作り方まで解説します。INDEX・SMALL・INDIRECTとの組み合わせなど、実務で使える5つのパターンを紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ROW関数とは？基本の使い方をおさらい</a><ol><li><a href="#toc2" tabindex="0">引数なし：入力セル自身の行番号を返す</a></li><li><a href="#toc3" tabindex="0">引数あり：任意のセルの行番号を取得する</a></li><li><a href="#toc4" tabindex="0">COLUMN関数との対称パターン表（行と列の整理）</a></li></ol></li><li><a href="#toc5" tabindex="0">崩れない連番｜行の増減に強い自動ナンバリング</a><ol><li><a href="#toc6" tabindex="0">手入力の連番が壊れる場面（行挿入・削除のあるある）</a></li><li><a href="#toc7" tabindex="0">ROW()-Nで1から始める思考ステップ</a></li><li><a href="#toc8" tabindex="0">ROW()-ROW(見出しセル)で開始行フリーにする</a></li><li><a href="#toc9" tabindex="0">M365スピル対応：SEQUENCE関数との比較</a></li></ol></li><li><a href="#toc10" tabindex="0">INDEX + ROW｜行番号を動的に切り替える</a><ol><li><a href="#toc11" tabindex="0">基本形：行番号をキーにした縦展開</a></li><li><a href="#toc12" tabindex="0">実際の数式：複数行を一括取得するサンプル</a></li></ol></li><li><a href="#toc13" tabindex="0">SMALL + IF + ROW｜条件付きデータ抽出の配列数式</a><ol><li><a href="#toc14" tabindex="0">ROWが行番号配列を生成する役割</a></li><li><a href="#toc15" tabindex="0">M365ではFILTER関数に置き換え</a></li></ol></li><li><a href="#toc16" tabindex="0">INDIRECT + ROWで動的セル参照</a></li><li><a href="#toc17" tabindex="0">FILTER・SEQUENCEでROW関数が不要になるケース</a><ol><li><a href="#toc18" tabindex="0">ROW関数が担っていた役割と現代的な代替</a></li><li><a href="#toc19" tabindex="0">それでもROW関数が必要な場面</a></li></ol></li><li><a href="#toc20" tabindex="0">ROW関数 よくある質問・エラー対処</a><ol><li><a href="#toc21" tabindex="0">#VALUE!・#REF!が出たときの確認ポイント</a></li><li><a href="#toc22" tabindex="0">ROWS関数との違いは？</a></li></ol></li><li><a href="#toc23" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ROW関数とは？基本の使い方をおさらい</span></h2>



<p class="wp-block-paragraph">ROW関数（読み：ロウ）は、セルの行番号を数値で返す関数です。1行目なら1、2行目なら2、10行目なら10を返します。名前のとおり「行（Row）」の番号を取得する、シンプルな関数です。</p>



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



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



<p class="wp-block-paragraph">引数は1つだけで、しかも省略もできます。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>参照</td><td>省略可</td><td>行番号を知りたいセルまたは範囲</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">それでは、具体的な使い方を見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc2">引数なし：入力セル自身の行番号を返す</span></h3>



<p class="wp-block-paragraph">引数を省略すると、数式を入力したセル自身の行番号を返します。</p>



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



<p class="wp-block-paragraph">たとえば、A3セルにこの数式を入れると「3」が返ります。A5なら「5」、A10なら「10」です。「いま自分がどの行にいるか」を取得したいときに便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc3">引数あり：任意のセルの行番号を取得する</span></h3>



<p class="wp-block-paragraph">引数にセル参照を指定すると、そのセルの行番号を返します。</p>



<pre class="wp-block-code"><code>=ROW(A1)    → 1
=ROW(D10)   → 10
=ROW(G5)    → 5</code></pre>



<p class="wp-block-paragraph">範囲を指定した場合は、先頭の行番号を返します。たとえば =ROW(A1:A5) は「1」です。Microsoft 365環境では、スピルで {1;2;3;4;5} と複数の行番号を返します。</p>



<h3 class="wp-block-heading"><span id="toc4">COLUMN関数との対称パターン表（行と列の整理）</span></h3>



<p class="wp-block-paragraph">ROW関数には、列番号を返す<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>という対になる関数があります。この2つは完全に対称です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>ROW()</th><th>COLUMN()</th></tr></thead><tbody><tr><td>返す値</td><td>行番号（縦方向）</td><td>列番号（横方向）</td></tr><tr><td>省略時</td><td>数式セルの行番号</td><td>数式セルの列番号</td></tr><tr><td>連番の方向</td><td>下にコピーで増える</td><td>右にコピーで増える</td></tr><tr><td>典型パターン</td><td>=ROW()-ROW($A$1)</td><td>=COLUMN()-COLUMN($A$1)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">COLUMN関数で横方向の連番を振った経験があれば、ROW関数はその縦方向バージョンだと考えてください。</p>



<h2 class="wp-block-heading"><span id="toc5">崩れない連番｜行の増減に強い自動ナンバリング</span></h2>



<p class="wp-block-paragraph">ROW関数が最も活躍するのは、縦方向の連番を自動生成する場面です。手入力の連番は、行の追加・削除であっさり壊れます。</p>



<h3 class="wp-block-heading"><span id="toc6">手入力の連番が壊れる場面（行挿入・削除のあるある）</span></h3>



<p class="wp-block-paragraph">連番を「1, 2, 3, 4&#8230;」と手入力していると、こんな問題が起きます。</p>



<ul class="wp-block-list"><li>途中に行を挿入すると、番号が飛ぶ</li><li>行を削除すると、番号が欠番になる</li><li>並べ替えをすると、連番がバラバラになる</li></ul>



<p class="wp-block-paragraph">10行程度ならすぐ振り直せます。でも数百行のリストだと、修正漏れが確実に発生しますよね。</p>



<h3 class="wp-block-heading"><span id="toc7">ROW()-Nで1から始める思考ステップ</span></h3>



<p class="wp-block-paragraph">ROW関数を使えば、連番が自動で更新されます。考え方は次の3ステップです。</p>



<ol class="wp-block-list"><li>ROW() で数式セルの行番号を取得する</li><li>見出し行の行数を引いて、1から始まるように調整する</li><li>下にコピーすれば自動で2, 3, 4&#8230;と増える</li></ol>



<p class="wp-block-paragraph">たとえば、1行目が見出しでA2セルからデータが始まる場合はこうなります。</p>



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



<p class="wp-block-paragraph">A2セルでは ROW() が2を返します。2 &#8211; 1 = 1です。A3なら3 &#8211; 1 = 2、A4なら4 &#8211; 1 = 3と、自動で連番になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">ROW()-ROW(見出しセル)で開始行フリーにする</span></h3>



<p class="wp-block-paragraph">=ROW()-1 には弱点があります。データの開始行が2行目以外だと、引く数を変えなければなりません。見出しが2行あれば =ROW()-2、5行目から始まるなら =ROW()-4 と、毎回計算が必要です。</p>



<p class="wp-block-paragraph">そこで、汎用的なのがこの書き方です。</p>



<pre class="wp-block-code"><code>=ROW()-ROW($A$1)</code></pre>



<p class="wp-block-paragraph">$A$1 は見出し行（連番の1つ上の行）を絶対参照で指定しています。データが何行目から始まっても、見出しセルを変えるだけで正しい連番になります。</p>



<p class="wp-block-paragraph">見出しが2行ある場合は、参照を $A$2 にするだけです。</p>



<pre class="wp-block-code"><code>=ROW()-ROW($A$2)</code></pre>



<p class="wp-block-paragraph">A3セルに入力すると、3 &#8211; 2 = 1。A4なら4 &#8211; 2 = 2と、正しく連番が振られます。開始行を気にしなくてよいので、テンプレートの使い回しにも向いていますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">M365スピル対応：SEQUENCE関数との比較</span></h3>



<p class="wp-block-paragraph">Microsoft 365をお使いなら、<a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数</a>でも縦方向の連番を生成できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>目的</th><th>ROW()（※M365）</th><th>SEQUENCE()</th></tr></thead><tbody><tr><td>1から10の連番</td><td>=ROW(A1:A10) → {1;2;&#8230;;10}</td><td>=SEQUENCE(10)</td></tr><tr><td>100から始まる連番</td><td>計算が必要</td><td>=SEQUENCE(10,1,100)</td></tr><tr><td>偶数だけの連番</td><td>直接指定できない</td><td>=SEQUENCE(5,1,2,2)</td></tr><tr><td>全バージョンで動作</td><td>ROW()-N なら全対応</td><td>Excel 2021以降のみ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">※ ROW()のスピル展開はMicrosoft 365（またはExcel 2021以降）のみ対応です。</p>



<p class="wp-block-paragraph">連番を振ることが目的で、開始値や増分を自由に設定したいならSEQUENCE関数が便利です。一方、すべてのExcelバージョンで動作する連番が必要な場面では、ROW関数が安定した選択肢になります。</p>



<h2 class="wp-block-heading"><span id="toc10">INDEX + ROW｜行番号を動的に切り替える</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>の行引数にROW関数を使うと、行番号を動的に変えられます。</p>



<h3 class="wp-block-heading"><span id="toc11">基本形：行番号をキーにした縦展開</span></h3>



<p class="wp-block-paragraph">INDEX関数の基本形はこちらです。</p>



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



<p class="wp-block-paragraph">この「行番号」の部分にROW関数を組み込むと、数式をコピーするだけで参照行が自動で変わります。</p>



<h3 class="wp-block-heading"><span id="toc12">実際の数式：複数行を一括取得するサンプル</span></h3>



<p class="wp-block-paragraph">たとえば、B列からE列のデータ表があり、別の場所に縦方向に展開したい場合です。</p>



<pre class="wp-block-code"><code>=INDEX($B$2:$B$20, ROW()-ROW($A$1))</code></pre>



<p class="wp-block-paragraph">この数式をA2セルに入力すると、ROW()-ROW($A$1) は 2-1 = 1で、範囲の1行目を返します。A3にコピーすれば2行目、A4なら3行目と、順番にデータを取得できます。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>と組み合わせれば、検索値に一致した行を柔軟に取得できますよ。</p>



<pre class="wp-block-code"><code>=INDEX($B$2:$E$20, MATCH($A2,$B$2:$B$20,0), COLUMN()-COLUMN($G$1))</code></pre>



<p class="wp-block-paragraph">この数式をH列以降に横にコピーすると、列番号が自動で変わります。INDEX + MATCH + COLUMNの3関数で、縦横どちらにも展開できる柔軟な数式になります。</p>



<h2 class="wp-block-heading"><span id="toc13">SMALL + IF + ROW｜条件付きデータ抽出の配列数式</span></h2>



<p class="wp-block-paragraph">ROW関数は、配列数式の中で行番号の配列を生成する役割も担います。レガシーExcel（Excel 2019以前）で条件に合うデータを順番に抽出する定番テクニックです。</p>



<h3 class="wp-block-heading"><span id="toc14">ROWが行番号配列を生成する役割</span></h3>



<p class="wp-block-paragraph">次の配列数式は、A列が「東京」の行のB列の値を上から順に取り出します。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX($B$2:$B$20, SMALL(IF($A$2:$A$20=&quot;東京&quot;, ROW($A$2:$A$20)-ROW($A$2)+1), ROW()-1)), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">※ Excel 2019以前では Ctrl + Shift + Enter で確定する必要があります。</p>



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



<ol class="wp-block-list"><li>ROW($A$2:$A$20)-ROW($A$2)+1 で1から始まる連番配列を生成</li><li>IF関数で条件に合う行だけ番号を残し、それ以外はFALSEにする</li><li><a href="https://mashukabu.com/excel-function-howto-use-small/">SMALL関数</a>で小さい順に番号を取り出す</li><li>INDEX関数でその番号の行のデータを返す</li></ol>



<p class="wp-block-paragraph">ROW関数が「行番号の配列を作る」という裏方の仕事を担っているわけです。<a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で該当データがなくなったときの #NUM! エラーを空文字に変換しています。</p>



<h3 class="wp-block-heading"><span id="toc15">M365ではFILTER関数に置き換え</span></h3>



<p class="wp-block-paragraph">Microsoft 365をお使いなら、上記の配列数式はFILTER関数1つで置き換えられます。</p>



<pre class="wp-block-code"><code>=FILTER($B$2:$B$20, $A$2:$A$20=&quot;東京&quot;)</code></pre>



<p class="wp-block-paragraph">SMALL + IF + ROWの配列数式に比べて、圧倒的にシンプルですよね。M365環境であれば、新しく数式を書くときはFILTER関数を使うのがおすすめです。</p>



<p class="wp-block-paragraph">ただし、既存のブックがExcel 2019以前で運用されている場合は、ROW関数を使った配列数式が現役で活躍します。</p>



<h2 class="wp-block-heading"><span id="toc16">INDIRECT + ROWで動的セル参照</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせると、行番号から動的にセル参照を生成できます。</p>



<p class="wp-block-paragraph">たとえば、ROW関数で行番号を取得し、ADDRESS関数でセル参照文字列に変換します。その参照文字列をINDIRECTで実際のセル参照に変えるパターンです。</p>



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



<p class="wp-block-paragraph">3つの関数を重ねていますが、処理の流れはシンプルです。ROW関数で行番号を取得し、ADDRESS関数でセル参照文字列（例: &#8220;A2&#8243;）に変換します。INDIRECTで、その文字列を実際のセル参照にしています。A3セルに入力した場合、「1行上のセル＝A2」の値を返します。</p>



<p class="wp-block-paragraph">もう1つの定番が、位置に依存しない固定配列を生成するパターンです。</p>



<pre class="wp-block-code"><code>=ROW(INDIRECT(&quot;1:10&quot;))</code></pre>



<p class="wp-block-paragraph">この数式は、どのセルに入力しても {1;2;3;4;5;6;7;8;9;10} の配列を返します。セルの位置に左右されない点が、SMALL + IF の配列数式で重宝されるポイントです。</p>



<h2 class="wp-block-heading"><span id="toc17">FILTER・SEQUENCEでROW関数が不要になるケース</span></h2>



<p class="wp-block-paragraph">Microsoft 365や Excel 2021以降では、ROW関数が担っていた役割の多くを新しい関数で代替できます。</p>



<h3 class="wp-block-heading"><span id="toc18">ROW関数が担っていた役割と現代的な代替</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>ROW関数の用途</th><th>代替関数</th><th>メリット</th></tr></thead><tbody><tr><td>連番の自動生成</td><td>SEQUENCE</td><td>開始値・増分を引数で指定できる</td></tr><tr><td>条件付きデータ抽出</td><td>FILTER</td><td>配列数式が不要でシンプル</td></tr><tr><td>行番号配列の生成</td><td>SEQUENCE</td><td>ROW(INDIRECT(&#8230;)) より直感的</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">新しく数式を書くときは、SEQUENCE・FILTERを優先した方が読みやすい数式になります。</p>



<h3 class="wp-block-heading"><span id="toc19">それでもROW関数が必要な場面</span></h3>



<p class="wp-block-paragraph">新しい関数を使っていても、ROW関数の出番がなくなるわけではありません。</p>



<ul class="wp-block-list"><li>Excel 2019以前の環境で連番や配列数式を使いたいとき</li><li>条件付き書式で「行番号が偶数なら色を付ける」判定をしたいとき</li><li>数式セル自身の位置を取得して、動的に処理を分岐させたいとき</li><li>VBAやマクロに行番号を渡したいとき</li></ul>



<p class="wp-block-paragraph">新しい関数で連番や抽出を処理しつつ、行番号の取得が必要な場面ではROW関数を使う。この使い分けがポイントですよ。</p>



<h2 class="wp-block-heading"><span id="toc20">ROW関数 よくある質問・エラー対処</span></h2>



<h3 class="wp-block-heading"><span id="toc21">#VALUE!・#REF!が出たときの確認ポイント</span></h3>



<p class="wp-block-paragraph">ROW関数でエラーが出るケースは多くありません。ただし、次の場面では注意が必要です。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>引数にテキスト文字列を指定した</td><td>セル参照に修正する</td></tr><tr><td>#REF!</td><td>参照先の行が削除された</td><td>数式を再入力する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">=ROW(&#8220;A1&#8221;) のようにダブルクォーテーションで囲むと、文字列として扱われ #VALUE! エラーになります。正しくは =ROW(A1) です。引用符なしのセル参照を使ってください。</p>



<p class="wp-block-paragraph">また、非連続範囲（例：=ROW((A1,A5))）は指定できません。連続した範囲で指定するようにしましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">ROWS関数との違いは？</span></h3>



<p class="wp-block-paragraph">名前が似ている<a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS関数</a>は、まったく別の関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>例</th></tr></thead><tbody><tr><td>ROW</td><td>指定セルの行番号を返す</td><td>=ROW(A3) → 3</td></tr><tr><td>ROWS</td><td>範囲の行数を返す</td><td>=ROWS(A1:A3) → 3</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ROW関数は「位置」を返し、ROWS関数は「個数」を返します。末尾にSが付くかどうかで意味が変わるので、混同しないように気をつけてくださいね。</p>



<p class="wp-block-paragraph">同じ関係がCOLUMN関数と<a href="https://mashukabu.com/excel-function-howto-use-columns/">COLUMNS関数</a>にもあります。</p>



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



<p class="wp-block-paragraph">ROW関数は、セルの行番号を返すシンプルな関数です。単体ではあまり目立ちませんが、他の関数と組み合わせることで真価を発揮します。</p>



<p class="wp-block-paragraph">この記事で紹介した活用パターンをおさらいします。</p>



<ul class="wp-block-list"><li>ROW()-ROW(見出しセル) で行の増減に強い連番を作る</li><li>INDEX + ROWで行番号を動的に切り替えて縦展開する</li><li>SMALL + IF + ROWで条件付きデータを順番に抽出する（レガシー環境向け）</li><li>INDIRECT + ROWで位置に依存しない固定配列を生成する</li><li>M365ではSEQUENCE・FILTERが代替になるが、行番号の取得にはROWが現役</li></ul>



<p class="wp-block-paragraph">まずは手入力の連番を =ROW()-ROW($A$1) に置き換えるところから試してみてください。行を挿入しても連番が崩れないので、リストのメンテナンスがぐっと楽になりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-row/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
