<?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>ADDRESS関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/address%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 12 Jun 2026 21:55:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>ADDRESS関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのADDRESS関数の使い方｜セル番地を自動作成</title>
		<link>https://mashukabu.com/spreadsheet-address-function/</link>
					<comments>https://mashukabu.com/spreadsheet-address-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:39 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[INDIRECT連携]]></category>
		<category><![CDATA[スプレッドシート関数]]></category>
		<category><![CDATA[セル番地]]></category>
		<category><![CDATA[動的参照]]></category>
		<category><![CDATA[参照形式]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4670</guid>

					<description><![CDATA[スプレッドシートのADDRESS関数の使い方を基本から解説。行番号・列番号からセル番地を自動作成する方法、INDIRECT関数との組み合わせ、参照形式の違いまで実例つきで紹介します。]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのADDRESS関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方・語源</a></li><li><a href="#toc3" tabindex="0">ADDRESS関数でできること</a></li></ol></li><li><a href="#toc4" tabindex="0">スプレッドシートのADDRESS関数の書き方（構文・引数）</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc7" tabindex="0">ADDRESS関数の基本的な使い方</a></li><li><a href="#toc8" tabindex="0">ADDRESS関数の実践的な使い方・応用例</a><ol><li><a href="#toc9" tabindex="0">ADDRESS+INDIRECTで動的セル参照を作る</a></li><li><a href="#toc10" tabindex="0">ROW・COLUMNと組み合わせて位置を動的に取得する</a></li><li><a href="#toc11" tabindex="0">別シートから動的にデータを取得する</a></li><li><a href="#toc12" tabindex="0">MATCH関数と組み合わせて検索結果の位置を表示する</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">似た関数との違い・使い分け</a></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">ポイントは「<strong>文字列を返す</strong>」ことです。ADDRESS関数だけではセルの値は取得できません。値が欲しいときは<a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>と組み合わせます。</p>



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



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



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



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>行</td><td>必須</td><td>セルの行番号（1以上の整数）</td></tr><tr><td>列</td><td>必須</td><td>セルの列番号（1以上の整数。A列=1、B列=2&#8230;）</td></tr><tr><td>参照の型</td><td>省略可</td><td>参照形式の種類（下表参照）。省略時は1（絶対参照）</td></tr><tr><td>A1形式</td><td>省略可</td><td>TRUE=A1形式（デフォルト）、FALSE=R1C1形式</td></tr><tr><td>シート名</td><td>省略可</td><td>シート名を文字列で指定。出力にシート名が付く</td></tr></tbody></table></figure>



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



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



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



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



<p class="wp-block-paragraph">もっともシンプルな使い方は、行番号と列番号を直接指定するパターンです。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">「セル番地を数式で自動生成したい」「参照先を動的に切り替えたい」――そんなときはADDRESS関数を活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-address-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのCOLUMN関数の使い方｜列番号を取得する方法</title>
		<link>https://mashukabu.com/spreadsheet-column-function/</link>
					<comments>https://mashukabu.com/spreadsheet-column-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 15:13:30 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[ROW関数]]></category>
		<category><![CDATA[列番号]]></category>
		<category><![CDATA[横方向連番]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4666</guid>

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



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



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



<p class="wp-block-paragraph">この記事では、COLUMN関数の基本から応用技まで紹介します。</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">スプレッドシートのCOLUMN関数とは？基本の仕組みを理解しよう</a><ol><li><a href="#toc2" tabindex="0">COLUMN関数の基本構文</a></li><li><a href="#toc3" tabindex="0">COLUMN()引数なしとCOLUMN(A1)の違い</a></li></ol></li><li><a href="#toc4" tabindex="0">COLUMN関数で横方向の連番を作る方法</a><ol><li><a href="#toc5" tabindex="0">月別・日別のヘッダーを自動で作る</a></li><li><a href="#toc6" tabindex="0">表の開始列がA列でない場合の対処法</a></li><li><a href="#toc7" tabindex="0">TEXT関数と組み合わせて月名を自動生成する</a></li></ol></li><li><a href="#toc8" tabindex="0">INDEX+COLUMNの組み合わせ技</a><ol><li><a href="#toc9" tabindex="0">INDEX関数と組み合わせて動的に列を切り替える</a></li></ol></li><li><a href="#toc10" tabindex="0">ADDRESS+COLUMNの組み合わせ技</a><ol><li><a href="#toc11" tabindex="0">ADDRESS関数と組み合わせてセル番地を自動生成する</a></li></ol></li><li><a href="#toc12" tabindex="0">COLUMN関数とROW関数の違い・使い分け</a><ol><li><a href="#toc13" tabindex="0">比較表</a></li></ol></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc15" tabindex="0">まとめ</a><ol><li><a href="#toc16" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



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



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



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



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



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



<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>=COLUMN([セル参照])</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つだけで、しかも省略できます。ROW関数と同じく、とてもシンプルな構文ですね。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-column-function/05_result_column-offset-serial.png/">_images/spreadsheet-column-function/05_result_column-offset-serial.png</a></p>



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



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



<p class="wp-block-paragraph">COLUMN関数で作った連番を月名に変換するテクニックです。</p>



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">C1セルから数式を入力し始める場合の例です。COLUMN()-COLUMN($C$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="toc10">ADDRESS+COLUMNの組み合わせ技</span></h2>



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



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



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



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



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



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



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



<p class="wp-block-paragraph">こうした動的参照は、次のような場面で便利です。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-row-function/">スプレッドシートのROW関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-index-function/">スプレッドシートのINDEX関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-match-function/">スプレッドシートのMATCH関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシートのADDRESS関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-column-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelで列番号をアルファベットに変換する方法｜COLUMN・ADDRESS・SUBSTITUTEの組み合わせ技</title>
		<link>https://mashukabu.com/excel-function-howto-get-column-alphabet/</link>
					<comments>https://mashukabu.com/excel-function-howto-get-column-alphabet/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 16 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[列番号変換]]></category>
		<category><![CDATA[関数の組み合わせ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2104</guid>

					<description><![CDATA[Excelで列番号をアルファベット（列名）に変換する数式を解説します。COLUMN・ADDRESS・SUBSTITUTEの3関数を組み合わせたコピペ用数式を、仕組みからステップごとに丁寧に説明。VBAでの実装例・よくあるエラー対処・実務応用パターンも紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excelで「この列って何列目？」はCOLUMN関数ですぐわかります。でも「列番号をアルファベットに変換したい」となると、専用の関数がないので困りますよね。</p>



<p class="wp-block-paragraph">たとえば、マクロで列を動的に指定したいとき、数式内で列名を文字列として扱いたいとき、表ヘッダーを自動生成したいとき。こういった場面で「列番号 → A, B, AA&#8230;」の変換が必要になります。</p>



<p class="wp-block-paragraph">実はCOLUMN・ADDRESS・SUBSTITUTEの3つを組み合わせれば、たった1行の数式で列のアルファベットを取得できます。この記事ではコピペで使える数式から仕組みの解説、実務での応用パターン、VBAでの実装まで幅広く解説します。</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">コピペで使える数式2パターン</a><ol><li><a href="#toc2" tabindex="0">パターン1：数式を入力したセルの列を取得する</a></li><li><a href="#toc3" tabindex="0">パターン2：列番号を指定して変換する</a></li></ol></li><li><a href="#toc4" tabindex="0">数式の仕組みをステップごとに解説</a><ol><li><a href="#toc5" tabindex="0">ステップ1：COLUMN関数で列番号を取得する</a></li><li><a href="#toc6" tabindex="0">ステップ2：ADDRESS関数でセル番地を作る</a></li><li><a href="#toc7" tabindex="0">ステップ3：SUBSTITUTE関数で行番号を取り除く</a></li></ol></li><li><a href="#toc8" tabindex="0">実務で使える応用パターン</a><ol><li><a href="#toc9" tabindex="0">パターン1：別のセルの列アルファベットを取得する</a></li><li><a href="#toc10" tabindex="0">パターン2：連番の列アルファベット一覧を作る</a></li><li><a href="#toc11" tabindex="0">パターン3：見出し行と組み合わせて列名を自動表示する</a></li><li><a href="#toc12" tabindex="0">パターン4：INDIRECTと組み合わせてセル範囲を動的に指定する</a></li><li><a href="#toc13" tabindex="0">パターン5：MATCH関数と組み合わせて列名を逆引きする</a></li></ol></li><li><a href="#toc14" tabindex="0">VBAで列番号をアルファベットに変換する</a></li><li><a href="#toc15" tabindex="0">よくあるミスと対処法</a><ol><li><a href="#toc16" tabindex="0">行番号にROW()を使うと誤置換が起きることがある</a></li><li><a href="#toc17" tabindex="0">#VALUE!エラーが出る場合</a></li><li><a href="#toc18" tabindex="0">列番号に0以下を指定した場合</a></li><li><a href="#toc19" tabindex="0">結果が数値になっている場合</a></li></ol></li><li><a href="#toc20" tabindex="0">使用する3つの関数の役割まとめ</a></li><li><a href="#toc21" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">コピペで使える数式2パターン</span></h2>



<p class="wp-block-paragraph">まず結論から。すぐに使える数式はこちらです。</p>



<h3 class="wp-block-heading"><span id="toc2">パターン1：数式を入力したセルの列を取得する</span></h3>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">数式を入力したセルの列アルファベットを返します。たとえばD列のセルに入力すると「D」、AN列なら「AN」が返ります。</p>



<h3 class="wp-block-heading"><span id="toc3">パターン2：列番号を指定して変換する</span></h3>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,列番号,4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">列番号を直接指定するパターンです。たとえば <code>=SUBSTITUTE(ADDRESS(1,40,4),1,"")</code> と書くと40列目の「AN」が返ります。</p>



<p class="wp-block-paragraph">セル参照で列番号を渡すこともできます。A1セルに列番号が入っている場合は次のようにします。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,A1,4),1,&quot;&quot;)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong><br>行番号は「1」に固定するのがポイントです。理由はこの記事の「よくあるミスと対処法」で説明しますね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">数式の仕組みをステップごとに解説</span></h2>



<p class="wp-block-paragraph">一見むずかしそうに見えますが、やっていることはシンプルです。3つの関数がそれぞれ1つずつ役割を担当しています。</p>



<h3 class="wp-block-heading"><span id="toc5">ステップ1：COLUMN関数で列番号を取得する</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>は、セルの列番号を数値で返す関数です。</p>



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



<p class="wp-block-paragraph">D列のセルで実行すると「4」が返ります。引数を省略すると、数式を入力したセル自身の列番号になりますよ。</p>



<p class="wp-block-paragraph">特定のセルを参照させるときは <code>=COLUMN(G5)</code> のように書きます。G5のG列は7列目なので「7」が返ります。</p>



<h3 class="wp-block-heading"><span id="toc6">ステップ2：ADDRESS関数でセル番地を作る</span></h3>



<p class="wp-block-paragraph">次に<a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a>を使って、列番号からセル番地の文字列を組み立てます。</p>



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



<p class="wp-block-paragraph">この数式は「1行目・4列目・相対参照」を意味します。結果は文字列「D1」です。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>意味</th><th>この数式での値</th></tr></thead><tbody><tr><td>行番号</td><td>セル番地の行</td><td>1（固定）</td></tr><tr><td>列番号</td><td>セル番地の列</td><td>COLUMN()の結果</td></tr><tr><td>参照の型</td><td>$記号の有無</td><td>4（相対参照＝$なし）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第3引数を「4」にするのがポイントです。「$D$1」のように$記号が付くと、あとで行番号だけを取り除くのが面倒になります。「4」を指定すれば「D1」のようにシンプルな形で返ってきますよ。</p>



<h3 class="wp-block-heading"><span id="toc7">ステップ3：SUBSTITUTE関数で行番号を取り除く</span></h3>



<p class="wp-block-paragraph">最後に<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で、セル番地から行番号部分を空文字に置換します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(&quot;D1&quot;, 1, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">「D1」から「1」を取り除いて「D」だけが残る、という仕組みです。</p>



<p class="wp-block-paragraph">これら3つのステップをまとめると、冒頭の数式になります。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, COLUMN(), 4), 1, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">COLUMN()→ADDRESS()→SUBSTITUTE()の順にデータが流れていくイメージですね。</p>



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



<p class="wp-block-paragraph">基本の数式がわかったところで、実務で役立つ応用パターンを5つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン1：別のセルの列アルファベットを取得する</span></h3>



<p class="wp-block-paragraph">特定のセルの列アルファベットを知りたい場合は、COLUMN関数に参照を渡します。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(G5),4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">G5セルの列番号（7）をCOLUMN関数が返し、結果は「G」になります。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン2：連番の列アルファベット一覧を作る</span></h3>



<p class="wp-block-paragraph">A1セルに「1」、A2に「2」&#8230;と列番号を並べておき、B列に次の数式を入れます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,A1,4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">下方向にコピーすれば、列番号に対応するアルファベットの一覧表が完成します。26列目まで入れればA〜Z、27列目以降はAA、AB&#8230;と2文字の列名も正しく返ってきますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン3：見出し行と組み合わせて列名を自動表示する</span></h3>



<p class="wp-block-paragraph">データの1行目に項目名がある表で、「何列目が何の項目か」を確認したいケースです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;列: &quot; &amp; B1</code></pre>



<p class="wp-block-paragraph">B1セルの上に配置すれば「B列: 売上」のように、列アルファベットと項目名をまとめて表示できます。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン4：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>=SUM(INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;2:&quot; &amp; SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;) &amp; &quot;100&quot;))</code></pre>



<p class="wp-block-paragraph">この数式は「数式を入力した列の2〜100行目を合計する」という意味です。列を増やしてもコピーするだけで自動的に集計列が切り替わるため、動的な集計表を作るときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン5：MATCH関数と組み合わせて列名を逆引きする</span></h3>



<p class="wp-block-paragraph">特定の見出し名が何列目にあるかを<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>で調べ、その列名を取得するパターンです。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,MATCH(&quot;売上&quot;,1:1,0),4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">1行目から「売上」という見出しを探し、その列アルファベットを返します。列の順番が変わっても自動追従するので、ダイナミックな表操作に使えます。</p>



<h2 class="wp-block-heading"><span id="toc14">VBAで列番号をアルファベットに変換する</span></h2>



<p class="wp-block-paragraph">マクロを使う場合は、<code>Cells(1, 列番号).Address(False, False)</code> で取得できます。</p>



<pre class="wp-block-code"><code>Sub GetColumnLetter()
    Dim colNum As Long
    Dim colLetter As String
    
    colNum = 5  ' E列を取得したい場合
    colLetter = Left(Cells(1, colNum).Address(False, False), _
                    Len(Cells(1, colNum).Address(False, False)) - 1)
    
    MsgBox colLetter  ' &quot;E&quot; と表示される
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Cells(1, 列番号).Address(False, False)</code> は「行=相対参照、列=相対参照」のセル番地（例: E1）を返します。そこから行番号の「1」を除けば列アルファベットだけが取れます。</p>



<p class="wp-block-paragraph">もっとシンプルな方法として、Split関数を使う書き方もあります。</p>



<pre class="wp-block-code"><code>Function ColNumToLetter(colNum As Long) As String
    ColNumToLetter = Split(Cells(1, colNum).Address(True, False), &quot;$&quot;)(0)
End Function</code></pre>



<p class="wp-block-paragraph">この関数はコードの中で <code>ColNumToLetter(5)</code> のように呼び出せばいつでも使えます。</p>



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



<h3 class="wp-block-heading"><span id="toc16">行番号にROW()を使うと誤置換が起きることがある</span></h3>



<p class="wp-block-paragraph">旧バージョンの数式 <code>=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")</code> には落とし穴があります。</p>



<p class="wp-block-paragraph">たとえば11行目のA列で実行してみましょう。ADDRESS関数は「A11」を返します。ここでSUBSTITUTEが「11」を空文字に置換すると、結果は「A」で正しく動きます。</p>



<p class="wp-block-paragraph">しかし問題が起きるケースがあります。行番号が変わるたびに置換対象の数値が変わるため、アルファベット部分に同じ数値が含まれる列では誤置換が起きる可能性があります。</p>



<p class="wp-block-paragraph"><strong>行番号を「1」に固定しておけば、こうした心配は一切不要です。</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">行番号1なら、末尾の「1」を消すだけで確実にアルファベットだけが残りますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">#VALUE!エラーが出る場合</span></h3>



<p class="wp-block-paragraph">COLUMN関数に無効な参照を渡すと<code>#VALUE!</code>エラーになることがあります。引数を省略するか、有効なセル参照を指定しているか確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc18">列番号に0以下を指定した場合</span></h3>



<p class="wp-block-paragraph">ADDRESS関数の列番号に0以下の値を渡すと<code>#VALUE!</code>エラーになります。列番号は1以上の整数を指定しましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">結果が数値になっている場合</span></h3>



<p class="wp-block-paragraph">数式バー上では正しく見えるのに、セルに数値が表示されている場合は、セルの書式設定が「数値」になっていることがあります。書式を「標準」か「文字列」に変更してください。</p>



<h2 class="wp-block-heading"><span id="toc20">使用する3つの関数の役割まとめ</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th><th>この数式での使い方</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a></td><td>列番号を取得</td><td>セルの列を数値で返す</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a></td><td>セル番地を文字列で生成</td><td>行番号1＋列番号→「A1」形式の文字列</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a></td><td>文字列を置換</td><td>セル番地から行番号「1」を除去</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">データの流れは <strong>列番号（数値）→ セル番地（文字列）→ アルファベットのみ（文字列）</strong> です。</p>



<h2 class="wp-block-heading"><span id="toc21">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph"><strong>Q. XFD列（16,384列目）など、3文字の列名でも動きますか？</strong></p>



<p class="wp-block-paragraph">動きます。<code>=SUBSTITUTE(ADDRESS(1,16384,4),1,"")</code> を試すと「XFD」が返ります。Excelの最大列（XFD）まで正しく変換できますよ。</p>



<p class="wp-block-paragraph"><strong>Q. Googleスプレッドシートでも同じ数式が使えますか？</strong></p>



<p class="wp-block-paragraph">使えます。COLUMN・ADDRESS・SUBSTITUTE関数はスプレッドシートにも同名で存在するため、まったく同じ数式が動きます。</p>



<p class="wp-block-paragraph"><strong>Q. 逆変換（アルファベット → 列番号）はできますか？</strong></p>



<p class="wp-block-paragraph">できます。<code>=COLUMN(INDIRECT(アルファベット & "1"))</code> の形で、任意のアルファベットから列番号を取得できます。たとえば <code>=COLUMN(INDIRECT("D1"))</code> で「4」が返ります。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>と組み合わせるのがシンプルですよ。</p>



<p class="wp-block-paragraph"><strong>Q. CELL関数では取得できないのですか？</strong></p>



<p class="wp-block-paragraph"><code>=CELL("address", A1)</code> で「$A$1」のような絶対参照の文字列は取れますが、列アルファベットだけを取り出すにはさらにSUBSTITUTEやLEFT関数で加工が必要です。SUBSTITUTE(ADDRESS(&#8230;))の数式のほうがシンプルに書けますよ。</p>



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



<p class="wp-block-paragraph">Excelで列番号をアルファベットに変換する数式は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>数式</th></tr></thead><tbody><tr><td>自セルの列を取得</td><td><code>=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"")</code></td></tr><tr><td>列番号を指定して変換</td><td><code>=SUBSTITUTE(ADDRESS(1,列番号,4),1,"")</code></td></tr><tr><td>別セルの列を取得</td><td><code>=SUBSTITUTE(ADDRESS(1,COLUMN(セル),4),1,"")</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは3つの関数の役割分担です。<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>で列番号を取得し、<a href="https://mashukabu.com/excel-function-howto-use-address/">ADDRESS関数</a>でセル番地の文字列を作り、<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で行番号を除去します。行番号は「1」に固定しておくのが安全ですよ。</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-match/">MATCH関数</a>との組み合わせでさらに柔軟な使い方もできます。列名の動的参照が必要になった場面で、ぜひ活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-get-column-alphabet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ADDRESS関数の使い方｜文字列が返る理由とINDIRECT連携で値を取る方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-address/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-address/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 04 Jun 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ADDRESS関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[INDIRECT関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2156</guid>

					<description><![CDATA[ExcelのADDRESS関数は行番号・列番号からセル番地の文字列を作る関数です。なぜ値が取れないのか、INDIRECT連携で値を取る方法、MATCH・MAXと組み合わせた動的参照パターン、INDEX関数で十分なケースの見分け方までを実務例で解説します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「ADDRESS関数を使ってみたら、値じゃなくて文字列が出てきた」<br>そんな経験はありませんか。</p>



<p class="wp-block-paragraph">ExcelのADDRESS関数は、行番号と列番号から「セル番地」を作る関数です。<br>ただし返ってくるのは番地の「文字列」であって、そのセルの「値」ではありません。<br>ここでつまずく人がとても多いんです。</p>



<p class="wp-block-paragraph">この記事では、ADDRESS関数の使い方を「文字列しか返らない理由」から整理します。<br>そのうえで、INDIRECT関数と組み合わせて値を取る方法を解説しますね。<br>さらにMATCHを加えた動的参照、最終行の値を取るパターン、INDEXとの使い分けまで進みます。<br>読み終わるころには、「いつADDRESSを使い、いつ使わないか」がはっきりわかりますよ。</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">ADDRESS関数とは？返るのは「文字列」であって「値」ではない</a><ol><li><a href="#toc2" tabindex="0">ADDRESS単体 vs INDIRECT(ADDRESS()) の2行比較</a></li><li><a href="#toc3" tabindex="0">ADDRESS関数でできること・できないこと</a></li></ol></li><li><a href="#toc4" tabindex="0">ADDRESS関数の基本構文と5つの引数</a><ol><li><a href="#toc5" tabindex="0">参照の種類（abs_num）1〜4の使い分け判断表</a></li><li><a href="#toc6" tabindex="0">参照形式（A1形式 vs R1C1形式）</a></li><li><a href="#toc7" tabindex="0">別シート・別ブックの指定方法</a></li></ol></li><li><a href="#toc8" tabindex="0">ADDRESS だけでは値を取れない――INDIRECT との連携が必須</a><ol><li><a href="#toc9" tabindex="0">INDIRECT(ADDRESS()) の基本パターン</a></li><li><a href="#toc10" tabindex="0">シート名を動的に切り替える実務パターン</a></li><li><a href="#toc11" tabindex="0">MATCH+ADDRESS+INDIRECT で行を動的に特定する</a></li></ol></li><li><a href="#toc12" tabindex="0">ADDRESS が不要なケース――INDEX で十分な場面を整理する</a><ol><li><a href="#toc13" tabindex="0">同一シート内の値取得は INDEX+MATCH が正解</a></li><li><a href="#toc14" tabindex="0">ADDRESS+INDIRECT が必要な唯一の場面（シート名の動的切り替え）</a></li></ol></li><li><a href="#toc15" tabindex="0">列番号をアルファベットに変換する（abs_num=4 の使いどころ）</a><ol><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li></ol></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ADDRESS関数とは？返るのは「文字列」であって「値」ではない</span></h2>



<p class="wp-block-paragraph">ExcelのADDRESS関数は、行番号と列番号を渡すとセル番地を返す関数です。<br>たとえば <code>=ADDRESS(3,2)</code> と入力すると、<code>$B$3</code> が返ります。<br>B列（2列目）の3行目という意味の番地ですね。</p>



<p class="wp-block-paragraph">ここで一番大事なポイントを最初に押さえましょう。<br>返ってくる <code>$B$3</code> は、ただの<strong>文字列</strong>です。<br>B3セルに入っている値ではありません。</p>



<p class="wp-block-paragraph">つまりADDRESS単体では、目的のセルの中身を取り出せないんです。<br>「ADDRESSを使ったのに値が取れない」と感じるのは、仕様どおりの動作です。<br>故障でも数式ミスでもありませんよ。</p>



<p class="wp-block-paragraph">なお「ADDRESS」は「アドレス」と読みます。<br>英語の address（住所・所在地）が語源で、セルの「住所」を文字で表す関数だと考えるとイメージしやすいですね。</p>



<h3 class="wp-block-heading"><span id="toc2">ADDRESS単体 vs INDIRECT(ADDRESS()) の2行比較</span></h3>



<p class="wp-block-paragraph">「文字列しか返らない」の正体を、次の表で直感的につかんでください。<br>B3セルに <code>1000</code> という値が入っている前提です。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>返り値</th><th>正体</th></tr></thead><tbody><tr><td><code>=ADDRESS(3,2)</code></td><td><code>$B$3</code></td><td>セル番地の<strong>文字列</strong></td></tr><tr><td><code>=INDIRECT(ADDRESS(3,2))</code></td><td><code>1000</code></td><td>B3セルの<strong>値</strong></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">違いは1関数だけです。<br>ADDRESSの外側を<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>で包むと、文字列がセル参照に変わり、値が取れます。</p>



<p class="wp-block-paragraph">INDIRECT関数は「文字列で書かれた番地を、本物のセル参照として読み直す」関数です。<br>ADDRESSが番地を「書き」、INDIRECTがそれを「読む」。<br>この2段構えが、ADDRESS活用の基本形だと覚えてください。</p>



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



<p class="wp-block-paragraph">役割を整理しておきましょう。</p>



<ul class="wp-block-list"><li>できること：行番号・列番号から番地の文字列を組み立てる</li><li>できること：別シート名つきの番地を作る（後述）</li><li>できないこと：そのセルの値を直接取得する</li><li>できないこと：番地から逆に「行・列番号」を取り出す</li></ul>



<p class="wp-block-paragraph">値を取りたいならINDIRECT、番地を文字列のまま使いたいならADDRESS単体。<br>この線引きが、これ以降のすべてのパターンの土台になります。</p>



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



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



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



<p class="wp-block-paragraph">必ず指定するのは「行番号」と「列番号」の2つだけです。<br>残り3つは省略できます。<br>それぞれの役割を表で確認しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>内容</th></tr></thead><tbody><tr><td>行番号</td><td>必須</td><td>セルの行番号（1以上の整数）</td></tr><tr><td>列番号</td><td>必須</td><td>セルの列番号（A=1、B=2…）</td></tr><tr><td>参照の種類（abs_num）</td><td>省略可</td><td>絶対参照／相対参照を1〜4で指定</td></tr><tr><td>参照形式（a1）</td><td>省略可</td><td>TRUE=A1形式、FALSE=R1C1形式</td></tr><tr><td>シート名</td><td>省略可</td><td>別シート参照時にシート名を文字列で指定</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">行番号・列番号だけ渡した場合、参照の種類は「1」になります。<br>つまり省略すると完全な絶対参照（行も列も <code>$</code> 付き）です。</p>



<h3 class="wp-block-heading"><span id="toc5">参照の種類（abs_num）1〜4の使い分け判断表</span></h3>



<p class="wp-block-paragraph">第3引数の <code>abs_num</code> は、絶対参照（<code>$</code>で固定）と相対参照（固定なし）を切り替えます。<br>絶対参照はコピーしても番地がずれない参照、相対参照はコピー方向にずれる参照ですね。</p>



<p class="wp-block-paragraph"><code>=ADDRESS(3,2,□)</code> の□に1〜4を入れたときの出力は、次のとおり検証済みです。</p>



<figure class="wp-block-table"><table><thead><tr><th>abs_num</th><th>行</th><th>列</th><th><code>ADDRESS(3,2,n)</code> の出力</th><th>主な使いどころ</th></tr></thead><tbody><tr><td>1（省略時）</td><td>絶対</td><td>絶対</td><td><code>$B$3</code></td><td>番地を固定したいとき</td></tr><tr><td>2</td><td>絶対</td><td>相対</td><td><code>B$3</code></td><td>横方向コピーで行だけ固定</td></tr><tr><td>3</td><td>相対</td><td>絶対</td><td><code>$B3</code></td><td>縦方向コピーで列だけ固定</td></tr><tr><td>4</td><td>相対</td><td>相対</td><td><code>B3</code></td><td>列名変換など <code>$</code> を消したいとき</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">判断軸はシンプルです。<br>「コピーしたときに、行と列のどちらをずらしたくないか」で選びます。</p>



<p class="wp-block-paragraph">実務で意外と出番が多いのが <code>abs_num=4</code>（相対参照）です。<br><code>$</code> が一切付かない <code>B3</code> 形式が返るので、後で文字を加工しやすいんですね。<br>列番号をアルファベットに変換する場面で活躍します（後述）。</p>



<h3 class="wp-block-heading"><span id="toc6">参照形式（A1形式 vs R1C1形式）</span></h3>



<p class="wp-block-paragraph">第4引数の <code>a1</code> は、番地の表記スタイルを決めます。</p>



<figure class="wp-block-table"><table><thead><tr><th>a1</th><th>形式</th><th><code>ADDRESS(3,4,1,a1)</code> の出力</th></tr></thead><tbody><tr><td>TRUE（省略時）</td><td>A1形式</td><td><code>$D$3</code></td></tr><tr><td>FALSE</td><td>R1C1形式</td><td><code>R3C4</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">R1C1形式は「行3・列4」のように番号で表す書き方です。<br>主にVBA・マクロ開発で使われます。<br>普通のワークシートではA1形式を使うので、この引数は省略でかまいません。</p>



<p class="wp-block-paragraph">なお、INDIRECTと組み合わせてR1C1形式を使う場合は注意が必要です。<br><code>=INDIRECT(ADDRESS(3,4,1,FALSE), FALSE)</code> のように、INDIRECT側の第2引数もFALSEにそろえてください。<br>片方だけR1C1にすると参照がかみ合わず、エラーになります。</p>



<h3 class="wp-block-heading"><span id="toc7">別シート・別ブックの指定方法</span></h3>



<p class="wp-block-paragraph">第5引数にシート名を渡すと、シート名つきの番地が返ります。</p>



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



<p class="wp-block-paragraph">この結果は <code>'1月'!$A$1</code> です。<br>シート名が <code>'1月'</code> とシングルクォートで囲まれている点に注目してください。<br>ADDRESS関数は、必要に応じてクォートを自動で付けてくれます。</p>



<p class="wp-block-paragraph">別ブックを参照したいときは、シート名を <code>"[Book2.xlsx]Sheet1"</code> の形式で渡します。<br>ただしADDRESSはあくまで「文字列」を作るだけです。<br>この文字列から実際に値を取るには、やはりINDIRECTが必要になります。</p>



<h2 class="wp-block-heading"><span id="toc8">ADDRESS だけでは値を取れない――INDIRECT との連携が必須</span></h2>



<p class="wp-block-paragraph">ここからが本題です。<br>ADDRESSが作った番地の文字列を、INDIRECTで「値」に変えていきます。</p>



<h3 class="wp-block-heading"><span id="toc9">INDIRECT(ADDRESS()) の基本パターン</span></h3>



<p class="wp-block-paragraph">セルA1に行番号「5」、B1に列番号「3」が入っているとします。<br>この2つを使ってC5セルの値を取りたい、という場面です。</p>



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



<p class="wp-block-paragraph">処理は3ステップで進みます。</p>



<ol class="wp-block-list"><li><code>ADDRESS(5, 3)</code> が <code>$C$5</code> という文字列を作る</li><li><code>INDIRECT("$C$5")</code> がその文字列をセル参照に読み直す</li><li>C5セルの値が返る</li></ol>



<p class="wp-block-paragraph">A1やB1の数字を書き換えるだけで、参照先がその場で切り替わります。<br>番地を計算で組み立てられるのが、この組み合わせの強みですね。</p>



<h3 class="wp-block-heading"><span id="toc10">シート名を動的に切り替える実務パターン</span></h3>



<p class="wp-block-paragraph">INDIRECT＋ADDRESSが本当に光るのは、シート名を変数化したいときです。<br>月別シート（1月、2月…）から、選んだ月のデータを取りたい場面を考えましょう。<br>セルC1にシート名「1月」、A1に行番号、B1に列番号が入っているとします。</p>



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



<p class="wp-block-paragraph">C1を「2月」「3月」と変えるだけで、取得先シートが丸ごと切り替わります。<br>ADDRESSが <code>'2月'!$C$5</code> のような番地を作り、INDIRECTが値を取ってくる流れです。</p>



<p class="wp-block-paragraph">これは通常の参照では作りにくい仕組みです。<br>セルの値でシートを切り替えられる点が、後述するINDEXとの決定的な違いになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>INDIRECTは「揮発性関数」です。<br>揮発性とは、シート上で何か変更があるたびに再計算される性質のこと。<br>そのため数千セル単位で多用すると、ブックが重くなります。<br>同一シート内の単純な値取得なら、後述のINDEXを使うほうが軽快ですよ。<br>INDIRECTの揮発性については<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数の記事</a>で詳しく解説しています。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc11">MATCH+ADDRESS+INDIRECT で行を動的に特定する</span></h3>



<p class="wp-block-paragraph">実務では「検索値から該当行を探し、その値を取る」パターンが頻出します。<br><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>を加えると、これが実現できます。<br>MATCHは「検索値が範囲の何番目にあるか」を番号で返す関数です。</p>



<p class="wp-block-paragraph">3関数の役割分担は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th></tr></thead><tbody><tr><td>MATCH</td><td>検索値が何行目かを返す</td></tr><tr><td>ADDRESS</td><td>行番号・列番号から番地を作る</td></tr><tr><td>INDIRECT</td><td>番地の文字列から値を取る</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">月次集計表から当月データを抽出する</h4>



<p class="wp-block-paragraph">A列に月名（1月〜12月）、B列に売上が入った集計表があるとします。<br>セルD1に「3月」と入れて、その売上を取り出してみましょう。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(MATCH(D1, A:A, 0), 2))</code></pre>



<p class="wp-block-paragraph">流れを分解します。</p>



<ol class="wp-block-list"><li><code>MATCH(D1, A:A, 0)</code> がA列で「3月」の行番号を返す（仮に4行目なら <code>4</code>）</li><li><code>ADDRESS(4, 2)</code> が <code>$B$4</code> を作る</li><li><code>INDIRECT("$B$4")</code> がB4の売上値を返す</li></ol>



<p class="wp-block-paragraph">D1を「4月」に変えれば、参照行が自動でずれて値が切り替わります。<br>「探す→番地を作る→値を取る」の3ステップだと考えれば、難しくありませんね。</p>



<h4 class="wp-block-heading">MAX+MATCH+ADDRESS+INDIRECT で最終行の値を常に取得する</h4>



<p class="wp-block-paragraph">「リストの一番下に追加した最新データを、いつも自動で表示したい」。<br>そんなときは、最終行を計算で特定するパターンが便利です。</p>



<p class="wp-block-paragraph">まず、データが連続している（途中に空白がない）場合はCOUNTAが使えます。<br>B列の最終行の値を取る数式はこうです。</p>



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



<p class="wp-block-paragraph"><code>COUNTA(B:B)</code> がB列の入力済みセル数を数え、それがそのまま最終行番号になります。<br>ただし見出し行を含めてカウントするので、データの行数と最終行番号がずれないか確認してください。</p>



<p class="wp-block-paragraph">途中に空白行が混じる場合は、MAXとIFで「値が入っている最後の行」を探します。<br>こちらは配列数式です。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(MAX(IF(B:B&lt;&gt;&quot;&quot;, ROW(B:B))), 2))</code></pre>



<p class="wp-block-paragraph">仕組みを分解しましょう。</p>



<ol class="wp-block-list"><li><code>IF(B:B<>"", ROW(B:B))</code> が、値のある行だけ行番号を返す</li><li><code>MAX(...)</code> がその中で一番大きい行番号、つまり最終行を取り出す</li><li><code>ADDRESS(最終行, 2)</code> が番地を作り、<code>INDIRECT</code> が値を取る</li></ol>



<p class="wp-block-paragraph">この数式は配列として処理されます。<br>スピル対応のExcel（Microsoft 365など）ではそのまま確定できます。<br>古いバージョンでは <code>Ctrl+Shift+Enter</code> で確定してください。</p>



<p class="wp-block-paragraph">新しい行を追加するたびに、表示が自動で最新値に追従します。<br>最終行を手で書き換える手間がなくなりますよ。</p>



<h2 class="wp-block-heading"><span id="toc12">ADDRESS が不要なケース――INDEX で十分な場面を整理する</span></h2>



<p class="wp-block-paragraph">ここで正直にお伝えします。<br>ADDRESS＋INDIRECTは便利ですが、「使わなくていい場面」も多いんです。<br>多くの解説はこの組み合わせを推しますが、過剰になりやすい点は知っておくべきです。</p>



<h3 class="wp-block-heading"><span id="toc13">同一シート内の値取得は INDEX+MATCH が正解</span></h3>



<p class="wp-block-paragraph">「行番号と列番号から値を取る」だけなら、<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>で完結します。<br>先ほどの月次集計の例は、INDEX＋MATCHでこう書けます。</p>



<pre class="wp-block-code"><code>=INDEX(B:B, MATCH(D1, A:A, 0))</code></pre>



<p class="wp-block-paragraph">INDIRECT＋ADDRESS版と結果は同じです。<br>しかし違いは小さくありません。</p>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>INDEX+MATCH</th><th>INDIRECT+ADDRESS</th></tr></thead><tbody><tr><td>処理速度</td><td>高速（参考値：約0.001秒）</td><td>低速（参考値：約5.2秒）</td></tr><tr><td>揮発性</td><td>なし（必要時だけ再計算）</td><td>あり（変更のたび再計算）</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>やや複雑</td></tr><tr><td>別シートの動的切り替え</td><td>不可</td><td>可能</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">速度の参考値には大きな差があります（およそ5,000倍）。<br>測定環境による参考値ですが、傾向としてINDEXが軽いのは確かです。<br>同一シート内のデータ取得なら、迷わずINDEX＋MATCHを選んでください。</p>



<h3 class="wp-block-heading"><span id="toc14">ADDRESS+INDIRECT が必要な唯一の場面（シート名の動的切り替え）</span></h3>



<p class="wp-block-paragraph">ではADDRESS＋INDIRECTの出番はどこか。<br>答えはほぼ1つ、「シート名をセルの値で切り替えたいとき」です。</p>



<p class="wp-block-paragraph">INDEX関数は、参照範囲のシートを変数で差し替えられません。<br>「1月」シートと「2月」シートを、セルの入力で切り替える――これはINDEXには無理です。<br>ここだけはINDIRECT＋ADDRESSの独壇場になります。</p>



<p class="wp-block-paragraph">判断はこの一言で済みます。<br>「シート名を動的に変えたい？」がYesならINDIRECT＋ADDRESS、NoならINDEX。<br>迷ったらまずINDEXを試す、と覚えておくと失敗しませんよ。</p>



<h2 class="wp-block-heading"><span id="toc15">列番号をアルファベットに変換する（abs_num=4 の使いどころ）</span></h2>



<p class="wp-block-paragraph">最後に、ADDRESSならではの便利ワザを紹介します。<br>「列番号5をアルファベットの『E』で表示したい」といった変換です。<br>ここで <code>abs_num=4</code>（相対参照）が効いてきます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, 5, 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">この数式は <code>E</code> を返します。<br>仕組みは2ステップです。</p>



<ol class="wp-block-list"><li><code>ADDRESS(1, 5, 4)</code> が <code>E1</code>（<code>$</code>なしの相対参照）を作る</li><li><code>SUBSTITUTE(..., "1", "")</code> が「1」を消し、列名 <code>E</code> だけが残る</li></ol>



<p class="wp-block-paragraph">第1引数を「1」に固定しているのがコツです。<br>行番号を1にしておけば、消すべき数字が必ず行番号の「1」だけになります。<br>列名のアルファベットには数字が含まれないので、SUBSTITUTEで「1」を消せば列名がきれいに残るわけです。</p>



<p class="wp-block-paragraph">2桁の列にも対応します。<br>列番号28なら、<code>ADDRESS(1, 28, 4)</code> が <code>AB1</code> を作り、結果は <code>AB</code> です。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, 28, 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">今いるセルの列名を知りたいときは、<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>と組み合わせます。</p>



<pre class="wp-block-code"><code>=SUBSTITUTE(ADDRESS(1, COLUMN(), 4), &quot;1&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">列番号からアルファベットへの変換は、ほかの方法もあります。<br><a href="https://mashukabu.com/excel-function-howto-get-column-alphabet/">列番号をアルファベットに変換する方法</a>で、別アプローチも含めて詳しく解説していますよ。</p>



<p class="wp-block-paragraph">なお、Googleスプレッドシートでも同じ5引数構文でADDRESSが使えます。<br>Sheetsで使いたい方は<a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシートのADDRESS関数</a>を参照してください。</p>



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



<p class="wp-block-paragraph">ADDRESSとINDIRECT連携で出やすいエラーを2つ整理します。</p>



<p class="wp-block-paragraph"><strong>#VALUE!エラー</strong>は、ADDRESSの引数自体に問題があるサインです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処</th></tr></thead><tbody><tr><td>行番号・列番号が0以下</td><td>1以上の整数を指定する</td></tr><tr><td>行番号・列番号が数値でない</td><td>文字列が混入していないか確認する</td></tr><tr><td>abs_numが1〜4以外</td><td>1〜4のいずれかを指定する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば <code>=ADDRESS(0, 3)</code> は #VALUE! になります。<br>行番号は必ず1以上にしてください。</p>



<p class="wp-block-paragraph"><strong>#REF!エラー</strong>は、INDIRECTと組み合わせたときに出ます。<br>ADDRESS単体は正しくても、参照先が見つからないと発生します。<br>主な原因は2つです。</p>



<ul class="wp-block-list"><li>存在しないシート名を参照している（スペルミス・削除済みシート）</li><li>シート名にスペースや記号があり、クォートで囲めていない</li></ul>



<p class="wp-block-paragraph">ADDRESSの第5引数でシート名を渡せば、クォートは自動で付きます。<br>一方、自分で文字列結合して番地を作っている場合は要注意です。<br>クォートを手で付け忘れると #REF! になります。<br>エラー時はまず「シート名が本当に存在するか」を確認してくださいね。</p>



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



<p class="wp-block-paragraph">ADDRESS関数は、行番号と列番号から「セル番地の文字列」を作る関数です。<br>返るのは文字列であって値ではない、という一点を押さえれば迷いません。</p>



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



<ul class="wp-block-list"><li><code>=ADDRESS(3,2)</code> は <code>$B$3</code>、つまり番地の<strong>文字列</strong>を返す</li><li>値を取るには <code>INDIRECT(ADDRESS(...))</code> で文字列を参照に変える</li><li><code>abs_num</code> 1〜4は「コピー方向で何を固定したいか」で選ぶ</li><li>MATCHを足すと検索値から動的に値を取れる</li><li>MAX+IFを足せば、空白混じりでも最終行の値を取得できる</li><li>同一シート内ならINDEX＋MATCHが高速で正解</li><li>ADDRESS＋INDIRECTの出番は「シート名の動的切り替え」にほぼ限られる</li><li><code>abs_num=4</code> とSUBSTITUTEで列番号をアルファベットに変換できる</li></ul>



<p class="wp-block-paragraph">ADDRESSは単体ではなく、<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>と組み合わせてこそ真価を発揮します。<br>ただし、なんでもADDRESS＋INDIRECTにせず、同一シートなら<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>を優先する。<br>この使い分けができれば、あなたの数式は速くて読みやすいものになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
