<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>動的セル参照 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e5%8b%95%e7%9a%84%e3%82%bb%e3%83%ab%e5%8f%82%e7%85%a7/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 15 Aug 2026 13:15:12 +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>動的セル参照 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ADDRESS関数の使い方｜検索した値のセル番地を出す方法</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[CELL関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[セル番地取得]]></category>
		<category><![CDATA[動的セル参照]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2156</guid>

					<description><![CDATA[ExcelのADDRESS関数の使い方を、行番号・列番号からセル番地を作る基本と5つの引数から解説します。MATCHと組み合わせて検索した値のセル番地を表示する実務パターン、CELL関数との使い分け、エラーは出ないのに番地が1行ズレる3つの症状と直し方まで、コピーして使える式つきで整理しました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「この金額、どのセルに入ってる?」</p>



<p class="wp-block-paragraph">同僚にそう聞かれて、大きな表を上から目で追った経験はありませんか。</p>



<p class="wp-block-paragraph">行数が増えるほど、番地探しは面倒になります。しかも手で控えた番地は、行を1本挿した瞬間に古くなってしまう。チェック表に書いた「B15」が、翌日には別のセルを指しているわけです。</p>



<p class="wp-block-paragraph">ExcelのADDRESS関数は、この「セルの住所探し」を数式に任せるための関数。行番号と列番号を渡すと、<code>$B$3</code> のような番地を返してくれます。MATCH関数と組み合わせれば、検索でヒットした値の番地を自動で表示できますよ。</p>



<p class="wp-block-paragraph">この記事では、ADDRESS関数の使い方を基本構文と5つの引数から整理します。そのうえで「値から番地を出す」実務パターンへ進みましょう。最後は、エラーが出ないのに番地がズレる症状の直し方まで扱います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ADDRESS関数とは？行番号と列番号から「セル番地」を作る関数</a><ol><li><a href="#toc2" tabindex="0">ADDRESS関数が返すのは番地そのもの（$B のような文字列）</a></li><li><a href="#toc3" tabindex="0">何に使えるのか――位置をメモ・連絡・チェックに残す</a></li><li><a href="#toc4" tabindex="0">ADDRESSを使うべきか3秒で決まる判断フロー</a></li></ol></li><li><a href="#toc5" tabindex="0">ADDRESS関数の基本構文と5つの引数</a><ol><li><a href="#toc6" tabindex="0">第1・第2引数（行番号・列番号）――まずはこれだけで動く</a></li><li><a href="#toc7" tabindex="0">第3引数 abs_num 1〜4――コピーしたとき何を固定したいかで選ぶ</a></li><li><a href="#toc8" tabindex="0">第4引数 A1形式とR1C1形式の違い</a></li><li><a href="#toc9" tabindex="0">第5引数 シート名――スペース入りはクォートが自動で付く</a></li><li><a href="#toc10" tabindex="0">ADDRESS(0,3) が #VALUE! になる理由</a></li></ol></li><li><a href="#toc11" tabindex="0">検索でヒットした値のセル番地を出す（ADDRESS×MATCH）</a><ol><li><a href="#toc12" tabindex="0">ステップ1 行だけ分かればいい場合</a></li><li><a href="#toc13" tabindex="0">ステップ2 行と列の両方を検索する場合</a></li><li><a href="#toc14" tabindex="0">ステップ3 表の左上がA1でないときの起点合わせ</a></li><li><a href="#toc15" tabindex="0">CELL(&#8220;address&#8221;, INDEX(&#8230;)) との使い分け早見表</a></li></ol></li><li><a href="#toc16" tabindex="0">エラーは出ないのに番地がズレる3つの症状と直し方</a><ol><li><a href="#toc17" tabindex="0">症状1 MATCHの戻り値は相対位置――範囲を絞った瞬間に1行ズレる</a></li><li><a href="#toc18" tabindex="0">症状2 シート名を渡し忘れて「今いるシート」の同じ番地を指す</a></li><li><a href="#toc19" tabindex="0">症状3 COUNTAの最終行が見出し行・空白行の分だけズレる</a></li><li><a href="#toc20" tabindex="0">#REF! が出たときはADDRESS側ではなく参照側の問題</a></li></ol></li><li><a href="#toc21" tabindex="0">ADDRESSで作った番地から値を取る（連携は最小限でいい）</a><ol><li><a href="#toc22" tabindex="0">ADDRESS単体とINDIRECT併用の2行比較</a></li><li><a href="#toc23" tabindex="0">シート名を切り替えたいなら設計の本体はINDIRECT側</a></li><li><a href="#toc24" tabindex="0">Googleスプレッドシートでも引数の構成は同じ</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ｜ADDRESS関数は「番地を出したいとき」に使う</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ADDRESS関数とは？行番号と列番号から「セル番地」を作る関数</span></h2>



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



<p class="wp-block-paragraph">たとえば <code>=ADDRESS(3,2)</code> と入力すると、<code>$B$3</code> が返ります。2列目（B列）の3行目、という意味の番地。</p>



<p class="wp-block-paragraph">指定する順番が「行 → 列」である点だけ気をつけてください。「B3」という普段の表記とは逆順なので、ここは最初につまずきやすいところ。</p>



<p class="wp-block-paragraph">必須の引数は行番号と列番号の2つだけ。残り3つは省略できるので、まずはこの短い形から試すのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc2">ADDRESS関数が返すのは番地そのもの（$B のような文字列）</span></h3>



<p class="wp-block-paragraph">ADDRESS関数の戻り値は、セル参照を表すテキスト文字列です。B3セルに入っている値ではありません。この一点さえ押さえれば、あとの応用はすべて素直につながります。</p>



<p class="wp-block-paragraph">「値が取れない」と感じるのは仕様どおりの動作で、故障でも数式ミスでもないんです。むしろ文字列で返ること自体が、この関数の使いどころ。</p>



<p class="wp-block-paragraph">文字列だからこそ、そのまま画面に表示できます。<code>&</code> でメッセージに連結したり、コピーしてメールに貼ったりもできるわけです。</p>



<h3 class="wp-block-heading"><span id="toc3">何に使えるのか――位置をメモ・連絡・チェックに残す</span></h3>



<p class="wp-block-paragraph">番地を文字列で取り出せると、こんな場面で効いてきます。</p>



<ul class="wp-block-list"><li>「数字が合わないのはこのセル」と、番地つきで同僚に連絡する</li><li>検算シートに「参照元はここ」という記録を残す</li><li>在庫表の該当行を、担当者が目で探さずに開けるようにする</li><li>可変の行・列から参照を組み立てる（MATCHと組み合わせる）</li></ul>



<p class="wp-block-paragraph">たとえば次の式は、番地を文章に混ぜて表示します。</p>



<pre class="wp-block-code"><code>=&quot;単価は &quot; &amp; ADDRESS(6,3) &amp; &quot; を見てください&quot;</code></pre>



<p class="wp-block-paragraph">結果は <code>単価は $C$6 を見てください</code> という一文になります。番地を手打ちして更新し忘れる、という事故がなくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc4">ADDRESSを使うべきか3秒で決まる判断フロー</span></h3>



<p class="wp-block-paragraph">ADDRESSは万能の関数ではありません。使わない方が早い場面もあるので、先に分岐を整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>選ぶ関数</th></tr></thead><tbody><tr><td>番地の文字列がほしい（表示・記録・連絡）</td><td>ADDRESS</td></tr><tr><td>セルの値そのものがほしい</td><td><a href="https://mashukabu.com/excel-function-howto-use-index/">値そのものを取りたいならINDEX</a> / XLOOKUP</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-indirect/">シート名をセルで切り替えたいとき</a></td><td>INDIRECT（番地づくりにADDRESSを添える）</td></tr><tr><td>列番号をアルファベットで表示したい</td><td>ADDRESS（abs_num=4）＋SUBSTITUTE</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">値を取り出したいだけなら、ADDRESSを経由する必要はありません。値そのものを取りたいなら<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX</a>とMATCHの組み合わせで完結します。XLOOKUP関数を使う手もありますが、対象は Microsoft 365 と Excel 2021 以降です。</p>



<p class="wp-block-paragraph">参照先のシートをセルの入力で差し替えたい場合は、設計の本体がINDIRECT側になります。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">シート名をセルで切り替えたいとき</a>の組み方は専用記事にまとめました。ADDRESSは番地を作る担当として添えるだけ。</p>



<p class="wp-block-paragraph">迷ったら「ほしいのは文字か、値か」で切り分けてみてください。文字ならADDRESSの出番です。</p>



<h2 class="wp-block-heading"><span id="toc5">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">角カッコで囲んだ3つは省略できます。それぞれの役割を表で確認しましょう。</p>



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



<p class="wp-block-paragraph">省略したときの既定値も押さえておきましょう。参照の種類は1、つまり行も列も <code>$</code> が付いた完全な絶対参照になります。</p>



<h3 class="wp-block-heading"><span id="toc6">第1・第2引数（行番号・列番号）――まずはこれだけで動く</span></h3>



<p class="wp-block-paragraph">まずは数字を2つ渡すだけの形から始めましょう。</p>



<pre class="wp-block-code"><code>=ADDRESS(3,2)     → $B$3
=ADDRESS(10,1)    → $A$10
=ADDRESS(77,300)  → $KN$77</code></pre>



<p class="wp-block-paragraph">列番号は数値で渡します。A列が1、B列が2、C列が3という並びですね。300列目のような大きな数でも、<code>$KN$77</code> ときちんとアルファベットに変換してくれます。</p>



<p class="wp-block-paragraph">自分がいるセルの番地を出したいなら、ROW関数とCOLUMN関数の出番です。</p>



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



<p class="wp-block-paragraph">この式をF2セルに入れると、<code>$F$2</code> が返ります。ROW()が2を、COLUMN()が6を返すからですね。列番号がぱっと出てこないときは、<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数で列番号を取得する方法</a>が便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">第3引数 abs_num 1〜4――コピーしたとき何を固定したいかで選ぶ</span></h3>



<p class="wp-block-paragraph">第3引数は、絶対参照と相対参照を切り替えます。絶対参照とは <code>$</code> が付いた参照のことで、数式をコピーしても参照先が動きません。相対参照は <code>$</code> なしで、コピーした方向にずれていきます。</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">判断軸はシンプル。「コピーしたときに、行と列のどちらを固定したいか」で選べば迷いません。</p>



<p class="wp-block-paragraph">実務で出番が多いのは1と4です。1は番地をそのまま記録したいとき、4は返ってきた文字を加工したいときに使います。</p>



<p class="wp-block-paragraph"><code>abs_num=4</code> は列名を取り出すワザの土台にもなります。<a href="https://mashukabu.com/excel-function-howto-get-column-alphabet/">列番号をアルファベットに変換する方法</a>は、別解法も含めて専用記事で解説していますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">第4引数 A1形式とR1C1形式の違い</span></h3>



<p class="wp-block-paragraph">第4引数は、番地の表記スタイルを決めます。</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形式とは、行も列も番号で表す書き方のこと。「R3C4」なら3行目・4列目という意味ですね。VBAやマクロの開発でよく使われる表記です。</p>



<p class="wp-block-paragraph">ワークシートの標準表示はA1形式なので、この引数はほぼ省略でかまいません。R1C1形式をINDIRECTに渡すときだけ、INDIRECT側の第2引数もFALSEにそろえてください。片方だけFALSEにすると、参照がかみ合わずエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc9">第5引数 シート名――スペース入りはクォートが自動で付く</span></h3>



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



<pre class="wp-block-code"><code>=ADDRESS(1,1,1,TRUE,&quot;Sheet2&quot;)        → Sheet2!$A$1
=ADDRESS(2,3,1,FALSE,&quot;EXCEL SHEET&quot;)  → 'EXCEL SHEET'!R2C3</code></pre>



<p class="wp-block-paragraph">下の例に注目してください。シート名にスペースが含まれる場合、ADDRESSはシングルクォートを自動で付けてくれます。Microsoft公式ドキュメントの使用例でも、この挙動が示されています。</p>



<p class="wp-block-paragraph">一方、スペースのない <code>Sheet2</code> にクォートは付きません。ハイフンや括弧を含むシート名は少し注意。ADDRESSの結果を一度セルに出して、クォートの有無を目で確かめておくと安心です。</p>



<p class="wp-block-paragraph">別のブックを指したい場合は、シート名を <code>"[Book2.xlsx]Sheet1"</code> の形式で渡します。公式の使用例では <code>'[Book1]Sheet1'!R2C3</code> と返っており、この形でもクォートは自動で付きます。</p>



<h3 class="wp-block-heading"><span id="toc10">ADDRESS(0,3) が #VALUE! になる理由</span></h3>



<p class="wp-block-paragraph">ADDRESS関数が返すエラーは基本的に1種類、<code>#VALUE!</code> だけです。行番号・列番号に1未満の数値や、数値として読めない文字列を渡したときに発生します。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>原因</th></tr></thead><tbody><tr><td><code>=ADDRESS(0,3)</code></td><td><code>#VALUE!</code></td><td>行番号が0（1以上が必要）</td></tr><tr><td><code>=ADDRESS(3,0)</code></td><td><code>#VALUE!</code></td><td>列番号が0</td></tr><tr><td><code>=ADDRESS(3,"B")</code></td><td><code>#VALUE!</code></td><td>列番号に文字列を渡している</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">手入力で0を書く人はいませんよね。このエラーが出るのは、引数を数式で組み立てているときがほとんどです。</p>



<p class="wp-block-paragraph">たとえば行番号を計算で求めたとしましょう。引き算の結果が0以下になった瞬間に <code>#VALUE!</code> へ変わります。エラーが出たら、まずADDRESSの中身を別セルに出して数値を確認しましょう。</p>



<p class="wp-block-paragraph">検索が空振りした場合はMATCHが <code>#N/A</code> を返し、それがADDRESSにも伝わります。表示を整えたいならIFERRORで包むのが手軽。</p>



<pre class="wp-block-code"><code>=IFERROR(ADDRESS(MATCH(F2,A:A,0),1), &quot;見つかりません&quot;)</code></pre>



<h2 class="wp-block-heading"><span id="toc11">検索でヒットした値のセル番地を出す（ADDRESS×MATCH）</span></h2>



<p class="wp-block-paragraph">ここからが本題です。「この商品の5月の数字って、どのセル?」を数式に答えさせましょう。</p>



<p class="wp-block-paragraph">例として、次のような売上表を使います。A列に商品名、1行目に月の見出しが並んだ、よくある形ですね。</p>



<figure class="wp-block-table"><table><thead><tr><th>行</th><th>A列</th><th>B列</th><th>C列</th><th>D列</th></tr></thead><tbody><tr><td>1</td><td>商品名</td><td>4月</td><td>5月</td><td>6月</td></tr><tr><td>2</td><td>ボールペン</td><td>12,000</td><td>11,500</td><td>13,200</td></tr><tr><td>3</td><td>ノート</td><td>8,400</td><td>9,100</td><td>8,800</td></tr><tr><td>4</td><td>クリップ</td><td>3,200</td><td>3,050</td><td>3,400</td></tr><tr><td>5</td><td>ファイル</td><td>6,700</td><td>7,200</td><td>6,900</td></tr><tr><td>6</td><td>付箋</td><td>4,500</td><td>5,300</td><td>4,800</td></tr><tr><td>7</td><td>ホチキス</td><td>2,900</td><td>3,100</td><td>2,750</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">データは13行目まで続いている前提です。検索用の入力欄として、F2に商品名、F3に月を入れておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">ステップ1 行だけ分かればいい場合</span></h3>



<p class="wp-block-paragraph">まずは「その商品が何行目にあるか」を番地で出します。F2には「付箋」と入力してある状態です。</p>



<pre class="wp-block-code"><code>=ADDRESS(MATCH(F2, A:A, 0), 1)</code></pre>



<p class="wp-block-paragraph">結果は <code>$A$6</code> になります。MATCH関数がA列から「付箋」を探し、6を返します。その6を受け取ったADDRESSが、6行1列目の番地を組み立てるわけです。</p>



<p class="wp-block-paragraph">ここで大事な前提が1つ。<a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数が返すのは「範囲内の相対位置」</a>であって、シート上の行番号ではありません。</p>



<p class="wp-block-paragraph">上の式でうまくいくのは、検索範囲に <code>A:A</code>（A列全体）を指定しているからです。A列全体なら1番目＝1行目なので、相対位置と行番号がぴったり一致します。範囲を途中から始めた瞬間にこの一致は崩れるので、後述の症状1で詳しく扱いますね。</p>



<h3 class="wp-block-heading"><span id="toc13">ステップ2 行と列の両方を検索する場合</span></h3>



<p class="wp-block-paragraph">次は列も検索して、表の中の1点を特定します。F3には「5月」と入力しておきましょう。</p>



<pre class="wp-block-code"><code>=ADDRESS(MATCH(F2, A:A, 0), MATCH(F3, 1:1, 0))</code></pre>



<p class="wp-block-paragraph">結果は <code>$C$6</code> です。分解すると次の3ステップになります。</p>



<ol class="wp-block-list"><li><code>MATCH(F2, A:A, 0)</code> がA列で「付箋」を探して6を返す</li><li><code>MATCH(F3, 1:1, 0)</code> が1行目で「5月」を探して3を返す</li><li><code>ADDRESS(6, 3)</code> が6行3列目の番地 <code>$C$6</code> を作る</li></ol>



<p class="wp-block-paragraph"><code>1:1</code> は1行目全体を指す書き方。見出しが1行目にあるので、こちらも相対位置と列番号が一致します。F2とF3を書き換えれば、番地はその場で切り替わりますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">ステップ3 表の左上がA1でないときの起点合わせ</span></h3>



<p class="wp-block-paragraph">実務の表は、A1から始まっているとは限りません。上にタイトル行があったり、左に余白列があったりしますよね。</p>



<p class="wp-block-paragraph">同じ表をB3から貼り直したケースで考えましょう。B3が「商品名」、C3からE3に月の見出し、データはB4からB15に入っています。検索欄はH2（商品名）とH3（月）とします。</p>



<pre class="wp-block-code"><code>=ADDRESS(MATCH(H2,B4:B15,0)+ROW(B4)-1, MATCH(H3,C3:E3,0)+COLUMN(C3)-1)</code></pre>



<p class="wp-block-paragraph">結果は <code>$D$8</code> です。計算の中身を追いかけてみましょう。</p>



<ul class="wp-block-list"><li>行: <code>MATCH(H2,B4:B15,0)</code> は5を返す（付箋はB4から数えて5番目）</li><li>行の補正: <code>5 + ROW(B4) - 1</code> = <code>5 + 4 - 1</code> = 8</li><li>列: <code>MATCH(H3,C3:E3,0)</code> は2を返す（5月はC3から数えて2番目）</li><li>列の補正: <code>2 + COLUMN(C3) - 1</code> = <code>2 + 3 - 1</code> = 4（D列）</li></ul>



<p class="wp-block-paragraph">覚え方は「範囲の先頭セルの行番号を足して、1を引く」だけ。列も同じ理屈で、COLUMN関数に置き換えれば補正できます。</p>



<p class="wp-block-paragraph">この補正を身につけておくと、表の位置が変わっても式が壊れません。汎用性がぐっと上がるので、ぜひ手を動かして確かめてみてください。</p>



<h3 class="wp-block-heading"><span id="toc15">CELL(&#8220;address&#8221;, INDEX(&#8230;)) との使い分け早見表</span></h3>



<p class="wp-block-paragraph">番地を出す関数はもう1つあります。CELL関数の検査の型 <code>"address"</code> です。こちらは既存のセル参照から番地を読み取る関数で、指定した範囲の左上隅のセル参照を文字列で返します。</p>



<p class="wp-block-paragraph">MATCHで求めた番号を直接渡せない点が、ADDRESSとの大きな違い。いったんINDEX関数でセル参照に変えてから渡す必要があります。</p>



<pre class="wp-block-code"><code>=CELL(&quot;address&quot;, INDEX(A1:D13, MATCH(F2,A:A,0), MATCH(F3,1:1,0)))</code></pre>



<p class="wp-block-paragraph">2つの関数の性格を並べておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比べる点</th><th>ADDRESS</th><th>CELL(&#8220;address&#8221;, 対象範囲)</th></tr></thead><tbody><tr><td>渡すもの</td><td>行番号・列番号（数値）</td><td>セル参照（範囲の左上を読む）</td></tr><tr><td>MATCHの結果を直接渡せるか</td><td>渡せる</td><td>渡せない（INDEXなどで参照に変える）</td></tr><tr><td><code>$</code> の付き方を選べるか</td><td>abs_numで1〜4の4通り</td><td>選ぶための引数がない</td></tr><tr><td>シート名を自分で付けられるか</td><td>第5引数で付けられる</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">Microsoftは対象範囲について「参照を含めることをお勧めします」と明記しています。省略すると、そのときアクティブなセルの情報が返ってしまうためですね。</p>



<p class="wp-block-paragraph">INDEXに渡す番号も「範囲の中で何番目か」である点は共通です。範囲の起点をA1にそろえておくと、ステップ3のような補正を考えずに済みます。</p>



<p class="wp-block-paragraph">検査の型は <code>"address"</code> 以外にもたくさんあります。書式やファイル名まで取得できるので、<a href="https://mashukabu.com/excel-function-howto-use-cell/">CELL関数の検査の型12種</a>もあわせて眺めてみてください。</p>



<h2 class="wp-block-heading"><span id="toc16">エラーは出ないのに番地がズレる3つの症状と直し方</span></h2>



<p class="wp-block-paragraph"><code>#VALUE!</code> や <code>#REF!</code> は、画面に出た時点で「間違っているよ」と教えてくれます。本当に怖いのは、正しい形の番地が返るのに中身が違うケース。</p>



<p class="wp-block-paragraph">数式は動いている、結果もそれらしい、でも指しているセルが1つ違う。ここでは実務で起きやすい3症状を、気づき方とセットで押さえましょう。</p>



<h3 class="wp-block-heading"><span id="toc17">症状1 MATCHの戻り値は相対位置――範囲を絞った瞬間に1行ズレる</span></h3>



<p class="wp-block-paragraph">一番多いのがこれです。ステップ1の式は <code>A:A</code> で動いていました。ところが実務では「列全体だと重い」と考えて、範囲を <code>A2:A13</code> に絞りたくなりますよね。</p>



<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><code>=ADDRESS(MATCH(F2,A:A,0),1)</code></td><td><code>$A$6</code></td><td>正しい</td></tr><tr><td><code>=ADDRESS(MATCH(F2,A2:A13,0),1)</code></td><td><code>$A$5</code></td><td>1行上を指す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">原因はMATCHの仕様です。<code>A2:A13</code> の中ではA2が1番目なので、A6は5番目。</p>



<p class="wp-block-paragraph">MATCHは5を返し、ADDRESSはそれを5行目として扱います。しかもエラーは出ません。</p>



<p class="wp-block-paragraph"><strong>気づき方</strong>は2つあります。返ってきた番地のセルを実際に見て、検索値と中身が一致するか確かめる方法。もう1つは、MATCHだけを別セルに出して行番号と見比べる方法です。</p>



<p class="wp-block-paragraph">見出し行を1行外したなら、ズレは必ず1行分。除外した行数がそのままズレ幅になると覚えておきましょう。</p>



<p class="wp-block-paragraph">直し方は起点を足し戻すだけ。</p>



<pre class="wp-block-code"><code>=ADDRESS(MATCH(F2,A2:A13,0)+ROW(A2)-1, 1)</code></pre>



<p class="wp-block-paragraph"><code>5 + 2 - 1</code> で6になり、<code>$A$6</code> が返ります。行を挿入して表の位置が動いても、<code>ROW(A2)</code> が一緒にずれるので補正も自動で追いつきますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">症状2 シート名を渡し忘れて「今いるシート」の同じ番地を指す</span></h3>



<p class="wp-block-paragraph">「東京支店」シートのC6を取りたくて、集計シートに次の式を書いたとしましょう。</p>



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



<p class="wp-block-paragraph">エラーは出ません。でも返ってくるのは、集計シートのC6の値です。</p>



<p class="wp-block-paragraph">ADDRESSが作ったのは <code>$C$6</code> という番地だけで、シート名が入っていません。だからINDIRECTは、数式のあるシートを見に行きます。</p>



<p class="wp-block-paragraph">両方のシートに似た数字が並んでいると、間違いに気づくのは月末の照合作業だったりします。</p>



<p class="wp-block-paragraph"><strong>気づき方</strong>はシンプル。ADDRESSの部分だけを別セルに出してみましょう。<code>東京支店!$C$6</code> のようにシート名が付いていれば正解です。</p>



<p class="wp-block-paragraph">数式バーでADDRESSの部分を選択し、F9キーを押す方法もあります。その場で結果を確かめられますよ（Escキーで元に戻ります）。</p>



<p class="wp-block-paragraph">直し方は第5引数にシート名を渡すだけです。H1にシート名を入力しておけば、参照先を後から切り替えられます。</p>



<pre class="wp-block-code"><code>=INDIRECT(ADDRESS(6,3,1,TRUE,$H$1))</code></pre>



<h3 class="wp-block-heading"><span id="toc19">症状3 COUNTAの最終行が見出し行・空白行の分だけズレる</span></h3>



<p class="wp-block-paragraph">「表の一番下の値を、いつも自動で表示したい」。そんなときに使われるのが、COUNTA関数で最終行を数える方法です。</p>



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



<p class="wp-block-paragraph">B1が見出しで、B2からB13までデータが埋まっていれば結果は <code>$B$13</code>。件数13とB列の最終行13が、たまたま一致しているわけです。</p>



<p class="wp-block-paragraph">この一致には条件があります。1行目から最終行まで、B列に空白セルが1つもないこと。裏を返せば、空白が1つ混じるだけで番地は上へズレます。</p>



<figure class="wp-block-table"><table><thead><tr><th>B列の状態</th><th>COUNTAの結果</th><th>返る番地</th><th>実際の最終行</th></tr></thead><tbody><tr><td>B1〜B13がすべて入力済み</td><td>13</td><td><code>$B$13</code></td><td>B13（正しい）</td></tr><tr><td>B7が未入力</td><td>12</td><td><code>$B$12</code></td><td>B13（1行上を指す）</td></tr><tr><td>B1が空でB2〜B13に入力</td><td>12</td><td><code>$B$12</code></td><td>B13（1行上を指す）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>気づき方</strong>は、データを1行足してみることです。番地が1つ下にずれれば正常。動かなかったり飛んだりしたら、空白セルを疑いましょう。</p>



<p class="wp-block-paragraph">空白が混じる表では、MAXとIFで「値が入っている最後の行」を直接探す方法が確実です。</p>



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



<p class="wp-block-paragraph"><code>IF(B1:B1000<>"", ROW(B1:B1000))</code> は、値のある行だけ行番号を返します。MAXがその中から最大値、つまり最終行を取り出す流れ。空白がどこにあっても正しく拾ってくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong>: この式は配列数式（範囲を丸ごと計算する数式）です。Microsoft 365 と Excel 2021 以降は動的配列に対応しています。そのまま Enter キーで確定して大丈夫です。Excel 2019 以前では <code>Ctrl+Shift+Enter</code> で確定してください。</p></blockquote>



<p class="wp-block-paragraph">範囲は <code>B1:B1000</code> のように必要な広さに絞るのがコツ。列全体を対象にすると計算量が増え、ブックが重くなります。</p>



<h3 class="wp-block-heading"><span id="toc20">#REF! が出たときはADDRESS側ではなく参照側の問題</span></h3>



<p class="wp-block-paragraph">ADDRESS関数は <code>#REF!</code> を返しません。文字列を組み立てるだけの関数なので、存在しないセルを指す文字列でも平気で作ってしまいます。</p>



<p class="wp-block-paragraph"><code>#REF!</code> が出るのは、その文字列を受け取ったINDIRECTが参照に変換できなかったときです。シート名のスペルミス、削除済みのシート、クォートの付け忘れあたりが典型ですね。</p>



<p class="wp-block-paragraph">つまり犯人はADDRESSの外側にいます。原因の切り分け手順は<a href="https://mashukabu.com/excel-reference-formula-errors/">#REF!・循環参照・参照ずれの症状別診断</a>にまとめました。そちらを見ながら1つずつ潰していきましょう。</p>



<h2 class="wp-block-heading"><span id="toc21">ADDRESSで作った番地から値を取る（連携は最小限でいい）</span></h2>



<p class="wp-block-paragraph">「番地じゃなくて値がほしい」という場面もありますよね。その場合はINDIRECT関数を1つかぶせます。</p>



<h3 class="wp-block-heading"><span id="toc22">ADDRESS単体とINDIRECT併用の2行比較</span></h3>



<p class="wp-block-paragraph">B3セルに <code>1000</code> という値が入っている前提で、2つの式を見比べてみましょう。</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関数だけ。INDIRECTは「文字列で書かれた番地を、本物のセル参照として読み直す」関数です。</p>



<p class="wp-block-paragraph">ADDRESSが番地を書き、INDIRECTがそれを読む。この2段構えが連携の基本形になります。</p>



<p class="wp-block-paragraph">ただし、なんでもINDIRECTで包む必要はありません。INDIRECTは揮発性関数（シートに変更があるたび再計算が走る性質）です。多用するとブックの動作が重くなります。</p>



<p class="wp-block-paragraph">同一シート内で値を取るだけなら、INDEXとMATCHの組み合わせの方が軽快ですよ。</p>



<h3 class="wp-block-heading"><span id="toc23">シート名を切り替えたいなら設計の本体はINDIRECT側</span></h3>



<p class="wp-block-paragraph">この組み合わせが本当に光るのは、シート名を変数にしたいときです。C1にシート名、A1に行番号、B1に列番号を入れておきます。</p>



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



<p class="wp-block-paragraph">C1を書き換えるだけで、取得先のシートが丸ごと切り替わります。ADDRESSは番地を組み立てる部品にすぎません。設計の本体はINDIRECT側にあると考えてください。</p>



<p class="wp-block-paragraph">シート名の管理方法や <code>#REF!</code> の防ぎ方は、専用記事で詳しく解説しています。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数で別シートを参照する書き方</a>もあわせてどうぞ。</p>



<h3 class="wp-block-heading"><span id="toc24">Googleスプレッドシートでも引数の構成は同じ</span></h3>



<p class="wp-block-paragraph">ADDRESS関数はGoogleスプレッドシートにもあり、5つの引数の構成は同じです。行番号と列番号から番地の文字列を受け取る、という基本の考え方もそのまま通用します。</p>



<p class="wp-block-paragraph">Sheetsで使いたい方は<a href="https://mashukabu.com/spreadsheet-address-function/">スプレッドシート版のADDRESS関数</a>を参照してください。入力の流れはそちらにまとめています。</p>



<h2 class="wp-block-heading"><span id="toc25">まとめ｜ADDRESS関数は「番地を出したいとき」に使う</span></h2>



<p class="wp-block-paragraph">ADDRESS関数は、行番号と列番号からセル番地を組み立てる関数です。返るのは番地の文字列なので、表示・記録・連絡にそのまま使えます。</p>



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



<ul class="wp-block-list"><li><code>=ADDRESS(3,2)</code> は <code>$B$3</code> を返す。渡す順番は「行 → 列」</li><li><code>abs_num</code> 1〜4は「コピーしたときに何を固定したいか」で選ぶ</li><li>MATCHと組み合わせれば、検索でヒットした値の番地を自動表示できる</li><li>MATCHの戻り値は範囲内の相対位置。範囲を絞ったら <code>+ ROW(先頭セル) - 1</code> で補正する</li><li>番地の形は正しいのに中身が違うときは、範囲の起点・シート名・空白セルの3点を疑う</li><li>値そのものがほしいならINDEX、シート名を切り替えたいならINDIRECTに任せる</li></ul>



<p class="wp-block-paragraph">「この値、どのセルにある?」という問いに数式で答えられると、確認作業の手戻りがぐっと減ります。まずはステップ1の1行から、手元の表で試してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-address/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
