<?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>TOCOL &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/tocol/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 28 May 2026 22:58:32 +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>TOCOL &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>TOCOL関数の使い方｜配列を1列に変換・空白除外・実務活用5例</title>
		<link>https://mashukabu.com/excel-function-howto-use-tocol/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-tocol/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 17 Nov 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[TOCOL]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[動的配列]]></category>
		<category><![CDATA[配列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3022</guid>

					<description><![CDATA[ExcelのTOCOL関数で配列を1列に変換する方法を解説。空白除外・TOROW関数との違い・UNIQUE連携など実務5事例と、scan_by_columnの使い方も紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">複数列にまたがるデータを1列にまとめたいとき、ありませんか。</p>



<p class="wp-block-paragraph">手作業でコピペを繰り返すのは面倒ですし、VBAを書くのは大げさですよね。</p>



<p class="wp-block-paragraph">TOCOL関数を使えば、数式ひとつで2次元データを縦1列に変換できます。空白やエラーの除外もオプションで指定できるので、データの前処理にぴったりです。</p>



<p class="wp-block-paragraph">この記事では、TOCOL関数の基本から実務での活用例まで解説します。</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">TOCOL関数とは</a></li><li><a href="#toc2" tabindex="0">TOCOL関数の構文と引数</a><ol><li><a href="#toc3" tabindex="0">引数「無視」の値</a></li><li><a href="#toc4" tabindex="0">引数「scan_by_column」の動作</a></li></ol></li><li><a href="#toc5" tabindex="0">TOCOL関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">2次元データをそのまま1列にする</a></li><li><a href="#toc7" tabindex="0">空白セルを除外して1列にする</a></li><li><a href="#toc8" tabindex="0">エラー値を除外して1列にする</a></li><li><a href="#toc9" tabindex="0">列方向にスキャンして1列にする</a></li></ol></li><li><a href="#toc10" tabindex="0">TOCOL関数とTOROW関数の違いと使い分け</a></li><li><a href="#toc11" tabindex="0">他の配列関数とTOCOL関数の組み合わせ活用</a><ol><li><a href="#toc12" tabindex="0">HSTACK / VSTACKとの組み合わせ</a></li><li><a href="#toc13" tabindex="0">UNIQUEとの組み合わせ</a></li><li><a href="#toc14" tabindex="0">FILTERとの組み合わせ</a></li><li><a href="#toc15" tabindex="0">SORTとの組み合わせ</a></li></ol></li><li><a href="#toc16" tabindex="0">WRAPCOLS / WRAPROWSとの関係</a></li><li><a href="#toc17" tabindex="0">TOCOL関数の実務活用例5選</a><ol><li><a href="#toc18" tabindex="0">名簿管理：部署別の名前を1列にまとめる</a></li><li><a href="#toc19" tabindex="0">商品管理：カテゴリ別コードの重複チェック</a></li><li><a href="#toc20" tabindex="0">アンケート集計：複数列の回答をCOUNTIF集計</a></li><li><a href="#toc21" tabindex="0">データ前処理：横結合→1列→重複除去</a></li><li><a href="#toc22" tabindex="0">レポート生成：条件抽出→1列→並び替え</a></li></ol></li><li><a href="#toc23" tabindex="0">TOCOL関数のよくあるエラーと対処法</a></li><li><a href="#toc24" tabindex="0">TAKE・DROP と組み合わせて先頭・末尾N件を取り出す</a></li><li><a href="#toc25" tabindex="0">BYROW + TOCOL で行ごとに列を縦結合する</a></li><li><a href="#toc26" tabindex="0">INDIRECT と組み合わせて複数シートのデータを1列に集約する</a></li><li><a href="#toc27" tabindex="0">TRIMRANGE と組み合わせて端の空白を除去してから1列に変換する</a></li><li><a href="#toc28" tabindex="0">TOCOL関数が重い・遅いときの対処法</a><ol><li><a href="#toc29" tabindex="0">参照範囲を必要最小限に絞る</a></li><li><a href="#toc30" tabindex="0">テーブル機能で動的範囲化する</a></li><li><a href="#toc31" tabindex="0">揮発性関数との併用を避ける</a></li><li><a href="#toc32" tabindex="0">結果を値貼り付けに置き換える</a></li></ol></li><li><a href="#toc33" tabindex="0">GoogleスプレッドシートでTOCOLを使う方法</a></li><li><a href="#toc34" tabindex="0">Excel 2021以前のバージョンで同じ結果を得る代替手段</a><ol><li><a href="#toc35" tabindex="0">Power Queryの「列のピボット解除」を使う</a></li><li><a href="#toc36" tabindex="0">INDEX関数とROW・COLUMN式で再現する</a></li></ol></li><li><a href="#toc37" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">TOCOL関数は、配列やセル範囲を縦1列に変換する関数です。読み方は「トゥーコル」で、&#8221;TO COLumn&#8221;（列へ変換）の略です。</p>



<p class="wp-block-paragraph">たとえば3行×4列の表なら、12行×1列に展開できます。結果はスピルで自動展開されるので、出力セルを1つずつ指定する必要はありません。</p>



<p class="wp-block-paragraph">TOCOL関数でできることを整理すると、次のようになります。</p>



<ul class="wp-block-list"><li>複数列に分散したデータを縦1列にまとめる</li><li>空白セルやエラー値を除外して詰めた一覧を作る</li><li>行方向・列方向の2通りのスキャン順序を選べる</li><li>UNIQUE・FILTER・SORTなど他の配列関数と組み合わせて柔軟に加工できる</li></ul>



<p class="wp-block-paragraph">対応バージョンはMicrosoft 365とExcel 2024です。Excel 2021では使用できないので注意してください。Excel 2021はスピル対応済みですが、TOCOL関数自体は含まれていません。</p>



<h2 class="wp-block-heading"><span id="toc2">TOCOL関数の構文と引数</span></h2>



<pre class="wp-block-code"><code>=TOCOL(配列, [無視], [scan_by_column])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略</th><th>説明</th></tr></thead><tbody><tr><td>配列</td><td>必須</td><td>1列に変換したい配列またはセル範囲</td></tr><tr><td>無視</td><td>省略可</td><td>除外する値の種類を指定（0〜3）</td></tr><tr><td>scan_by_column</td><td>省略可</td><td>スキャン方向を指定（FALSEまたはTRUE）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">引数「無視」の値</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>動作</th></tr></thead><tbody><tr><td>0（省略時）</td><td>すべての値を保持する</td></tr><tr><td>1</td><td>空白セルを除外する</td></tr><tr><td>2</td><td>エラー値を除外する</td></tr><tr><td>3</td><td>空白とエラーの両方を除外する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第2引数を省略すると0と同じ扱いです。空白やエラーが混在するデータでは、1や3を指定すると余計な行が入りません。</p>



<h3 class="wp-block-heading"><span id="toc4">引数「scan_by_column」の動作</span></h3>



<p class="wp-block-paragraph">次のような2行3列のデータで考えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th><th>B列</th><th>C列</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></tbody></table></figure>



<ul class="wp-block-list"><li>FALSE（省略時）：1, 2, 3, 4, 5, 6の順になります。行を左から右へ読む動きです。</li><li>TRUE：1, 4, 2, 5, 3, 6の順になります。列を上から下へ読む動きです。</li></ul>



<p class="wp-block-paragraph">各行が1レコードの表ならFALSEが自然です。月別データなど列単位のまとまりがあればTRUEを使います。</p>



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



<h3 class="wp-block-heading"><span id="toc6">2次元データをそのまま1列にする</span></h3>



<p class="wp-block-paragraph">A2:C4に3行3列のデータがある場合です。</p>



<pre class="wp-block-code"><code>=TOCOL(A2:C4)</code></pre>



<p class="wp-block-paragraph">行順（左→右→次の行）で9行1列に展開されます。</p>



<h3 class="wp-block-heading"><span id="toc7">空白セルを除外して1列にする</span></h3>



<p class="wp-block-paragraph">データに空白が混在している場合です。第2引数に1を指定します。</p>



<pre class="wp-block-code"><code>=TOCOL(A2:C10, 1)</code></pre>



<p class="wp-block-paragraph">空白セルを飛ばし、値だけを詰めた1列が返ります。</p>



<h3 class="wp-block-heading"><span id="toc8">エラー値を除外して1列にする</span></h3>



<p class="wp-block-paragraph">#N/Aや#VALUE!が含まれるデータ向けです。</p>



<pre class="wp-block-code"><code>=TOCOL(A2:C10, 2)</code></pre>



<p class="wp-block-paragraph">エラーセルを除外して値だけを1列にします。</p>



<h3 class="wp-block-heading"><span id="toc9">列方向にスキャンして1列にする</span></h3>



<p class="wp-block-paragraph">第3引数にTRUEを指定します。</p>



<pre class="wp-block-code"><code>=TOCOL(A2:C4, 0, TRUE)</code></pre>



<p class="wp-block-paragraph">列単位で上から下へ読み取ります。月別に並んだ列を時系列で1列にしたいときに向いています。</p>



<h2 class="wp-block-heading"><span id="toc10">TOCOL関数とTOROW関数の違いと使い分け</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-torow/">TOROW関数</a>は、配列を横1行に変換する関数です。TOCOLとは出力の方向だけが異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>TOCOL</th><th>TOROW</th></tr></thead><tbody><tr><td>出力方向</td><td>縦1列</td><td>横1行</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">使い分けのポイントは、後続の関数が何を求めるかです。XLOOKUPの検索範囲は縦配列なのでTOCOLが向いています。横に並べたい場面ではTOROWを選びます。</p>



<p class="wp-block-paragraph">なお、従来の<a href="https://mashukabu.com/excel-function-howto-use-transpose/">TRANSPOSE関数</a>は行列の転置のみです。2次元を1次元にフラット化するのはTOCOL/TOROWの役割です。</p>



<h2 class="wp-block-heading"><span id="toc11">他の配列関数とTOCOL関数の組み合わせ活用</span></h2>



<p class="wp-block-paragraph">TOCOL関数は他の配列関数と組み合わせると、活用の幅が広がります。</p>



<h3 class="wp-block-heading"><span id="toc12">HSTACK / VSTACKとの組み合わせ</span></h3>



<p class="wp-block-paragraph">離れた列を<a href="https://mashukabu.com/excel-function-howto-use-hstack/">HSTACK関数</a>で横結合してから1列にできます。</p>



<pre class="wp-block-code"><code>=TOCOL(HSTACK(A2:A10, C2:C10, E2:E10))</code></pre>



<p class="wp-block-paragraph">複数シートのデータは<a href="https://mashukabu.com/excel-function-howto-use-vstack/">VSTACK関数</a>で縦結合してから渡します。</p>



<pre class="wp-block-code"><code>=TOCOL(VSTACK(Sheet1!A2:D5, Sheet2!A2:D5), 1)</code></pre>



<h3 class="wp-block-heading"><span id="toc13">UNIQUEとの組み合わせ</span></h3>



<p class="wp-block-paragraph">複数列のデータを1列にまとめて重複を除去できます。</p>



<pre class="wp-block-code"><code>=UNIQUE(TOCOL(A2:D20, 1))</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-unique/">UNIQUE関数</a>で一意の値だけを取り出せます。</p>



<h3 class="wp-block-heading"><span id="toc14">FILTERとの組み合わせ</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER関数</a>の抽出結果を1列に整形できます。</p>



<pre class="wp-block-code"><code>=TOCOL(FILTER(A2:D10, B2:B10=&quot;東京&quot;), 1)</code></pre>



<h3 class="wp-block-heading"><span id="toc15">SORTとの組み合わせ</span></h3>



<p class="wp-block-paragraph">1列にしたデータを<a href="https://mashukabu.com/excel-function-howto-use-sort/">SORT関数</a>で並び替えできます。</p>



<pre class="wp-block-code"><code>=SORT(TOCOL(A2:C10, 1))</code></pre>



<h2 class="wp-block-heading"><span id="toc16">WRAPCOLS / WRAPROWSとの関係</span></h2>



<p class="wp-block-paragraph">TOCOLで1列にしたデータを別の列数で並べ直したいときがあります。WRAPCOLS関数なら、1列のデータを指定列数で折り返して2次元に再形成できます。WRAPROWSは行数で折り返す関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>変換方向</th><th>用途</th></tr></thead><tbody><tr><td>TOCOL</td><td>2次元 → 縦1列</td><td>複数列を縦1列にフラット化</td></tr><tr><td>TOROW</td><td>2次元 → 横1行</td><td>複数列を横1行にフラット化</td></tr><tr><td>WRAPCOLS</td><td>縦1列 → 2次元</td><td>1列を指定列数で折り返して2次元に変換</td></tr><tr><td>WRAPROWS</td><td>横1行 → 2次元</td><td>1行を指定行数で折り返して2次元に変換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">TOCOLとWRAPCOLSはちょうど逆の操作にあたります。「1列にしてから別の列数で並べ直したい」ときはこの2つをセットで使うと便利です。</p>



<h2 class="wp-block-heading"><span id="toc17">TOCOL関数の実務活用例5選</span></h2>



<h3 class="wp-block-heading"><span id="toc18">名簿管理：部署別の名前を1列にまとめる</span></h3>



<p class="wp-block-paragraph">部署ごとに列が分かれた名簿をTOCOLで1列にします。空白除外を指定すれば、人数差による空白も飛ばせます。そのままXLOOKUPの検索リストとして使えます。</p>



<pre class="wp-block-code"><code>=TOCOL(A2:E20, 1)</code></pre>



<h3 class="wp-block-heading"><span id="toc19">商品管理：カテゴリ別コードの重複チェック</span></h3>



<p class="wp-block-paragraph">カテゴリ別に分散した商品コードを1列にまとめ、UNIQUEで重複を検出します。元データより行数が少なければ重複ありです。</p>



<pre class="wp-block-code"><code>=UNIQUE(TOCOL(A2:D50, 1))</code></pre>



<h3 class="wp-block-heading"><span id="toc20">アンケート集計：複数列の回答をCOUNTIF集計</span></h3>



<p class="wp-block-paragraph">自由回答が複数列にまたがるとき、TOCOLで1列にしてからCOUNTIFで集計します。列ごとに数式を書く手間が省けます。</p>



<pre class="wp-block-code"><code>=COUNTIF(TOCOL(B2:D100, 1), &quot;満足&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc21">データ前処理：横結合→1列→重複除去</span></h3>



<p class="wp-block-paragraph">HSTACKで横結合した表をTOCOLで1列にし、UNIQUEで重複を除去する3段階の流れです。</p>



<pre class="wp-block-code"><code>=UNIQUE(TOCOL(HSTACK(A2:A50, C2:C50), 1))</code></pre>



<h3 class="wp-block-heading"><span id="toc22">レポート生成：条件抽出→1列→並び替え</span></h3>



<p class="wp-block-paragraph">FILTERで条件に合うデータを抽出し、TOCOLで1列にしてからSORTで昇順に並べます。</p>



<pre class="wp-block-code"><code>=SORT(TOCOL(FILTER(A2:D20, E2:E20&gt;=100), 1))</code></pre>



<p class="wp-block-paragraph">条件に合う値だけを並び替えた一覧を作れます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#SPILL!</td><td>出力先の下に既存データがある</td><td>出力先の下方向を空けてください</td></tr><tr><td>#NUM!</td><td>配列が大きすぎて列に収まらない</td><td>より小さい範囲を参照してください</td></tr><tr><td>#VALUE!</td><td>引数に不正な値を指定している</td><td>各引数の値を確認してください</td></tr><tr><td>#NAME?</td><td>非対応バージョンで使用している</td><td>Microsoft 365またはExcel 2024で使用してください</td></tr><tr><td>#CALC!</td><td>結果が空（FILTER等の組み合わせ時）</td><td>入力データや条件を見直してください</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">よく出るのは<code>#NAME?</code>と<code>#SPILL!</code>の2つです。<code>#NAME?</code>が出たら、まずバージョンを確認しましょう。TOCOL関数はMicrosoft 365とExcel 2024で使えます。Excel 2021では対応していません。</p>



<p class="wp-block-paragraph"><code>#SPILL!</code>は出力先の下に既存データがある場合に発生します。TOCOL関数の出力行数は可変なので、出力先セルの下は十分に空けておいてください。</p>



<p class="wp-block-paragraph"><code>#CALC!</code>はFILTERと組み合わせたときに条件に一致する行がゼロの場合に発生します。IFERRORで囲むか、条件式を見直してください。</p>



<h2 class="wp-block-heading"><span id="toc24">TAKE・DROP と組み合わせて先頭・末尾N件を取り出す</span></h2>



<p class="wp-block-paragraph">TOCOLで1列に変換したあと、<a href="https://mashukabu.com/excel-function-howto-use-take/">TAKE関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-drop/">DROP関数</a>で先頭や末尾のN件だけを取り出せます。「複数列にまたがるデータを1列に並べ、そのうち上位10件だけを表示したい」といった場面でよく使います。</p>



<pre class="wp-block-code"><code>' 複数列データを1列にしてから上位5件を取り出す
=TAKE(SORT(TOCOL(A2:D20, 1), 1, -1), 5)</code></pre>



<p class="wp-block-paragraph">SORTで降順に並び替えた1列データから、TAKEで先頭5件（=上位5件）を取得しています。上位N件を動的に変えたいときはTAKEの第2引数をセル参照にしておくと便利です。</p>



<p class="wp-block-paragraph">逆にDROPを使えばヘッダー行や不要な先頭行を除いてから処理できます。</p>



<pre class="wp-block-code"><code>' 先頭1行を除いてから1列に変換する
=TOCOL(DROP(A1:D10, 1), 1)</code></pre>



<p class="wp-block-paragraph">TAKE・DROPはMicrosoft 365とExcel 2024で使用できます。TOCOLと同じ対応バージョンなので、セットで使っても問題ありません。</p>



<h2 class="wp-block-heading"><span id="toc25">BYROW + TOCOL で行ごとに列を縦結合する</span></h2>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>とTOCOLを組み合わせると、各行の複数列を「行ごとに結合した文字列」に変換できます。たとえば「姓・名・部署が3列に分かれているデータを1列のフルラベルにしたい」場面で役立ちます。</p>



<pre class="wp-block-code"><code>' 各行の3列（A:C列）を「姓 名（部署）」形式で結合して1列に返す
=BYROW(A2:C10, LAMBDA(row, TOCOL(row, 1)(1) &amp; &quot; &quot; &amp; TOCOL(row, 1)(2) &amp; &quot;（&quot; &amp; TOCOL(row, 1)(3) &amp; &quot;）&quot;))</code></pre>



<p class="wp-block-paragraph">ただし、TEXTJOIN関数の方がシンプルなケースも多いです。BYROW + TOCOLは「行ごとに可変個の値を動的に結合する」など複雑な処理を共通化するときに有効です。</p>



<p class="wp-block-paragraph">より実用的なパターンとして、各行の非空白値だけを抽出してカンマ区切りにする例を示します。</p>



<pre class="wp-block-code"><code>' 各行の空白以外の値をカンマ区切りで1セルに収める
=BYROW(A2:E10, LAMBDA(row, TEXTJOIN(&quot;, &quot;, TRUE, TOCOL(row, 1))))</code></pre>



<p class="wp-block-paragraph">TOCOL(row, 1)で空白を除いた値だけ取り出し、TEXTJOINでつなげています。アンケートの複数選択肢や、月によって入力列が変わるような不規則なデータの集約に使えます。</p>



<h2 class="wp-block-heading"><span id="toc26">INDIRECT と組み合わせて複数シートのデータを1列に集約する</span></h2>



<p class="wp-block-paragraph">月別・支店別などシートが分かれているデータを1列にまとめたいときは、INDIRECTと組み合わせる方法があります。ただしINDIRECTは揮発性関数（ファイルを開くたびに全セル再計算）のため、大量データでは速度に注意が必要です。</p>



<pre class="wp-block-code"><code>' シート名リスト（E列）を参照して各シートのA2:B10を縦積みしてから1列に変換する
=TOCOL(VSTACK(
    INDIRECT(E2 &amp; &quot;!A2:B10&quot;),
    INDIRECT(E3 &amp; &quot;!A2:B10&quot;),
    INDIRECT(E4 &amp; &quot;!A2:B10&quot;)
), 1)</code></pre>



<p class="wp-block-paragraph">シート名をE列に書いておけば、数式を変えずにシート名だけを更新できます。シート数が多い場合は、REDUCE + VSTACKを使うとリストから動的に縦積みできます。</p>



<pre class="wp-block-code"><code>' シート名リスト（E2:E13）を全件ループしてVSTACKで縦積みしてからTOCOLで1列にする
=TOCOL(REDUCE(&quot;&quot;, E2:E13, LAMBDA(acc, name,
    VSTACK(IF(acc=&quot;&quot;, INDIRECT(name &amp; &quot;!A2:B10&quot;), acc), INDIRECT(name &amp; &quot;!A2:B10&quot;))
)), 1)</code></pre>



<p class="wp-block-paragraph">REDUCE + VSTACKパターンはシート名を増やすだけで自動的に拡張されるため、月次レポートの自動集計などに活用できます。<a href="https://mashukabu.com/excel-function-howto-use-vstack/">VSTACK関数の使い方</a>もあわせて確認しておくと理解が深まりますよ。</p>



<h2 class="wp-block-heading"><span id="toc27">TRIMRANGE と組み合わせて端の空白を除去してから1列に変換する</span></h2>



<p class="wp-block-paragraph">Microsoft 365 の <a href="https://mashukabu.com/excel-trimrange-function/">TRIMRANGE関数</a> は、配列の先頭・末尾にある空白行または空白列を取り除いて返す関数です。TOCOLと組み合わせると、「入力範囲の端に余分な空白行があっても、それを除外してから1列に変換する」処理が1本の数式で書けます。</p>



<pre class="wp-block-code"><code>=TOCOL(TRIMRANGE(A2:D20), 1)</code></pre>



<p class="wp-block-paragraph">TRIMRANGE(A2:D20) が末尾の空白行を除いた部分だけを返し、TOCOLがその結果を縦1列に展開します。第2引数の <code>1</code> で残った空白セルも除外するので、結果は値だけが詰まったきれいな1列になります。</p>



<p class="wp-block-paragraph">TRIMRANGE の第2引数でトリム方向を細かく指定できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>動作</th></tr></thead><tbody><tr><td>0（省略時）</td><td>上下左右すべての端を削除</td></tr><tr><td>1</td><td>上端（先頭行）のみ削除</td></tr><tr><td>2</td><td>下端（末尾行）のみ削除</td></tr><tr><td>3</td><td>上下両端を削除</td></tr><tr><td>4</td><td>左端（先頭列）のみ削除</td></tr><tr><td>8</td><td>右端（末尾列）のみ削除</td></tr><tr><td>12</td><td>左右両端を削除</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">末尾の空白行だけ除きたい場合は <code>TRIMRANGE(A2:D20, 2)</code> とすれば十分です。TRIMRANGE は Microsoft 365 の月次チャンネルで提供されており、TOCOL と対応バージョンが揃っているため、データ前処理のパイプラインとして自然に組み合わせられます。</p>



<h2 class="wp-block-heading"><span id="toc28">TOCOL関数が重い・遅いときの対処法</span></h2>



<p class="wp-block-paragraph">TOCOL関数は大量データに対して使うと動作が重くなることがあります。原因は主に2つです。</p>



<ul class="wp-block-list"><li>出力行数が数万行を超えると、スピル領域全体の再計算に時間がかかる</li><li>INDIRECTやOFFSETといった揮発性関数と併用すると、編集のたびに全セルを再計算する</li></ul>



<p class="wp-block-paragraph">対処法をいくつか紹介します。</p>



<h3 class="wp-block-heading"><span id="toc29">参照範囲を必要最小限に絞る</span></h3>



<p class="wp-block-paragraph"><code>A:D</code> のような列全体ではなく、<code>A2:D5000</code> のように行数を限定してください。Excelは列全体指定だと約100万行を内部的に処理しようとするため、TOCOLとの相性がよくありません。</p>



<h3 class="wp-block-heading"><span id="toc30">テーブル機能で動的範囲化する</span></h3>



<p class="wp-block-paragraph">データに「テーブル機能」（Ctrl+T）を適用すると、範囲が自動で拡張・縮小されます。テーブル名で参照すれば、空白行まで読みに行かないので無駄な再計算を防げます。</p>



<pre class="wp-block-code"><code>=TOCOL(テーブル1[#データ], 1)</code></pre>



<h3 class="wp-block-heading"><span id="toc31">揮発性関数との併用を避ける</span></h3>



<p class="wp-block-paragraph">INDIRECTやOFFSETを使うと、シート全体の再計算が走ります。可能ならINDEX関数など非揮発性の参照に置き換えてください。複数シート集約の場合は、<code>Sheet1!A2:B10</code> のように直接参照を使う方が軽くなります。</p>



<h3 class="wp-block-heading"><span id="toc32">結果を値貼り付けに置き換える</span></h3>



<p class="wp-block-paragraph">最終出力が確定したら、TOCOLのスピル範囲をコピーして「値の貼り付け」に置き換えるのも有効です。リアルタイム更新が不要なレポートでは、計算負荷をゼロにできます。</p>



<h2 class="wp-block-heading"><span id="toc33">GoogleスプレッドシートでTOCOLを使う方法</span></h2>



<p class="wp-block-paragraph">Googleスプレッドシートには、TOCOL関数がありません（2026年5月時点）。代わりにFLATTEN関数が同じ役割を果たします。</p>



<pre class="wp-block-code"><code>=FLATTEN(A2:C10)</code></pre>



<p class="wp-block-paragraph">FLATTENは2次元配列を縦1列に展開する関数です。基本動作はTOCOLと同じですが、いくつか違いがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Excel: TOCOL</th><th>Sheets: FLATTEN</th></tr></thead><tbody><tr><td>空白除外オプション</td><td>第2引数で指定可</td><td>なし</td></tr><tr><td>エラー除外オプション</td><td>第2引数で指定可</td><td>なし</td></tr><tr><td>スキャン方向切替</td><td>第3引数で指定可</td><td>なし（行方向固定）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">空白を除外したい場合は、FILTERで囲んでください。</p>



<pre class="wp-block-code"><code>=FILTER(FLATTEN(A2:C10), FLATTEN(A2:C10)&lt;&gt;&quot;&quot;)</code></pre>



<p class="wp-block-paragraph">列方向にスキャンしたい場合は、TRANSPOSEで転置してからFLATTENにかけます。</p>



<pre class="wp-block-code"><code>=FLATTEN(TRANSPOSE(A2:C10))</code></pre>



<p class="wp-block-paragraph">ExcelとGoogleスプレッドシートで同じデータを扱う場合、関数名を切り替える必要があります。共有ファイルの互換性に注意してください。</p>



<h2 class="wp-block-heading"><span id="toc34">Excel 2021以前のバージョンで同じ結果を得る代替手段</span></h2>



<p class="wp-block-paragraph">TOCOL関数はMicrosoft 365とExcel 2024でしか使えません。Excel 2021・2019・2016を使っている場合は、別の方法で代替できます。</p>



<h3 class="wp-block-heading"><span id="toc35">Power Queryの「列のピボット解除」を使う</span></h3>



<p class="wp-block-paragraph">Power QueryはExcel 2016以降に標準搭載されている機能です。マトリクス表を1列のリスト形式に変換できます。</p>



<ol class="wp-block-list"><li>データ範囲を選択して「データ」タブから「テーブルまたは範囲から」を選ぶ</li><li>Power Queryエディタで対象列を選択する</li><li>「変換」タブの「列のピボット解除」をクリックする</li><li>「閉じて読み込む」で結果をシートに返す</li></ol>



<p class="wp-block-paragraph">属性列と値列の2列構成で出力されるので、不要な属性列を削除すれば1列データになります。マウス操作だけで完了するので、関数が使えなくても対応できます。</p>



<h3 class="wp-block-heading"><span id="toc36">INDEX関数とROW・COLUMN式で再現する</span></h3>



<p class="wp-block-paragraph">数式で代替する場合は、INDEXと行番号計算を組み合わせます。3行4列のデータ（A2:D4）を1列にする例です。</p>



<pre class="wp-block-code"><code>=INDEX($A$2:$D$4, INT((ROW(A1)-1)/4)+1, MOD(ROW(A1)-1, 4)+1)</code></pre>



<p class="wp-block-paragraph">下方向にコピーすると、行優先で1列に並びます。<code>/4</code> と <code>MOD(..., 4)</code> の数字は列数（この例では4）に合わせて変更してください。スピルがないため、必要な行数だけ手動でコピーする必要があります。</p>



<p class="wp-block-paragraph">業務でTOCOLを継続的に使うなら、Microsoft 365へのアップデートを検討する方が結果的に楽です。</p>



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



<p class="wp-block-paragraph">TOCOL関数は、2次元データを縦1列に変換する関数です。</p>



<ul class="wp-block-list"><li>第2引数で空白やエラーを除外できる</li><li>第3引数でスキャン方向を切り替えられる</li><li>UNIQUE・FILTER・SORTと組み合わせて柔軟にデータ加工できる</li><li>対応バージョンはMicrosoft 365とExcel 2024</li></ul>



<p class="wp-block-paragraph">手作業でやっていたデータ整形の多くをTOCOL関数で自動化できます。まずは基本の1列変換から試してみてください。</p>



<p class="wp-block-paragraph">配列操作の関連関数もチェックしておくと便利です。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-torow/">TOROW関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-hstack/">HSTACK関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-vstack/">VSTACK関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sort/">SORT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-transpose/">TRANSPOSE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-chooserows/">CHOOSEROWS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-expand/">EXPAND関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-tocol/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
