<?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>COLUMN関数 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/column%e9%96%a2%e6%95%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:47:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>COLUMN関数 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのCOLUMNS関数の使い方｜列数を調べる方法</title>
		<link>https://mashukabu.com/spreadsheet-columns-function/</link>
					<comments>https://mashukabu.com/spreadsheet-columns-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:37:04 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[COLUMNS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[OFFSET関数]]></category>
		<category><![CDATA[ROWS関数]]></category>
		<category><![CDATA[列数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4891</guid>

					<description><![CDATA[スプレッドシートのCOLUMNS関数でセル範囲の列数を調べる方法を解説。COLUMN関数との違い、INDEX・OFFSET・ROWS関数との組み合わせ技、エラー対処法まで、実務で使えるテクニックを紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「この表って何列あるんだろう？」と数えたくなること、ありますよね。</p>



<p class="wp-block-paragraph">列数が多い表だと、目的の範囲が何列分あるか数え間違えることもあります。データの列が増減するたびに数え直すのも面倒です。</p>



<p class="wp-block-paragraph">スプレッドシートのCOLUMNS関数を使えば、セル範囲の列数を一発で自動カウントできます。他の関数と組み合わせれば、動的な範囲制御やデータサイズの検証にも活用できますよ。</p>



<p class="wp-block-paragraph">この記事では、COLUMNS関数の基本的な書き方から、実務で使える組み合わせパターンまで紹介します。</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">スプレッドシートのCOLUMNS関数とは？基本の仕組みを理解しよう</a><ol><li><a href="#toc2" tabindex="0">COLUMNS関数の基本構文</a></li><li><a href="#toc3" tabindex="0">COLUMN関数との違いを押さえよう</a></li></ol></li><li><a href="#toc4" tabindex="0">COLUMNS関数の基本的な使い方</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">COLUMNS関数の実務活用パターン</a><ol><li><a href="#toc10" tabindex="0">パターン1: INDEX関数と組み合わせて最終列のデータを取得</a></li><li><a href="#toc11" tabindex="0">パターン2: OFFSET関数と組み合わせて可変範囲を作る</a></li><li><a href="#toc12" tabindex="0">パターン3: INDIRECT関数と組み合わせて動的な範囲サイズを取得</a></li><li><a href="#toc13" tabindex="0">パターン4: データ項目数の検証に使う</a></li><li><a href="#toc14" tabindex="0">パターン5: ROWS関数と組み合わせて総セル数を計算</a></li></ol></li><li><a href="#toc15" tabindex="0">COLUMN関数との違い・使い分け</a><ol><li><a href="#toc16" tabindex="0">比較表</a></li></ol></li><li><a href="#toc17" tabindex="0">ROWS関数との比較</a></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a></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">スプレッドシートのCOLUMNS関数とは？基本の仕組みを理解しよう</span></h2>



<p class="wp-block-paragraph">COLUMNS関数（読み方: カラムズ関数）は、指定したセル範囲の<strong>列数</strong>を数値で返す関数です。「COLUMNS」は英語の「COLUMN（列）」の複数形で、列がいくつあるかを意味します。</p>



<p class="wp-block-paragraph">たとえば <code>=COLUMNS(A1:C1)</code> と入力すると、結果は「3」です。A列からC列まで3列分あるからですね。</p>



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



<ul class="wp-block-list"><li>セル範囲の列数を数値で返す</li><li>行方向にどれだけ広がっていても、列数だけをカウントする</li><li>名前付き範囲や配列定数にも使える</li><li>他の関数と組み合わせて動的な範囲制御に使える</li></ul>



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



<pre class="wp-block-code"><code>=COLUMNS(範囲)</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つだけなので覚えやすい関数です。ただし、COLUMN関数と違って<strong>引数の省略はできません</strong>。<code>=COLUMNS()</code> と書くとエラーになるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc3">COLUMN関数との違いを押さえよう</span></h3>



<p class="wp-block-paragraph">COLUMNS関数とCOLUMN関数は名前がよく似ていますが、返す情報がまったく異なります。</p>



<pre class="wp-block-code"><code>=COLUMN(C1)      → 3（C1セルの列番号）
=COLUMNS(A1:C10) → 3（A1からC10の列数）</code></pre>



<ul class="wp-block-list"><li><strong>COLUMN関数</strong>: セルが「何列目にあるか」を返す（位置の情報）</li><li><strong>COLUMNS関数</strong>: 範囲に「何列あるか」を返す（サイズの情報）</li></ul>



<p class="wp-block-paragraph">覚え方は「複数形のCOLUMNSは範囲全体の列数を数える」と考えるとわかりやすいですよ。</p>



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



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



<h3 class="wp-block-heading"><span id="toc5">セル範囲の列数を調べる</span></h3>



<pre class="wp-block-code"><code>=COLUMNS(A1:E1)</code></pre>



<p class="wp-block-paragraph">A1からE1までの列数「5」を返します。行方向にどれだけ広がっていても結果は同じです。<code>=COLUMNS(A1:E10)</code> でも「5」になります。</p>



<h3 class="wp-block-heading"><span id="toc6">単一セルの列数を調べる</span></h3>



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



<p class="wp-block-paragraph">単一セルは1列分なので、結果は「1」です。実務で単体で使う場面は少ないですが、数式の仕組みを理解するための基本として押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">名前付き範囲の列数を調べる</span></h3>



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



<p class="wp-block-paragraph">名前付き範囲「売上データ」の列数を返します。メニューの「データ」>「名前付き範囲」で設定した範囲が対象です。セル参照を直接書くよりわかりやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">配列定数の列数を調べる</span></h3>



<pre class="wp-block-code"><code>=COLUMNS({1,2,3;4,5,6;7,8,9})</code></pre>



<p class="wp-block-paragraph">配列定数の列数「3」を返します。カンマ（<code>,</code>）で区切られた要素が列に対応します。セミコロン（<code>;</code>）は行の区切りなので、列数には影響しません。</p>



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



<h3 class="wp-block-heading"><span id="toc10">パターン1: INDEX関数と組み合わせて最終列のデータを取得</span></h3>



<p class="wp-block-paragraph">データ範囲の最後の列の値を取り出したいときに便利なパターンです。</p>



<pre class="wp-block-code"><code>=INDEX(A1:G1, COLUMNS(A1:G1))</code></pre>



<p class="wp-block-paragraph">COLUMNS関数で範囲の列数（7）を取得し、<a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>の列番号に渡しています。範囲の最後の列、つまりG1の値を返します。</p>



<p class="wp-block-paragraph">2次元範囲で最終列・最終行のデータを取り出す場合は、ROWS関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=INDEX(A1:G10, ROWS(A1:G10), COLUMNS(A1:G10))</code></pre>



<p class="wp-block-paragraph">ROWS関数で行数（10）、COLUMNS関数で列数（7）を取得して、範囲の右下隅のデータを返す仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: OFFSET関数と組み合わせて可変範囲を作る</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-offset-function/">OFFSET関数</a>の「幅」引数にCOLUMNS関数を使うと、範囲のサイズを動的に制御できます。</p>



<pre class="wp-block-code"><code>=OFFSET(A1, 0, 0, 1, COLUMNS(A1:E1))</code></pre>



<p class="wp-block-paragraph">COLUMNS関数が返す列数に応じて、OFFSET関数が返す範囲の幅が変わります。グラフの参照範囲やデータ入力規則の元データを可変にしたいときに活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: INDIRECT関数と組み合わせて動的な範囲サイズを取得</span></h3>



<p class="wp-block-paragraph">文字列で組み立てた範囲の列数を調べたいときに使えます。</p>



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



<p class="wp-block-paragraph">セルB1に入力された列文字に応じて範囲のサイズが変わります。B1が「F」なら <code>=COLUMNS(A1:F1)</code> と同じ結果（6）です。ユーザーが列数を指定して範囲を制御する仕組みを作りたいときに便利ですよ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-indirect-function/">INDIRECT関数</a>の詳しい使い方は関連記事を参考にしてみてください。</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(COLUMNS(A1:G1) = 7, &quot;OK&quot;, &quot;列数が違います&quot;)</code></pre>



<p class="wp-block-paragraph">COLUMNS関数で範囲の列数を調べ、期待値（7列）と比較しています。他のシートからデータを取り込んだときに、列構造が変わっていないか検証するのに使えます。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: ROWS関数と組み合わせて総セル数を計算</span></h3>



<p class="wp-block-paragraph">COLUMNS関数とROWS関数を掛け合わせると、データ範囲の総セル数がわかります。</p>



<pre class="wp-block-code"><code>=ROWS(A1:G10) * COLUMNS(A1:G10)</code></pre>



<p class="wp-block-paragraph">この数式は <code>10 * 7 = 70</code> を返します。想定どおりのデータサイズか確認したいときに使えるパターンです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>COLUMNS関数は「範囲の列数」を返すだけのシンプルな関数です。単体よりも、INDEX・OFFSET・INDIRECTなど他の関数と組み合わせてこそ真価を発揮します。</p></blockquote>



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



<p class="wp-block-paragraph">COLUMNS関数とCOLUMN関数は名前が似ていますが、役割がまったく異なります。混同しやすいポイントを整理しておきましょう。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>COLUMNS関数</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><code>=COLUMNS(A1:E1)</code></td><td><code>=COLUMN(A1)</code></td></tr><tr><td>結果の例</td><td><code>=COLUMNS(C1:F1)</code> → 4</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>」を知りたい → <strong>COLUMNS関数</strong></li><li>「このセルは<strong>何列目か</strong>」を知りたい → <strong>COLUMN関数</strong></li></ul>



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



<h2 class="wp-block-heading"><span id="toc17">ROWS関数との比較</span></h2>



<p class="wp-block-paragraph">COLUMNS関数とROWS関数は、列と行の方向が違うだけの<strong>対称ペア</strong>です。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>COLUMNS関数</th><th>ROWS関数</th></tr></thead><tbody><tr><td>返す値</td><td>範囲の列数</td><td>範囲の行数</td></tr><tr><td>構文</td><td><code>=COLUMNS(範囲)</code></td><td><code>=ROWS(範囲)</code></td></tr><tr><td>結果の例</td><td><code>=COLUMNS(A1:C10)</code> → 3</td><td><code>=ROWS(A1:C10)</code> → 10</td></tr><tr><td>方向</td><td>横方向のサイズ</td><td>縦方向のサイズ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">構文も <code>=COLUMNS(範囲)</code> と <code>=ROWS(範囲)</code> でまったく同じ形です。セットで覚えてしまいましょう。</p>



<p class="wp-block-paragraph">また、ROW関数は「何行目か」を返す関数です。4つの関数の関係を整理すると次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>位置（1つのセル）</th><th>サイズ（範囲）</th></tr></thead><tbody><tr><td>行（縦）</td><td>ROW関数</td><td>ROWS関数</td></tr><tr><td>列（横）</td><td>COLUMN関数</td><td>COLUMNS関数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この4つの関係を押さえておけば、「行番号？ 行数？ 列番号？ 列数？」で迷うことがなくなりますよ。</p>



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



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



<p class="wp-block-paragraph">COLUMNS関数自体は非常にシンプルなので、単独でエラーになることはほとんどありません。ただし、いくつか注意点があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>引数なしでエラー</td><td><code>=COLUMNS()</code> と引数を省略した</td><td>COLUMNS関数は引数が必須です。列数を調べたい範囲を指定してください</td></tr><tr><td><code>#REF!</code></td><td>参照先の行や列が削除された</td><td>参照先セルが存在するか確認してください</td></tr><tr><td><code>#NAME?</code></td><td>名前付き範囲のスペルミス</td><td>「データ」>「名前付き範囲」から名前を確認してください</td></tr><tr><td>期待と違う数値が返る</td><td>列数ではなく列番号を求めていた</td><td>列番号がほしい場合はCOLUMN関数を使ってください</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に注意したいのが「引数省略」のケースです。COLUMN関数は <code>=COLUMN()</code> と引数なしで使えますが、COLUMNS関数は必ず範囲を指定する必要があります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「期待と違う数値が返る」場合は、COLUMNS関数とCOLUMN関数を混同していることがほとんどです。COLUMNS関数は範囲の「サイズ」、COLUMN関数はセルの「位置」を返します。<code>=COLUMNS(C1:F1)</code> は「4」、<code>=COLUMN(C1)</code> は「3」です。</p></blockquote>



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



<p class="wp-block-paragraph">COLUMNS関数は、セル範囲の列数を取得するシンプルな関数です。他の関数と組み合わせることで、最終列データの取得や動的な範囲制御に活用できます。</p>



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



<ul class="wp-block-list"><li>COLUMNS関数は <code>=COLUMNS(範囲)</code> で、範囲の列数を数値で返す（引数の省略は不可）</li><li>COLUMN関数は「何列目か（位置）」、COLUMNS関数は「何列あるか（サイズ）」を返す</li><li>INDEX関数と組み合わせれば、最終列のデータを簡単に取得できる</li><li>OFFSET関数と組み合わせれば、動的に伸縮する範囲を作れる</li><li>ROWS関数とは行・列の方向が違うだけの対称ペア</li></ul>



<p class="wp-block-paragraph">まずは <code>=COLUMNS(A1:E1)</code> のシンプルな使い方から試してみてください。INDEX関数やOFFSET関数との組み合わせを覚えれば、データ管理がグッとラクになりますよ。</p>



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-column-function/">スプレッドシートのCOLUMN関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-rows-function/">スプレッドシートのROWS関数の使い方</a></li><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-offset-function/">スプレッドシートのOFFSET関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-indirect-function/">スプレッドシートのINDIRECT関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-columns-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>スプレッドシートの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-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">スプレッドシートの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で列番号をアルファベットに変換する方法｜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-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">コピペで使える数式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>ExcelのCOLUMNS関数とは？列数を調べる使い方からCOLUMN関数との違いまで解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-columns/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-columns/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 Jul 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[COLUMNS関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[ROWS関数]]></category>
		<category><![CDATA[列数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2295</guid>

					<description><![CDATA[ExcelのCOLUMNS関数の使い方を基本から応用まで解説。セル範囲の列数を調べる基本構文、COLUMN関数との違い、VLOOKUP・INDEX・OFFSETとの組み合わせパターン、よくあるエラーの対処法まで実務で使える具体例つきで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">VLOOKUPの列番号、手入力で変えていませんか? 列が追加されるたびに数式を直すのは面倒ですよね。修正漏れでエラーが出ることもあります。COLUMNS関数を使えば、列番号を自動で管理できますよ。</p>



<p class="wp-block-paragraph">この記事では、COLUMNS関数の基本的な書き方から他の関数との組み合わせパターンまでまとめて紹介します。</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">COLUMNS関数とは？</a></li><li><a href="#toc2" tabindex="0">COLUMNS関数の書き方</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">COLUMNS関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">セル範囲の列数を調べる</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">COLUMNS関数の実務活用パターン</a><ol><li><a href="#toc11" tabindex="0">パターン1: VLOOKUP関数と組み合わせて列番号を自動化</a></li><li><a href="#toc12" tabindex="0">パターン2: INDEX関数と組み合わせて最終列のデータを取得</a></li><li><a href="#toc13" tabindex="0">パターン3: OFFSET関数と組み合わせて可変範囲を作る</a></li><li><a href="#toc14" tabindex="0">パターン4: INDIRECT関数と組み合わせて動的な列数を取得</a></li><li><a href="#toc15" tabindex="0">パターン5: データ件数の検証に使う</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></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph"><strong>COLUMNS関数</strong>（読み方: コラムズ）は、指定したセル範囲の<strong>列数</strong>を数値で返す関数です。「COLUMNS」は英語の「COLUMN（列）」の複数形で、列がいくつあるかを意味します。</p>



<p class="wp-block-paragraph">たとえば <code>=COLUMNS(A1:E1)</code> と入力すると、結果は <code>5</code> になります。A列からE列まで5列分あるからですね。行の範囲がどれだけ広くても、列数だけを数える点がポイントです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>COLUMNS関数はExcel 2003以降のすべてのバージョンで使用できます。Microsoft 365やGoogleスプレッドシートでも同じ構文で利用可能です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">COLUMNS関数の書き方</span></h2>



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



<pre class="wp-block-code"><code>=COLUMNS(配列)</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">引数は1つだけなので、覚えやすい関数です。ただし、<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>と違って引数の省略はできません。<code>=COLUMNS()</code> と書くとエラーになるので注意してください。</p>



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



<h3 class="wp-block-heading"><span id="toc6">セル範囲の列数を調べる</span></h3>



<pre class="wp-block-code"><code>=COLUMNS(A1:E1)</code></pre>



<p class="wp-block-paragraph">A列からE列までの列数 <code>5</code> を返します。行方向にどれだけ広がっていても結果は同じです。<code>=COLUMNS(A1:E10)</code> でも <code>5</code> になります。</p>



<h3 class="wp-block-heading"><span id="toc7">単一セルの列数を調べる</span></h3>



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



<p class="wp-block-paragraph">単一セルは1列分なので、結果は <code>1</code> です。実務で単体で使う場面は少ないですが、数式の仕組みを理解するための基本として押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc8">名前付き範囲の列数を調べる</span></h3>



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



<p class="wp-block-paragraph">名前の定義で「売上データ」と名付けた範囲の列数を返します。テーブルやデータ範囲に名前を付けている場合は、セル参照を書くよりわかりやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">配列定数の列数を調べる</span></h3>



<pre class="wp-block-code"><code>=COLUMNS({1,2,3;4,5,6})</code></pre>



<p class="wp-block-paragraph">配列定数の列数 <code>3</code> を返します。カンマ（<code>,</code>）で区切られた要素が列に対応します。セミコロン（<code>;</code>）は行の区切りなので、列数には影響しません。</p>



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



<h3 class="wp-block-heading"><span id="toc11">パターン1: VLOOKUP関数と組み合わせて列番号を自動化</span></h3>



<p class="wp-block-paragraph">VLOOKUP関数で列番号を手入力していると、列の追加や削除のたびに修正が必要です。COLUMNS関数を組み合わせると、オートフィルで列番号が自動的にずれてくれます。</p>



<p class="wp-block-paragraph">たとえば、A1:G10に商品データの表があるとします。E1に検索値を入力し、各列の値を横方向に取り出す数式は次のとおりです。</p>



<pre class="wp-block-code"><code>=VLOOKUP($E$1,$A$1:$G$10,COLUMNS($A$1:A1),FALSE)</code></pre>



<p class="wp-block-paragraph">この数式を右方向にコピーすると、COLUMNS関数の部分が次のように変化します。</p>



<ul class="wp-block-list"><li><code>COLUMNS($A$1:B1)</code> → 2</li><li><code>COLUMNS($A$1:C1)</code> → 3</li></ul>



<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>同じテクニックは<a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>の行方向でも使えます。HLOOKUPの行番号を自動化したい場合は、対になる<a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS関数</a>を使ってください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc12">パターン2: INDEX関数と組み合わせて最終列のデータを取得</span></h3>



<p class="wp-block-paragraph">データ範囲の最後の列の値を取り出したいときに便利なパターンです。</p>



<pre class="wp-block-code"><code>=INDEX(A1:G1,COLUMNS(A1:G1))</code></pre>



<p class="wp-block-paragraph">COLUMNS関数で範囲の列数を取得し、<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a>の列番号に渡しています。範囲が7列あるので、7列目（つまり最後の列）のデータを返します。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン3: OFFSET関数と組み合わせて可変範囲を作る</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-offset/">OFFSET関数</a>の「幅」引数にCOLUMNS関数を使うと、範囲のサイズを動的に制御できます。</p>



<pre class="wp-block-code"><code>=OFFSET(A1,0,0,1,COLUMNS(データ範囲))</code></pre>



<p class="wp-block-paragraph">名前付き範囲「データ範囲」の列数に応じて、OFFSET関数が返す範囲の幅が変わります。グラフの参照範囲やドロップダウンリストの元データを可変にしたいときに活躍するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン4: INDIRECT関数と組み合わせて動的な列数を取得</span></h3>



<p class="wp-block-paragraph">文字列で組み立てた範囲の列数を調べたいときに使えます。</p>



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



<p class="wp-block-paragraph">セルB1に列文字（たとえば「E」）を入力すると、<code>=COLUMNS(A1:E1)</code> と同じ結果になります。ユーザーが列の範囲を指定して制御する仕組みを作りたいときに便利ですよ。<a href="https://mashukabu.com/excel-function-howto-use-indirect/">INDIRECT関数</a>の詳しい使い方は関連記事をご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン5: データ件数の検証に使う</span></h3>



<p class="wp-block-paragraph">ROWS関数と組み合わせて、データ範囲の総セル数を計算できます。</p>



<pre class="wp-block-code"><code>=ROWS(A1:G10)*COLUMNS(A1:G10)</code></pre>



<p class="wp-block-paragraph">この数式は <code>10 * 7 = 70</code> を返します。想定どおりのデータサイズか確認したいときに使えるパターンです。<a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS関数</a>で行数、COLUMNS関数で列数を取得し、掛け合わせて総セル数を求めています。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>引数なしでエラー</td><td><code>=COLUMNS()</code> と引数を省略した</td><td>COLUMNS関数は引数が必須です。列数を調べたい範囲を必ず指定してください</td></tr><tr><td><code>#REF!</code></td><td>参照先の行や列が削除された</td><td>参照先セルが存在するか確認してください</td></tr><tr><td><code>#NAME?</code></td><td>名前付き範囲のスペルミス</td><td>名前の定義を確認してください。「数式」タブの「名前の管理」から一覧を見られます</td></tr><tr><td><code>#VALUE!</code></td><td>無効な値を引数に指定した</td><td>セル範囲、名前付き範囲、配列定数のいずれかを指定してください</td></tr><tr><td>期待と違う数値が返る</td><td>列数ではなく列番号を求めていた</td><td>列番号がほしい場合は<a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN関数</a>を使ってください</td></tr></tbody></table></figure>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>引数の対象</th><th>用途</th></tr></thead><tbody><tr><td><strong>COLUMNS</strong></td><td>列数（サイズ）</td><td>セル範囲</td><td>範囲が何列あるかを調べる</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-column/">COLUMN</a></td><td>列番号（位置）</td><td>セル</td><td>セルが何列目にあるかを調べる</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS</a></td><td>行数（サイズ）</td><td>セル範囲</td><td>範囲が何行あるかを調べる</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-row/">ROW</a></td><td>行番号（位置）</td><td>セル</td><td>セルが何行目にあるかを調べる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">COLUMNS関数とCOLUMN関数は名前が似ていますが、役割がまったく異なります。</p>



<ul class="wp-block-list"><li><strong>COLUMN関数</strong>: セルの「位置」を返す。<code>=COLUMN(C1)</code> は <code>3</code>（3列目にある）</li><li><strong>COLUMNS関数</strong>: 範囲の「サイズ」を返す。<code>=COLUMNS(C1:G1)</code> は <code>5</code>（5列分ある）</li></ul>



<p class="wp-block-paragraph">覚え方は「複数形のCOLUMNSは範囲全体の列数を数える」と考えるとわかりやすいです。</p>



<p class="wp-block-paragraph">COLUMNS関数と<a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS関数</a>は列と行の方向が違うだけの対称ペアです。構文も <code>=COLUMNS(範囲)</code> と <code>=ROWS(範囲)</code> で同じ形なので、セットで覚えてしまいましょう。</p>



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



<p class="wp-block-paragraph">COLUMNS関数はセル範囲の列数を取得するシンプルな関数です。他の関数と組み合わせることで、列番号の自動化やデータ範囲の動的制御に活用できます。</p>



<ul class="wp-block-list"><li>構文は <code>=COLUMNS(配列)</code> で引数は1つだけ（省略不可）</li><li>COLUMN関数が「位置」、COLUMNS関数が「サイズ」を返す</li><li>VLOOKUP・INDEX・OFFSETなどとの組み合わせが実務で便利</li><li>対称ペアのROWS関数もあわせて覚えておくと効果的</li></ul>



<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-column/">COLUMN関数の使い方｜列番号を調べる</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-rows/">ROWS関数の使い方｜セル範囲の行数を調べる</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-vlookup/">VLOOKUP関数の使い方｜表から値を検索する</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-offset/">OFFSET関数の使い方｜基準セルからの相対参照</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数の使い方｜検索値の位置を調べる</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-iferror/">IFERROR関数の使い方｜エラーを非表示にする</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-columns/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>COLUMN関数の使い方｜VLOOKUPの列番号を自動化</title>
		<link>https://mashukabu.com/excel-function-howto-use-column/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-column/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 26 May 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[COLUMN関数]]></category>
		<category><![CDATA[INDEX]]></category>
		<category><![CDATA[MATCH]]></category>
		<category><![CDATA[VLOOKUP]]></category>
		<category><![CDATA[XLOOKUP]]></category>
		<category><![CDATA[列番号]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2066</guid>

					<description><![CDATA[COLUMN関数の基本から応用まで解説。VLOOKUPの第3引数にCOLUMN()-Nを使えば、列の追加・削除で番号がズレない数式が作れます。横連番の自動生成やINDEX+MATCHとの組み合わせも紹介。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">VLOOKUPの列番号でミスしたことありませんか？　列を追加するたびに数式を修正するのは、地味にストレスですよね。そのまま放置すると、参照先がズレて間違った値を返してしまうことも。そんな悩みを解決するのが、ExcelのCOLUMN関数です。</p>



<p class="wp-block-paragraph">この記事では、COLUMN関数の基本から、VLOOKUPとの組み合わせ、横方向の連番生成まで、実務で使えるテクニックを紹介します。</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">COLUMN関数とは？基本の使い方をおさらい</a><ol><li><a href="#toc2" tabindex="0">引数なし：今いる列の番号をそのまま返す</a></li><li><a href="#toc3" tabindex="0">引数あり：任意のセルの列番号を取得する</a></li><li><a href="#toc4" tabindex="0">ROW関数との対称パターン表（行と列の整理）</a></li></ol></li><li><a href="#toc5" tabindex="0">VLOOKUP × COLUMN関数｜列番号を自動化する方法</a><ol><li><a href="#toc6" tabindex="0">手入力の列番号が壊れる場面（列追加・削除のあるある）</a></li><li><a href="#toc7" tabindex="0">COLUMN()-Nでズレを計算する思考ステップ</a></li><li><a href="#toc8" tabindex="0">実際の数式：複数列を一括で取得するサンプル</a></li></ol></li><li><a href="#toc9" tabindex="0">横方向に連番を自動生成する</a><ol><li><a href="#toc10" tabindex="0">基本パターン：COLUMN()-Nで1・2・3…と振る</a></li><li><a href="#toc11" tabindex="0">M365スピル対応：SEQUENCE関数との比較</a></li></ol></li><li><a href="#toc12" tabindex="0">INDEX + MATCH + COLUMNの組み合わせ</a><ol><li><a href="#toc13" tabindex="0">VLOOKUPからINDEX+MATCHに移行するときの書き方</a></li><li><a href="#toc14" tabindex="0">COLUMN関数で列参照をまとめて横展開する</a></li></ol></li><li><a href="#toc15" tabindex="0">INDIRECT + COLUMNで動的シート参照</a></li><li><a href="#toc16" tabindex="0">XLOOKUPではCOLUMN関数が不要になるケース</a><ol><li><a href="#toc17" tabindex="0">XLOOKUPの戻り範囲指定との違い</a></li><li><a href="#toc18" tabindex="0">それでもCOLUMN関数が必要な場面</a></li></ol></li><li><a href="#toc19" tabindex="0">COLUMN関数 よくある質問・エラー対処</a><ol><li><a href="#toc20" tabindex="0">#VALUE!・#REF!が出たときの確認ポイント</a></li><li><a href="#toc21" tabindex="0">COLUMNS関数との違いは？</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">COLUMN関数（読み：カラム）は、セルの列番号を数値で返す関数です。A列なら1、B列なら2、C列なら3を返します。名前のとおり「列（Column）」の番号を取得する、シンプルな関数です。</p>



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



<pre class="wp-block-code"><code>=COLUMN([参照])</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>=COLUMN()</code></pre>



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



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



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



<pre class="wp-block-code"><code>=COLUMN(A1)    → 1
=COLUMN(D10)   → 4
=COLUMN(G5)    → 7</code></pre>



<p class="wp-block-paragraph">範囲を指定した場合は、左端の列番号を返します。たとえば <code>=COLUMN(B1:E1)</code> は「2」です。Microsoft 365環境では、スピルで <code>{2,3,4,5}</code> と複数の列番号を返します。</p>



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



<p class="wp-block-paragraph">COLUMN関数には、行番号を返す<a href="https://mashukabu.com/excel-function-howto-use-row/">ROW関数</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><code>=ROW()-ROW($A$1)</code></td><td><code>=COLUMN()-COLUMN($A$1)</code></td></tr></tbody></table></figure>



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



<h2 class="wp-block-heading"><span id="toc5">VLOOKUP × COLUMN関数｜列番号を自動化する方法</span></h2>



<p class="wp-block-paragraph">COLUMN関数が最も活躍するのは、<a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数</a>との組み合わせです。VLOOKUPの第3引数「列番号」を手入力していませんか？</p>



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



<p class="wp-block-paragraph">VLOOKUPの列番号を手入力で「2」「3」「4」と書いていると、こんな問題が起きます。</p>



<ul class="wp-block-list"><li>検索範囲の途中に列を追加すると、番号がズレる</li><li>列を削除したときも、全数式を修正する必要がある</li><li>コピーして横に展開するとき、手動で番号を変える手間がかかる</li></ul>



<p class="wp-block-paragraph">数式が数個ならまだ対処できます。でも数十個あると、修正漏れが確実に発生しますよね。</p>



<h3 class="wp-block-heading"><span id="toc7">COLUMN()-Nでズレを計算する思考ステップ</span></h3>



<p class="wp-block-paragraph">COLUMN関数を使えば、列番号が自動で変わります。考え方は次の3ステップです。</p>



<ol class="wp-block-list"><li><code>COLUMN()</code> で数式セルの列番号を取得する</li><li><code>COLUMN(検索範囲の左端)</code> で基準の列番号を取得する</li><li>差分に+1して、VLOOKUPの列番号にする</li></ol>



<p class="wp-block-paragraph">汎用的な計算式はこうなります。</p>



<pre class="wp-block-code"><code>COLUMN() - COLUMN(検索範囲の左端) + 1</code></pre>



<p class="wp-block-paragraph">たとえば、数式がC列、検索範囲がB列始まりの場合を考えます。<code>COLUMN()</code> は3、<code>COLUMN($B$1)</code> は2です。3 &#8211; 2 + 1 = <strong>2</strong>で、検索範囲の2列目を返します。D列にコピーすれば自動で3列目になりますよ。</p>



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



<p class="wp-block-paragraph">実際のVLOOKUP数式に組み込むと、こうなります。</p>



<pre class="wp-block-code"><code>=VLOOKUP($A2, $B:$F, COLUMN()-COLUMN($B$1)+1, 0)</code></pre>



<p class="wp-block-paragraph">この数式をC列からF列まで横にコピーするだけで、各列の値を取得できます。列を追加・削除しても数式の修正は不要です。</p>



<p class="wp-block-paragraph">もし検索範囲がA列始まりで、数式がB列から始まるシンプルなケースなら、もっと短く書けます。</p>



<pre class="wp-block-code"><code>=VLOOKUP($A2, $A:$F, COLUMN(), 0)</code></pre>



<p class="wp-block-paragraph">B列の <code>COLUMN()</code> は2なので、検索範囲の2列目を返します。引く数が不要になり、スッキリした数式になります。実務では検索範囲の開始位置に合わせて使い分けてみてください。</p>



<h2 class="wp-block-heading"><span id="toc9">横方向に連番を自動生成する</span></h2>



<p class="wp-block-paragraph">COLUMN関数は、横方向に1, 2, 3&#8230;と連番を振りたいときにも使えます。</p>



<h3 class="wp-block-heading"><span id="toc10">基本パターン：COLUMN()-Nで1・2・3…と振る</span></h3>



<p class="wp-block-paragraph">B列から横方向に連番を振る場合、次の数式を使います。</p>



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



<p class="wp-block-paragraph">B列に入力すると1、C列なら2、D列なら3を返します。ROW関数で縦方向に連番を振るのと同じ発想ですね。</p>



<p class="wp-block-paragraph">A列から始める場合は、もっとシンプルです。</p>



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



<p class="wp-block-paragraph">A列=1、B列=2、C列=3と、そのまま連番になります。</p>



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



<p class="wp-block-paragraph">Microsoft 365をお使いなら、SEQUENCE関数でも横方向の連番を生成できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>目的</th><th>COLUMN()（※M365）</th><th>SEQUENCE()</th></tr></thead><tbody><tr><td>1から5の連番</td><td><code>=COLUMN(A:E)</code> → {1,2,3,4,5}</td><td><code>=SEQUENCE(1,5)</code></td></tr><tr><td>3から始まる連番</td><td>直接指定できない</td><td><code>=SEQUENCE(1,5,3)</code></td></tr><tr><td>実際の列番号を取得</td><td><code>=COLUMN(C:F)</code> → {3,4,5,6}</td><td>計算が必要</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">連番を振ることが目的ならSEQUENCE関数の方がシンプルです。一方、実際のセル位置（列番号）が必要な場面ではCOLUMN関数が適しています。目的に応じて使い分けてみてください。</p>



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



<p class="wp-block-paragraph">VLOOKUPよりも柔軟な検索ができる<a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX関数</a> + <a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数</a>の組み合わせでも、COLUMN関数は活躍します。</p>



<h3 class="wp-block-heading"><span id="toc13">VLOOKUPからINDEX+MATCHに移行するときの書き方</span></h3>



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



<pre class="wp-block-code"><code>=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))</code></pre>



<p class="wp-block-paragraph">VLOOKUPとの違いは、検索列と戻り列を別々に指定する点です。検索列より左の値も取得できるのが大きなメリットですね。</p>



<p class="wp-block-paragraph">詳しい比較は「<a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX MATCHの比較</a>」もあわせてご覧ください。</p>



<h3 class="wp-block-heading"><span id="toc14">COLUMN関数で列参照をまとめて横展開する</span></h3>



<p class="wp-block-paragraph">INDEX + MATCHを横方向にコピーしたいとき、戻り範囲をCOLUMN関数で動的に指定できます。</p>



<pre class="wp-block-code"><code>=INDEX($B$1:$F$100, MATCH($A2,$B$1:$B$100,0), COLUMN()-COLUMN($B$1)+1)</code></pre>



<p class="wp-block-paragraph">この数式をC列以降にコピーすると、COLUMN関数の部分が自動で2, 3, 4&#8230;と増えます。VLOOKUPのときと同じ考え方なので、一度覚えれば応用はかんたんですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">INDIRECT + COLUMNで動的シート参照</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">たとえば、COLUMN関数の戻り値をADDRESS関数でセル参照文字列に変換し、INDIRECTで実際の参照に変えるパターンです。</p>



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



<p class="wp-block-paragraph">ちょっとむずかしく見えますが、やっていることはシンプルです。COLUMN関数で列番号を取得し、ADDRESS関数でセル参照文字列（例: &#8220;B3&#8243;）に変換し、INDIRECTで実際の参照にしているだけです。C3セルに入力した場合、「1列左のセル＝B3」の値を返します。</p>



<p class="wp-block-paragraph">複数シートの同じ位置から値を集める場面では、Sheet名を変数にしたINDIRECTと組み合わせる使い方も有効です。列番号からアルファベットを取得する方法は「<a href="https://mashukabu.com/excel-function-howto-get-column-alphabet/">列番号からアルファベットを取得する方法</a>」も参考にしてみてください。</p>



<h2 class="wp-block-heading"><span id="toc16">XLOOKUPではCOLUMN関数が不要になるケース</span></h2>



<p class="wp-block-paragraph">Microsoft 365で使える<a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数</a>では、COLUMN関数の出番が減ります。</p>



<h3 class="wp-block-heading"><span id="toc17">XLOOKUPの戻り範囲指定との違い</span></h3>



<p class="wp-block-paragraph">VLOOKUPとXLOOKUPでは、戻り値の指定方法が根本的に異なります。</p>



<pre class="wp-block-code"><code>// VLOOKUP：列番号で指定（ズレのリスクあり）
=VLOOKUP($A2, $B:$F, COLUMN()-COLUMN($B$1)+1, 0)

// XLOOKUP：戻り範囲を直接指定（列番号不要）
=XLOOKUP($A2, $B:$B, C:C)</code></pre>



<p class="wp-block-paragraph">XLOOKUPは戻り値を「列番号」ではなく「戻り範囲」で直接指定します。列を追加・削除しても参照がずれないため、COLUMN関数で列番号を計算する必要がありません。</p>



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



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



<ul class="wp-block-list"><li>横方向の連番を振りたいとき</li><li>INDEX関数の列引数を動的に変えたいとき</li><li>条件付き書式で列位置に応じた判定をしたいとき</li><li>マクロやVBAに列番号を渡したいとき</li></ul>



<p class="wp-block-paragraph">検索系の関数ではXLOOKUPに任せつつ、列番号の取得が必要な場面ではCOLUMN関数を使う。この使い分けがポイントですよ。</p>



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



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



<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>#VALUE!</td><td>引数にテキスト文字列を指定した</td><td>セル参照に修正する</td></tr><tr><td>#REF!</td><td>参照先の列が削除された</td><td>数式を再入力する</td></tr></tbody></table></figure>



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



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



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



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



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



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



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



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



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



<ul class="wp-block-list"><li>VLOOKUPの列番号を自動化して、列の追加・削除に強くする</li><li>横方向に連番を振る</li><li>INDEX + MATCHの列指定を動的にする</li><li>XLOOKUPでは不要になるが、連番や列番号取得では引き続き活躍</li></ul>



<p class="wp-block-paragraph">まずはVLOOKUPの列番号をCOLUMN関数に置き換えるところから試してみてください。数式のメンテナンスがぐっと楽になりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-column/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
