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

<channel>
	<title>配列 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E9%85%8D%E5%88%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Wed, 27 May 2026 22:53:56 +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>配列 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのMAKEARRAY関数の使い方｜LAMBDAで配列を自由に生成する</title>
		<link>https://mashukabu.com/excel-function-howto-use-makearray/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-makearray/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 15:36:49 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[LAMBDA]]></category>
		<category><![CDATA[MAKEARRAY]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5916</guid>

					<description><![CDATA[ExcelのMAKEARRAY関数でLAMBDAを使って配列を自由に生成する方法を解説。行列番号を使った動的値生成、九九表・距離行列・三角関数テーブルなどの実務活用例、SEQUENCE/MAP/BYROW との使い分けまで完全網羅。]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのMAKEARRAY関数とは？LAMBDAで配列を自由生成</a><ol><li><a href="#toc2" tabindex="0">LAMBDA関数の基本をおさらい</a></li><li><a href="#toc3" tabindex="0">対応バージョン</a></li><li><a href="#toc4" tabindex="0">MAKEARRAYが活躍する代表シーン</a></li></ol></li><li><a href="#toc5" tabindex="0">MAKEARRAY関数の書式と引数の渡し方（rows・cols・lambda）</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数の詳細</a></li><li><a href="#toc8" tabindex="0">LAMBDAに渡す2つの仮引数（r・c）</a></li><li><a href="#toc9" tabindex="0">r・c の値がどう動くか</a></li><li><a href="#toc10" tabindex="0">結果は動的配列としてスピルする</a></li></ol></li><li><a href="#toc11" tabindex="0">MAKEARRAY関数の使い方①｜基本的な配列生成（定数・連番）</a><ol><li><a href="#toc12" tabindex="0">例1：定数で埋めた配列を作る</a></li><li><a href="#toc13" tabindex="0">例2：文字列で埋めた配列を作る</a></li><li><a href="#toc14" tabindex="0">例3：1から始まる連番を縦に並べる</a></li><li><a href="#toc15" tabindex="0">例4：通し番号（左から右、上から下）</a></li></ol></li><li><a href="#toc16" tabindex="0">MAKEARRAY関数の使い方②｜行番号・列番号を使った動的な値の生成</a><ol><li><a href="#toc17" tabindex="0">例1：単位行列（対角線だけ1、他は0）</a></li><li><a href="#toc18" tabindex="0">例2：チェッカーボード（市松模様）</a></li><li><a href="#toc19" tabindex="0">例3：座標ラベルを生成する</a></li><li><a href="#toc20" tabindex="0">例4：ランダムなテストデータを生成</a></li></ol></li><li><a href="#toc21" tabindex="0">MAKEARRAY関数の応用｜実務活用例（九九表・距離行列・三角関数テーブル）</a><ol><li><a href="#toc22" tabindex="0">応用1：九九表を1関数で作る</a></li><li><a href="#toc23" tabindex="0">応用2：単位変換テーブル（kg ⇔ ポンド）</a></li><li><a href="#toc24" tabindex="0">応用3：距離行列を一発で作る</a></li><li><a href="#toc25" tabindex="0">応用4：三角関数テーブル（sin / cos / tan）</a></li><li><a href="#toc26" tabindex="0">応用5：複利計算テーブル</a></li><li><a href="#toc27" tabindex="0">応用6：ヒートマップ用のスコア行列</a></li></ol></li><li><a href="#toc28" tabindex="0">MAKEARRAY関数でよくあるエラーと対処法</a><ol><li><a href="#toc29" tabindex="0">#NAME? エラー</a></li><li><a href="#toc30" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc31" tabindex="0">#CALC! エラー</a></li><li><a href="#toc32" tabindex="0">#SPILL! エラー</a></li><li><a href="#toc33" tabindex="0">「LAMBDA関数が単独で使えない」と言われる場合</a></li></ol></li><li><a href="#toc34" tabindex="0">MAKEARRAY・SEQUENCE・MAP・BYROW/BYCOLの使い分け</a><ol><li><a href="#toc35" tabindex="0">全体比較表</a></li><li><a href="#toc36" tabindex="0">MAKEARRAY vs SEQUENCE</a></li><li><a href="#toc37" tabindex="0">MAKEARRAY vs MAP</a></li><li><a href="#toc38" tabindex="0">MAKEARRAY vs BYROW / BYCOL</a></li><li><a href="#toc39" tabindex="0">使い分けフローチャート</a></li></ol></li><li><a href="#toc40" tabindex="0">ExcelのMAKEARRAY関数 よくある質問（FAQ）</a><ol><li><a href="#toc41" tabindex="0">Q1. MAKEARRAY関数はGoogleスプレッドシートでも使えますか？</a></li><li><a href="#toc42" tabindex="0">Q2. MAKEARRAYの結果を別の関数に渡せますか？</a></li><li><a href="#toc43" tabindex="0">Q3. LAMBDA内でセル参照（A1など）は使えますか？</a></li><li><a href="#toc44" tabindex="0">Q4. MAKEARRAYで作った配列を値として固定したいときは？</a></li><li><a href="#toc45" tabindex="0">Q5. なぜLAMBDAの仮引数は2つ固定なのですか？</a></li><li><a href="#toc46" tabindex="0">Q6. 配列のサイズを動的に変えられますか？</a></li></ol></li><li><a href="#toc47" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのMAKEARRAY関数とは？LAMBDAで配列を自由生成</span></h2>



<p class="wp-block-paragraph">ExcelのMAKEARRAY関数は、指定した行数と列数の配列をゼロから生成する関数です。読み方は「メイクアレイ」。名前の由来は英語の「make（作る）＋ array（配列）」です。</p>



<p class="wp-block-paragraph">最大の特徴は、各セルの値を自分で自由に決められる点にあります。引数に<a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数</a>を渡し、その中で行番号と列番号に応じた計算式を書きます。九九表や単位行列、距離行列など、規則性のある配列を1つの数式で一気に生成できます。</p>



<p class="wp-block-paragraph">MAKEARRAYは「LAMBDAヘルパー関数」と呼ばれるグループの1つです。仲間には<a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数</a>があります。</p>



<p class="wp-block-paragraph">これらヘルパー関数の中で、MAKEARRAYだけが異色の存在です。他の関数はすべて「既存の配列を加工する」のが役割。一方でMAKEARRAYだけが「ゼロから配列を生み出す」役割を担います。</p>



<h3 class="wp-block-heading"><span id="toc2">LAMBDA関数の基本をおさらい</span></h3>



<p class="wp-block-paragraph">LAMBDA関数は、Excelに自作関数を持ち込むための仕組みです。書式は次のとおりです。</p>



<pre class="wp-block-code"><code>=LAMBDA(仮引数1, 仮引数2, ..., 計算式)(実引数1, 実引数2, ...)</code></pre>



<p class="wp-block-paragraph">仮引数に名前を付けて計算式の中で使えます。MAKEARRAYと組み合わせる場合は、LAMBDAを「他の関数の引数」として渡します。単独で呼び出す形にはなりません。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(3, 3, LAMBDA(r, c, r+c))</code></pre>



<p class="wp-block-paragraph">ここではLAMBDA本体を呼び出すのはMAKEARRAYの内部処理です。利用者がカッコを付けて呼ぶ必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc3">対応バージョン</span></h3>



<p class="wp-block-paragraph">MAKEARRAY関数を使えるのは次の環境です。</p>



<ul class="wp-block-list"><li>Microsoft 365（Windows / Mac）</li><li>Excel 2021（永続ライセンス）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">Excel 2019以前では使用できません。古いバージョンで開くと <code>#NAME?</code> エラーになります。</p>



<h3 class="wp-block-heading"><span id="toc4">MAKEARRAYが活躍する代表シーン</span></h3>



<ul class="wp-block-list"><li>九九表など計算式が規則的な表をテンプレートとして作る</li><li>単位行列・対角行列など、数学的な行列を一発で生成する</li><li>ダミーデータ（連番・乱数）を一括生成してテスト用に使う</li><li>距離行列（移動コスト表）や三角関数テーブルを一気に作る</li></ul>



<h2 class="wp-block-heading"><span id="toc5">MAKEARRAY関数の書式と引数の渡し方（rows・cols・lambda）</span></h2>



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



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



<pre class="wp-block-code"><code>=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))</code></pre>



<p class="wp-block-paragraph">3つの引数すべてが必須です。省略するとエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc7">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>データ型</th><th>説明</th></tr></thead><tbody><tr><td>rows</td><td>はい</td><td>正の整数</td><td>生成する配列の行数（1以上）</td></tr><tr><td>cols</td><td>はい</td><td>正の整数</td><td>生成する配列の列数（1以上）</td></tr><tr><td>lambda</td><td>はい</td><td>LAMBDA式</td><td>各セルの値を決めるLAMBDA関数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>rows</code> と <code>cols</code> に小数や0以下の値を指定するとエラーになります。整数の正数を渡すのが鉄則です。</p>



<h3 class="wp-block-heading"><span id="toc8">LAMBDAに渡す2つの仮引数（r・c）</span></h3>



<p class="wp-block-paragraph">MAKEARRAYに渡すLAMBDA関数には、必ず2つの仮引数を定義します。1つ目に行番号、2つ目に列番号が渡されます。名前は自由です。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(2, 2, LAMBDA(行, 列, 行*10+列))</code></pre>



<p class="wp-block-paragraph"><code>r</code> と <code>c</code> でなくとも <code>行</code>・<code>列</code> のような日本語名でも問題ありません。慣習として <code>r</code>（row）と <code>c</code>（col）が使われます。本記事でも以降は <code>r</code>・<code>c</code> で統一します。</p>



<h3 class="wp-block-heading"><span id="toc9">r・c の値がどう動くか</span></h3>



<p class="wp-block-paragraph">行番号 <code>r</code> と列番号 <code>c</code> はどちらも「1」から始まります。たとえば3行2列の配列では、各セルに次のように値が渡されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>列1 (c=1)</th><th>列2 (c=2)</th></tr></thead><tbody><tr><td>行1</td><td>r=1, c=1</td><td>r=1, c=2</td></tr><tr><td>行2</td><td>r=2, c=1</td><td>r=2, c=2</td></tr><tr><td>行3</td><td>r=3, c=1</td><td>r=3, c=2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">この <code>r</code> と <code>c</code> を計算式の中で使い、各セルの値を組み立てます。ここがMAKEARRAYの心臓部です。</p>



<h3 class="wp-block-heading"><span id="toc10">結果は動的配列としてスピルする</span></h3>



<p class="wp-block-paragraph">MAKEARRAYは動的配列関数です。1つのセルに数式を入れるだけで、結果が自動的に下方向・右方向にスピル（自動展開）します。</p>



<pre class="wp-block-code"><code>A1: =MAKEARRAY(3, 4, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">A1に上記を入れると、A1:D3の範囲に12個の値が広がります。スピル先のセルに別の値が入っていると <code>#SPILL!</code> エラーになります。出力範囲はあらかじめ空けておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc11">MAKEARRAY関数の使い方①｜基本的な配列生成（定数・連番）</span></h2>



<p class="wp-block-paragraph">ここからは具体的な使い方を見ていきます。まずは「LAMBDAの中で <code>r</code> <code>c</code> を使う・使わない」の2つの基本パターンから始めます。</p>



<h3 class="wp-block-heading"><span id="toc12">例1：定数で埋めた配列を作る</span></h3>



<p class="wp-block-paragraph">最もシンプルな例は、すべて同じ値で埋めた配列です。次の数式で3行4列の「0」埋め配列を生成できます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(3, 4, LAMBDA(r, c, 0))</code></pre>



<p class="wp-block-paragraph">LAMBDAの中で <code>r</code> と <code>c</code> を使わず、固定値の <code>0</code> を返しています。出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>0</th><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">テンプレートの初期値や、条件付き書式を適用するためのキャンバスとして便利です。</p>



<h3 class="wp-block-heading"><span id="toc13">例2：文字列で埋めた配列を作る</span></h3>



<p class="wp-block-paragraph">数値以外も入れられます。全セルを「未入力」で埋める場合は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 3, LAMBDA(r, c, &quot;未入力&quot;))</code></pre>



<p class="wp-block-paragraph">5行3列のすべてに「未入力」という文字列が並びます。入力欄のプレースホルダーとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc14">例3：1から始まる連番を縦に並べる</span></h3>



<p class="wp-block-paragraph"><code>r</code> を使うと、行番号がそのまま値になります。1〜10の縦連番は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 1, LAMBDA(r, c, r))</code></pre>



<p class="wp-block-paragraph">単純な連番だけなら<a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数</a>のほうがシンプルです。<code>=SEQUENCE(10)</code> の1行で済みます。MAKEARRAYの真価は次のような「計算を伴う配列」にあります。</p>



<h3 class="wp-block-heading"><span id="toc15">例4：通し番号（左から右、上から下）</span></h3>



<p class="wp-block-paragraph">3行4列に「1, 2, 3, 4 / 5, 6, 7, 8 / 9, 10, 11, 12」と通し番号を振る場合は、行番号と列番号の組み合わせで計算します。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(3, 4, LAMBDA(r, c, (r-1)*4+c))</code></pre>



<p class="wp-block-paragraph">出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead><tbody><tr><td>5</td><td>6</td><td>7</td><td>8</td></tr><tr><td>9</td><td>10</td><td>11</td><td>12</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「(行番号-1)×1行あたりの列数+列番号」が通し番号の定石パターンです。</p>



<h2 class="wp-block-heading"><span id="toc16">MAKEARRAY関数の使い方②｜行番号・列番号を使った動的な値の生成</span></h2>



<p class="wp-block-paragraph">LAMBDA内で <code>r</code> と <code>c</code> を組み合わせると、より動的な配列を作れます。実用度の高いパターンを4つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc17">例1：単位行列（対角線だけ1、他は0）</span></h3>



<p class="wp-block-paragraph">線形代数で出てくる単位行列は、対角線（行番号＝列番号）だけが1の正方行列です。<a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>と組み合わせれば1行で書けます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, IF(r=c, 1, 0)))</code></pre>



<p class="wp-block-paragraph">出力結果は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th></tr></thead><tbody><tr><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">統計分析や行列演算のテンプレートとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc18">例2：チェッカーボード（市松模様）</span></h3>



<p class="wp-block-paragraph"><code>r+c</code> の偶奇で値を変えると、チェッカーボード状の配列ができます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(8, 8, LAMBDA(r, c, IF(MOD(r+c, 2)=0, &quot;■&quot;, &quot;□&quot;)))</code></pre>



<p class="wp-block-paragraph">8×8の市松模様が並びます。条件付き書式と組み合わせれば、配色テンプレートとしても使えます。</p>



<h3 class="wp-block-heading"><span id="toc19">例3：座標ラベルを生成する</span></h3>



<p class="wp-block-paragraph">行番号と列番号を文字列として組み立てれば、座標ラベル（A1表記など）を自動生成できます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, ADDRESS(r, c, 4)))</code></pre>



<p class="wp-block-paragraph"><code>ADDRESS</code> の第3引数 <code>4</code> は「相対参照」を意味します。出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>A1</th><th>B1</th><th>C1</th><th>D1</th><th>E1</th></tr></thead><tbody><tr><td>A2</td><td>B2</td><td>C2</td><td>D2</td><td>E2</td></tr><tr><td>A3</td><td>B3</td><td>C3</td><td>D3</td><td>E3</td></tr><tr><td>A4</td><td>B4</td><td>C4</td><td>D4</td><td>E4</td></tr><tr><td>A5</td><td>B5</td><td>C5</td><td>D5</td><td>E5</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc20">例4：ランダムなテストデータを生成</span></h3>



<p class="wp-block-paragraph">ダミーデータが必要な場面では <code>RANDBETWEEN</code> と組み合わせます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, RANDBETWEEN(1, 100)))</code></pre>



<p class="wp-block-paragraph">10行5列の範囲に1〜100のランダム整数が一気に並びます。テスト用データセットの作成に重宝します。</p>



<p class="wp-block-paragraph"><code>RANDARRAY</code> でも似たことができます。ただしMAKEARRAYなら、位置に応じた条件分岐を入れられます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, IF(c=5, RANDBETWEEN(100,200), RANDBETWEEN(1,10))))</code></pre>



<p class="wp-block-paragraph">「r行目だけは1〜10、c=5列目だけは100〜200」のような使い分けが可能です。これがMAKEARRAYの柔軟性です。</p>



<h2 class="wp-block-heading"><span id="toc21">MAKEARRAY関数の応用｜実務活用例（九九表・距離行列・三角関数テーブル）</span></h2>



<p class="wp-block-paragraph">ここからは、実務やデータ分析で使える応用パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc22">応用1：九九表を1関数で作る</span></h3>



<p class="wp-block-paragraph">MAKEARRAYの定番中の定番が九九表（掛け算表）です。行番号と列番号を掛けるだけで完成します。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(9, 9, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">出力結果（一部）は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th></tr></thead><tbody><tr><td>2</td><td>4</td><td>6</td><td>8</td><td>10</td><td>12</td><td>14</td><td>16</td><td>18</td></tr><tr><td>3</td><td>6</td><td>9</td><td>12</td><td>15</td><td>18</td><td>21</td><td>24</td><td>27</td></tr><tr><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LAMBDA内の <code>r*c</code> を <code>r+c</code> に変えれば「足し算表」、<code>r^c</code> にすれば「累乗表」も作れます。</p>



<h3 class="wp-block-heading"><span id="toc23">応用2：単位変換テーブル（kg ⇔ ポンド）</span></h3>



<p class="wp-block-paragraph">縦方向にkg、横方向に変換係数を並べた変換テーブルも簡単に作れます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 2, LAMBDA(r, c, IF(c=1, r, ROUND(r*2.20462, 2))))</code></pre>



<p class="wp-block-paragraph">出力は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>kg</th><th>ポンド</th></tr></thead><tbody><tr><td>1</td><td>2.20</td></tr><tr><td>2</td><td>4.41</td></tr><tr><td>3</td><td>6.61</td></tr><tr><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>c=1</code> のときは行番号（kg）を返します。<code>c=2</code> のときはkg×2.20462（ポンド）を返します。ヘッダー行は別途追加します。</p>



<h3 class="wp-block-heading"><span id="toc24">応用3：距離行列を一発で作る</span></h3>



<p class="wp-block-paragraph">複数地点間の距離（コスト）行列も、行番号と列番号の組み合わせから生成できます。等差で配置された5地点の距離行列は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, ABS(r-c)*10))</code></pre>



<p class="wp-block-paragraph"><code>r-c</code> の絶対値に10kmを掛けています。対角線は0、隣り合う地点は10、2つ離れると20…という具合に並びます。</p>



<figure class="wp-block-table"><table><thead><tr><th>0</th><th>10</th><th>20</th><th>30</th><th>40</th></tr></thead><tbody><tr><td>10</td><td>0</td><td>10</td><td>20</td><td>30</td></tr><tr><td>20</td><td>10</td><td>0</td><td>10</td><td>20</td></tr><tr><td>30</td><td>20</td><td>10</td><td>0</td><td>10</td></tr><tr><td>40</td><td>30</td><td>20</td><td>10</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">シミュレーションや配送計画のたたき台に使えます。</p>



<h3 class="wp-block-heading"><span id="toc25">応用4：三角関数テーブル（sin / cos / tan）</span></h3>



<p class="wp-block-paragraph">角度0〜90度のsin値テーブルを10度刻みで作る例です。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 2, LAMBDA(r, c, IF(c=1, (r-1)*10, ROUND(SIN(RADIANS((r-1)*10)), 4))))</code></pre>



<p class="wp-block-paragraph">出力は次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>角度（度）</th><th>sin値</th></tr></thead><tbody><tr><td>0</td><td>0.0000</td></tr><tr><td>10</td><td>0.1736</td></tr><tr><td>20</td><td>0.3420</td></tr><tr><td>30</td><td>0.5000</td></tr><tr><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>SIN</code>・<code>COS</code>・<code>TAN</code> を切り替えるだけで他の三角関数テーブルも作れます。</p>



<h3 class="wp-block-heading"><span id="toc26">応用5：複利計算テーブル</span></h3>



<p class="wp-block-paragraph">行を年数、列を金利として複利後の元利合計を一気に計算するパターンです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(10, 5, LAMBDA(r, c, ROUND(100*(1+c*0.01)^r, 2)))</code></pre>



<p class="wp-block-paragraph">100万円を元手に、年利1〜5%で1〜10年複利運用した結果が一発で並びます。</p>



<figure class="wp-block-table"><table><thead><tr><th>年  利率</th><th>1%</th><th>2%</th><th>3%</th><th>4%</th><th>5%</th></tr></thead><tbody><tr><td>1</td><td>101.00</td><td>102.00</td><td>103.00</td><td>104.00</td><td>105.00</td></tr><tr><td>2</td><td>102.01</td><td>104.04</td><td>106.09</td><td>108.16</td><td>110.25</td></tr><tr><td>3</td><td>103.03</td><td>106.12</td><td>109.27</td><td>112.49</td><td>115.76</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">シナリオ分析のシミュレーターとして使えます。</p>



<h3 class="wp-block-heading"><span id="toc27">応用6：ヒートマップ用のスコア行列</span></h3>



<p class="wp-block-paragraph">条件付き書式と組み合わせれば、ヒートマップの素材も作れます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(7, 24, LAMBDA(r, c, RANDBETWEEN(0, 100)))</code></pre>



<p class="wp-block-paragraph">7日×24時間のランダムなアクセス数を生成します。セルの値で色分けすればヒートマップの完成です。実データの構造を模したテンプレ作成に重宝します。</p>



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



<p class="wp-block-paragraph">MAKEARRAYは引数の型に厳密です。よく出るエラーと対処法を整理します。</p>



<h3 class="wp-block-heading"><span id="toc29">#NAME? エラー</span></h3>



<p class="wp-block-paragraph">関数名が認識されない場合に発生します。主な原因は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処</th></tr></thead><tbody><tr><td>Excel 2019以前で使用</td><td>Microsoft 365 / Excel 2021に更新</td></tr><tr><td>関数名のスペルミス</td><td><code>MAKEARRAY</code> を正しく入力</td></tr><tr><td>LAMBDAヘルパー未対応の旧ビルド</td><td>Officeを最新ビルドに更新</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">利用環境がMicrosoft 365でも、Officeのバージョンが古いと未対応なケースがあります。「ファイル → アカウント → 更新オプション」から最新化してください。</p>



<h3 class="wp-block-heading"><span id="toc30">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">引数の型・値が不正な場合に発生します。主な原因は次のとおりです。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(0, 5, LAMBDA(r, c, r*c))     ' rowsが0
=MAKEARRAY(3.5, 4, LAMBDA(r, c, r*c))   ' rowsが小数
=MAKEARRAY(3, 4, LAMBDA(r, r*c))        ' LAMBDA仮引数が1つ</code></pre>



<p class="wp-block-paragraph">対処は次のとおりです。</p>



<ul class="wp-block-list"><li><code>rows</code> <code>cols</code> は1以上の整数を指定</li><li>LAMBDAの仮引数は必ず2つ</li><li>文字列や論理値を <code>rows</code> <code>cols</code> に渡さない</li></ul>



<h3 class="wp-block-heading"><span id="toc31">#CALC! エラー</span></h3>



<p class="wp-block-paragraph">配列の計算が完了できない場合に発生します。MAKEARRAYで多いケースは次のとおりです。</p>



<ul class="wp-block-list"><li>配列が大きすぎてメモリ不足（数十万行など）</li><li>LAMBDA内で自己参照や循環参照を発生させた</li></ul>



<p class="wp-block-paragraph">対処として、まずは <code>rows</code> <code>cols</code> を小さくして動作確認します。問題なければ徐々に拡大していきましょう。</p>



<h3 class="wp-block-heading"><span id="toc32">#SPILL! エラー</span></h3>



<p class="wp-block-paragraph">結果のスピル先に既存の値があるとこのエラーになります。出力範囲を空けておくか、新しいシートで試してください。</p>



<h3 class="wp-block-heading"><span id="toc33">「LAMBDA関数が単独で使えない」と言われる場合</span></h3>



<p class="wp-block-paragraph">MAKEARRAYの第3引数に渡すLAMBDAは、呼び出しカッコを付けません。</p>



<pre class="wp-block-code"><code>' 正しい例
=MAKEARRAY(3, 3, LAMBDA(r, c, r*c))

' 誤った例（LAMBDAを単独呼び出ししている）
=MAKEARRAY(3, 3, LAMBDA(r, c, r*c)(1, 1))</code></pre>



<p class="wp-block-paragraph">LAMBDA本体だけを「関数の値」として渡すのがポイントです。</p>



<h2 class="wp-block-heading"><span id="toc34">MAKEARRAY・SEQUENCE・MAP・BYROW/BYCOLの使い分け</span></h2>



<p class="wp-block-paragraph">LAMBDAヘルパー系・配列生成系の関数は似て非なる関数です。役割を整理しておくと迷いません。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>入力</th><th>役割</th><th>出力サイズ</th><th>LAMBDAの仮引数</th></tr></thead><tbody><tr><td>MAKEARRAY</td><td>なし（rows×cols指定）</td><td>ゼロから配列を生成</td><td>指定サイズ</td><td>2つ（r, c）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE</a></td><td>なし（rows×cols指定）</td><td>等差数列を生成</td><td>指定サイズ</td><td>不要</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP</a></td><td>既存配列</td><td>各要素にLAMBDA適用</td><td>同サイズ</td><td>1つ以上</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE</a></td><td>既存配列</td><td>累積処理して1値に集約</td><td>スカラー</td><td>2つ（累積値, 要素）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN</a></td><td>既存配列</td><td>累積処理（途中結果含む）</td><td>同サイズ</td><td>2つ</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW</a></td><td>既存配列</td><td>行ごとにLAMBDA適用</td><td>列ベクトル</td><td>1つ（行配列）</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL</a></td><td>既存配列</td><td>列ごとにLAMBDA適用</td><td>行ベクトル</td><td>1つ（列配列）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc36">MAKEARRAY vs SEQUENCE</span></h3>



<p class="wp-block-paragraph">両者ともゼロから配列を作りますが、得意分野が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MAKEARRAY</th><th>SEQUENCE</th></tr></thead><tbody><tr><td>生成方法</td><td>LAMBDAで自由計算</td><td>等差数列（開始値+ステップ）</td></tr><tr><td>柔軟性</td><td>各セルで異なる計算が可能</td><td>規則的な連番のみ</td></tr><tr><td>LAMBDA</td><td>必須</td><td>不要</td></tr><tr><td>構文の複雑さ</td><td>やや複雑</td><td>シンプル</td></tr><tr><td>典型用途</td><td>九九表・単位行列・三角関数表</td><td>連番・日付連番・通し番号</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>判断基準</strong>：等差数列（1,2,3&#8230;）ならSEQUENCE。位置に応じた自由な計算が必要ならMAKEARRAY。この2択で判断できます。</p>



<p class="wp-block-paragraph">たとえば <code>1, 2, 3, 4, 5</code> ならSEQUENCEの一発で十分です。<code>1, 4, 9, 16, 25</code>（平方数）はMAKEARRAYが必要です。</p>



<pre class="wp-block-code"><code>' 連番 → SEQUENCEが最適
=SEQUENCE(5)

' 平方数 → MAKEARRAYが最適
=MAKEARRAY(5, 1, LAMBDA(r, c, r^2))</code></pre>



<h3 class="wp-block-heading"><span id="toc37">MAKEARRAY vs MAP</span></h3>



<p class="wp-block-paragraph">MAPは「既存の配列の各要素にLAMBDAを適用する」関数です。MAKEARRAYと混同しがちですが、入力が違います。</p>



<pre class="wp-block-code"><code>' MAP：A2:A10の値を2倍にする
=MAP(A2:A10, LAMBDA(x, x*2))

' MAKEARRAY：1〜9の2倍を新規生成
=MAKEARRAY(9, 1, LAMBDA(r, c, r*2))</code></pre>



<p class="wp-block-paragraph"><strong>判断基準</strong>：既存のデータを加工したいならMAP。ゼロから値を生成したいならMAKEARRAY。</p>



<h3 class="wp-block-heading"><span id="toc38">MAKEARRAY vs BYROW / BYCOL</span></h3>



<p class="wp-block-paragraph">BYROW / BYCOLは「既存配列を行ごと・列ごとにLAMBDAで処理する」関数です。集計に向いています。</p>



<pre class="wp-block-code"><code>' BYROW：各行の合計を縦に並べる
=BYROW(A2:E10, LAMBDA(行, SUM(行)))

' MAKEARRAY：行ごとに何かを生成
=MAKEARRAY(10, 1, LAMBDA(r, c, SUM(OFFSET(A2, r-1, 0, 1, 5))))</code></pre>



<p class="wp-block-paragraph">集計目的ならBYROW / BYCOLが素直で読みやすいです。MAKEARRAYで同じことをしようとすると回りくどくなりがちです。</p>



<h3 class="wp-block-heading"><span id="toc39">使い分けフローチャート</span></h3>



<p class="wp-block-paragraph">迷ったら次の順で考えます。</p>



<ol class="wp-block-list"><li><strong>既存配列を加工したい？</strong> → Yes：MAP / BYROW / BYCOL / SCAN / REDUCE</li><li><strong>ゼロから等差数列を作りたい？</strong> → Yes：SEQUENCE</li><li><strong>ゼロから位置依存の計算をしたい？</strong> → Yes：MAKEARRAY</li></ol>



<p class="wp-block-paragraph">この3問でほぼ判別できます。</p>



<h2 class="wp-block-heading"><span id="toc40">ExcelのMAKEARRAY関数 よくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc41">Q1. MAKEARRAY関数はGoogleスプレッドシートでも使えますか？</span></h3>



<p class="wp-block-paragraph">A. 現時点では使えません。MAKEARRAYはMicrosoft 365 / Excel 2021以降の専用関数です。Googleスプレッドシートにはこれに直接対応する関数はありません。代替として <code>ARRAYFORMULA</code> + <code>SEQUENCE</code> + <code>ROW</code>/<code>COLUMN</code> の組み合わせで似たことができます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(SEQUENCE(9)*TRANSPOSE(SEQUENCE(9)))</code></pre>



<p class="wp-block-paragraph">このパターンで九九表をスプレッドシートでも作れます。</p>



<h3 class="wp-block-heading"><span id="toc42">Q2. MAKEARRAYの結果を別の関数に渡せますか？</span></h3>



<p class="wp-block-paragraph">A. はい、できます。MAKEARRAYの戻り値は通常の配列です。<code>SUM</code>・<code>AVERAGE</code>・<code>MAX</code>・<code>SORT</code> などに直接渡せます。</p>



<pre class="wp-block-code"><code>=SUM(MAKEARRAY(10, 10, LAMBDA(r, c, r*c)))</code></pre>



<p class="wp-block-paragraph">これで「10×10の掛け算表の合計」が1つの数式で求まります。MAKEARRAYは式の途中部品としても優秀です。</p>



<h3 class="wp-block-heading"><span id="toc43">Q3. LAMBDA内でセル参照（A1など）は使えますか？</span></h3>



<p class="wp-block-paragraph">A. 使えます。次のように外部のセル参照を計算式に含められます。</p>



<pre class="wp-block-code"><code>=MAKEARRAY(5, 5, LAMBDA(r, c, $A$1*r+c))</code></pre>



<p class="wp-block-paragraph">ただし、参照するセルが変わるたびに配列全体が再計算されます。大きな配列だとパフォーマンスに影響するため、必要最小限にとどめましょう。</p>



<h3 class="wp-block-heading"><span id="toc44">Q4. MAKEARRAYで作った配列を値として固定したいときは？</span></h3>



<p class="wp-block-paragraph">A. 数式バーで <code>F9</code> を押すと、計算結果が配列リテラルに置き換わります。あるいは <code>Ctrl+C</code> でコピーし、「形式を選択して貼り付け → 値」で値貼り付けする方法もあります。ハードコードされた値の表になるため、テンプレート化したいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc45">Q5. なぜLAMBDAの仮引数は2つ固定なのですか？</span></h3>



<p class="wp-block-paragraph">A. MAKEARRAYは「行番号」と「列番号」の2つを必ず内部で渡す仕様だからです。引数が1つだけだと列番号を受け取れません。3つ以上だと余分な引数への値の渡し方が定義されていません。仮引数は必ず2個と覚えておきましょう。</p>



<p class="wp-block-paragraph">なお、片方を使わない場合（例：常に固定値）でも、仮引数の宣言は省略できません。</p>



<pre class="wp-block-code"><code>' 仮引数cを使わなくても、宣言は必須
=MAKEARRAY(5, 5, LAMBDA(r, c, r))</code></pre>



<h3 class="wp-block-heading"><span id="toc46">Q6. 配列のサイズを動的に変えられますか？</span></h3>



<p class="wp-block-paragraph">A. はい。<code>rows</code> と <code>cols</code> にセル参照や式を渡せば、入力値に応じて配列サイズが変わります。</p>



<pre class="wp-block-code"><code>=MAKEARRAY($B$1, $B$2, LAMBDA(r, c, r*c))</code></pre>



<p class="wp-block-paragraph">B1とB2に入力した値で九九表のサイズが変わります。ダッシュボードの動的テンプレートに応用できます。</p>



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



<p class="wp-block-paragraph">ExcelのMAKEARRAY関数は、LAMBDAと組み合わせてゼロから配列を自由に生成できる強力な関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=MAKEARRAY(rows, cols, LAMBDA(r, c, 計算式))</code></li><li>行番号 <code>r</code> と列番号 <code>c</code> は1から始まる</li><li>LAMBDAの仮引数は必ず2つ</li><li>等差数列ならSEQUENCE、自由計算ならMAKEARRAY</li><li>既存配列の加工はMAP / BYROW / BYCOLが適任</li><li>対応環境はMicrosoft 365 / Excel 2021以降</li></ul>



<p class="wp-block-paragraph">まずは「九九表」「単位行列」「通し番号」など、シンプルな例で動かしてみてください。<code>r</code> と <code>c</code> の動きが体感できれば、距離行列・三角関数表・複利計算テーブルといった応用も自然と書けるようになります。</p>



<p class="wp-block-paragraph">LAMBDAヘルパー関数は単独で覚えるよりも、まとめて学ぶと違いが明確になります。MAP・BYROW・BYCOL・REDUCE・SCANと並べて使い分けの感覚を掴んでください。</p>



<p class="wp-block-paragraph"><strong>関連記事</strong>:</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-lambda/">LAMBDA関数の使い方｜カスタム関数を自作する方法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sequence/">SEQUENCE関数の使い方｜連番・日付・2次元配列を1関数で</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-map/">MAP関数の使い方｜BYROWとの違いと使い分け</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-reduce/">REDUCE関数の使い方｜配列を1つの値に集約する方法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-scan/">SCAN関数の使い方｜REDUCEとの違いと累計・残高推移への活用法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-byrow/">BYROW関数の使い方｜行ごとに関数を適用</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-bycol/">BYCOL関数の使い方｜列ごとに関数適用</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方｜条件分岐の基本</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-makearray/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのJOIN関数の使い方｜配列を区切り結合</title>
		<link>https://mashukabu.com/spreadsheet-join-function/</link>
					<comments>https://mashukabu.com/spreadsheet-join-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:33:21 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ARRAYFORMULA]]></category>
		<category><![CDATA[CONCAT]]></category>
		<category><![CDATA[FILTER]]></category>
		<category><![CDATA[JOIN]]></category>
		<category><![CDATA[QUERY]]></category>
		<category><![CDATA[SPLIT]]></category>
		<category><![CDATA[TEXTJOIN]]></category>
		<category><![CDATA[区切り文字]]></category>
		<category><![CDATA[文字列結合]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4825</guid>

					<description><![CDATA[スプレッドシートのJOIN関数の使い方を基礎から解説。配列やセル範囲を区切り文字で結合する方法、FILTER・QUERY・ARRAYFORMULAとの応用、TEXTJOIN・SPLIT・CONCATとの違い、空白スキップ・エラー対処まで徹底ガイド。]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-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">JOIN関数とは｜読み方・構文・できること</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">JOIN関数でできること・できないこと</a></li></ol></li><li><a href="#toc4" tabindex="0">JOIN関数の基本的な使い方｜書き方と引数の例</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">JOIN関数の実務パターン7選</a><ol><li><a href="#toc10" tabindex="0">パターン1: カンマ区切りリストを作る</a></li><li><a href="#toc11" tabindex="0">パターン2: 改行コードでセル内改行を作る</a></li><li><a href="#toc12" tabindex="0">パターン3: 日付と数値を書式整えて結合</a></li><li><a href="#toc13" tabindex="0">パターン4: プレフィックス・サフィックスを付けて結合</a></li><li><a href="#toc14" tabindex="0">パターン5: 曜日リストや固定配列を作る</a></li><li><a href="#toc15" tabindex="0">パターン6: SORT と組み合わせて並び順を整える</a></li><li><a href="#toc16" tabindex="0">パターン7: UNIQUE で重複排除してから結合</a></li></ol></li><li><a href="#toc17" tabindex="0">FILTER・QUERY・ARRAYFORMULAとの組み合わせ応用</a><ol><li><a href="#toc18" tabindex="0">FILTER で条件付き結合</a></li><li><a href="#toc19" tabindex="0">QUERY で SQL 風の抽出結果を結合</a></li><li><a href="#toc20" tabindex="0">ARRAYFORMULAで行ごとに結合して1列に収める</a></li></ol></li><li><a href="#toc21" tabindex="0">TEXTJOIN関数との違いと使い分け</a><ol><li><a href="#toc22" tabindex="0">比較表</a></li><li><a href="#toc23" tabindex="0">どちらを使うべきか（選び方フロー）</a></li><li><a href="#toc24" tabindex="0">実例で比較する</a></li></ol></li><li><a href="#toc25" tabindex="0">SPLIT関数との逆関数関係（結合と分割の往復）</a><ol><li><a href="#toc26" tabindex="0">往復の典型シーン</a></li></ol></li><li><a href="#toc27" tabindex="0">CONCAT・CONCATENATEとの違いと使い分け</a><ol><li><a href="#toc28" tabindex="0">選び方の早見表</a></li></ol></li><li><a href="#toc29" tabindex="0">JOIN関数でよくあるエラーと対処法</a><ol><li><a href="#toc30" tabindex="0">FILTER結果が空になるときの対処（サンプル）</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">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">JOIN関数とは｜読み方・構文・できること</span></h2>



<p class="wp-block-paragraph">Googleスプレッドシートで「配列やセル範囲をカンマ区切りのテキストにまとめたい」と思ったことはありませんか?</p>



<p class="wp-block-paragraph">CONCATENATE関数や&#038;演算子でも結合はできます。でもセルが増えるほど数式が長くなって、読み返すのも修正するのもつらいですよね。</p>



<p class="wp-block-paragraph">そんなときに便利なのが<strong>JOIN関数</strong>です。区切り文字と配列を渡すだけで、サッと1つの文字列にまとめてくれます。この記事ではJOIN関数の基本から、FILTER・QUERY・ARRAYFORMULAとの応用、TEXTJOIN・SPLIT・CONCATとの使い分けまで、実務でそのまま使える形で整理していきますね。</p>



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



<p class="wp-block-paragraph">JOIN関数の読み方は「ジョイン」です。英語で「結合する・つなぐ」という意味があります。名前のとおり「配列を結合する関数」とイメージしてください。</p>



<p class="wp-block-paragraph">ひとつ覚えておきたいのが、JOIN関数はGoogleスプレッドシート独自の関数という点です。Excelには搭載されていません。Excelで同じことをやりたいときは<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>を使ってくださいね。</p>



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



<p class="wp-block-paragraph">JOIN関数の役割を1枚の表で整理するとこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>できること</th><th>できないこと</th></tr></thead><tbody><tr><td>配列・セル範囲を区切り文字で結合</td><td>空白セルを自動でスキップ</td></tr><tr><td>複数の引数を並べて結合</td><td>IF関数の結果配列を直接受け取る（FILTER経由が必要）</td></tr><tr><td>2次元の範囲も結合</td><td>日付や数値の書式を保持した結合（TEXT併用が必要）</td></tr><tr><td>区切りなし（空文字）の結合</td><td>Excelでの実行</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「空白スキップができない」と「書式保持ができない」がJOIN関数のクセです。この2点さえ押さえれば、ほとんどの場面で迷いません。</p>



<h2 class="wp-block-heading"><span id="toc4">JOIN関数の基本的な使い方｜書き方と引数の例</span></h2>



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



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



<pre class="wp-block-code"><code>=JOIN(区切り文字, 値または配列1, [値または配列2, ...])</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>値の間に挿入する文字列（&#8221;,&#8221;や&#8221; &#8220;など）</td></tr><tr><td>値または配列1</td><td>必須</td><td>結合したい値、セル参照、またはセル範囲</td></tr><tr><td>値または配列2, &#8230;</td><td>省略可</td><td>追加で結合したい値や配列</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第1引数の区切り文字には空文字&#8221;&#8221;も指定できます。区切りなしで結合したいときに使ってくださいね。</p>



<h3 class="wp-block-heading"><span id="toc6">基本的な書き方の例</span></h3>



<p class="wp-block-paragraph">A1からA4に「東京」「大阪」「名古屋」「福岡」と入っている場合を見てみましょう。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, A1:A4)
→ 「東京, 大阪, 名古屋, 福岡」</code></pre>



<p class="wp-block-paragraph">区切り文字にカンマ+スペースを指定するだけで、きれいなリストが完成します。セルが何個あっても数式は変わりません。</p>



<p class="wp-block-paragraph">セル範囲ではなく個別のセルを指定することもできます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;-&quot;, A1, B1, C1)
→ 「東京-大阪-名古屋」</code></pre>



<p class="wp-block-paragraph">引数を複数並べても結合できますが、セル範囲のほうがスッキリ書けますよ。</p>



<h3 class="wp-block-heading"><span id="toc7">複数範囲を一度に結合する</span></h3>



<p class="wp-block-paragraph">範囲を複数指定することもできます。A列とB列を横につなげたリストを作りたい場合はこうです。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, A1:A3, B1:B3)
→ 「東京, 大阪, 名古屋, 札幌, 仙台, 福岡」</code></pre>



<p class="wp-block-paragraph">範囲ごとに順番に結合されます。行ごとに交互に結合したいときはARRAYFORMULAを使いますが、これは後述の応用パートで扱いますね。</p>



<h3 class="wp-block-heading"><span id="toc8">区切り文字なしで結合する</span></h3>



<p class="wp-block-paragraph">区切り文字に空文字 <code>""</code> を指定すれば、区切りなしで連結できます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;&quot;, A1:A3)
→ 「東京大阪名古屋」</code></pre>



<p class="wp-block-paragraph">ただし区切りなしの単純結合なら、<a href="https://mashukabu.com/spreadsheet-concat-function/">CONCAT関数</a>のほうが意図が伝わりやすいです。用途に応じて選んでくださいね。</p>



<h2 class="wp-block-heading"><span id="toc9">JOIN関数の実務パターン7選</span></h2>



<p class="wp-block-paragraph">実務でよく使う7つのパターンを、そのままコピーして使える形で紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン1: カンマ区切りリストを作る</span></h3>



<p class="wp-block-paragraph">タグ一覧やメール宛先リストを作るときの定番パターンです。A列にメールアドレスが入っている場合はこう書きます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;; &quot;, A1:A5)
→ 「user1@example.com; user2@example.com; user3@example.com; ...」</code></pre>



<p class="wp-block-paragraph">セミコロン+スペースで区切れば、メールのCC欄にそのまま貼り付けられる形になりますよ。Gmailの「連絡先を貼り付け」にも使えます。</p>



<h3 class="wp-block-heading"><span id="toc11">パターン2: 改行コードでセル内改行を作る</span></h3>



<p class="wp-block-paragraph">CHAR(10)を区切り文字に使うと、セル内で改行した文字列を作れます。</p>



<pre class="wp-block-code"><code>=JOIN(CHAR(10), A1:A4)</code></pre>



<p class="wp-block-paragraph">結果のセルで「折り返して全体を表示する」書式を設定すると、各値が1行ずつ表示されます。議事録の出席者リストやタスクの進捗サマリーを1セルにまとめたいときに重宝しますよ。</p>



<p class="wp-block-paragraph">CHAR(10)のほかにCHAR(13)（キャリッジリターン）も使えますが、スプレッドシートではCHAR(10)が一般的です。</p>



<h3 class="wp-block-heading"><span id="toc12">パターン3: 日付と数値を書式整えて結合</span></h3>



<p class="wp-block-paragraph">JOIN関数は日付や数値をそのまま結合するとシリアル値になってしまいます。書式を保持したいときは<a href="https://support.google.com/docs/answer/3094139">TEXT関数</a>で変換してから渡します。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;/&quot;, TEXT(A1, &quot;yyyy&quot;), TEXT(B1, &quot;m&quot;), TEXT(C1, &quot;d&quot;))
→ 「2026/3/21」</code></pre>



<p class="wp-block-paragraph">通貨や%表示なども同じ要領です。</p>



<pre class="wp-block-code"><code>=JOIN(&quot; - &quot;, A1, TEXT(B1, &quot;¥#,##0&quot;), TEXT(C1, &quot;0.0%&quot;))
→ 「売上 - ¥1,234,567 - 12.5%」</code></pre>



<h3 class="wp-block-heading"><span id="toc13">パターン4: プレフィックス・サフィックスを付けて結合</span></h3>



<p class="wp-block-paragraph">各要素に「〇〇:」「- 」のような接頭語を付けたいときは、ARRAYFORMULAとの組み合わせが便利です。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, ARRAYFORMULA(&quot;#&quot; &amp; A1:A3))
→ 「#東京, #大阪, #名古屋」</code></pre>



<p class="wp-block-paragraph">ハッシュタグ付きリストやNotion風の箇条書きリストが一発で作れますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン5: 曜日リストや固定配列を作る</span></h3>



<p class="wp-block-paragraph">配列リテラル <code>{}</code> を直接渡すこともできます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot; / &quot;, {&quot;月&quot;,&quot;火&quot;,&quot;水&quot;,&quot;木&quot;,&quot;金&quot;,&quot;土&quot;,&quot;日&quot;})
→ 「月 / 火 / 水 / 木 / 金 / 土 / 日」</code></pre>



<p class="wp-block-paragraph">シート上にデータを用意しなくても、数式内で完結する使い方です。アンケート選択肢の区切り表示などに向いていますね。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン6: SORT と組み合わせて並び順を整える</span></h3>



<p class="wp-block-paragraph">そのままのA列順ではなく、五十音順・日付順でリスト化したい場合は<a href="https://support.google.com/docs/answer/3093150">SORT関数</a>と組み合わせます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, SORT(A2:A10))
→ 「大阪, 京都, 神戸, 名古屋, 東京」</code></pre>



<p class="wp-block-paragraph">昇順がデフォルトなので、降順にしたいときは <code>SORT(A2:A10, 1, FALSE)</code> としてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン7: UNIQUE で重複排除してから結合</span></h3>



<p class="wp-block-paragraph">重複のあるデータから一意な値だけ取り出してリスト化したい場合です。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, UNIQUE(A2:A100))
→ 「東京, 大阪, 名古屋」（重複除去後）</code></pre>



<p class="wp-block-paragraph">「今月のユニーク来店客リスト」「登場したカテゴリの一覧」などでよく使うパターンですよ。SORTと併用するとさらに読みやすくなります。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, SORT(UNIQUE(A2:A100)))</code></pre>



<h2 class="wp-block-heading"><span id="toc17">FILTER・QUERY・ARRAYFORMULAとの組み合わせ応用</span></h2>



<p class="wp-block-paragraph">JOIN関数がもっとも輝くのは、他の配列関数と組み合わせたときです。ここでは実務度の高い3パターンを掘り下げます。</p>



<h3 class="wp-block-heading"><span id="toc18">FILTER で条件付き結合</span></h3>



<p class="wp-block-paragraph"><a href="https://support.google.com/docs/answer/3093197">FILTER関数</a>で絞り込んだ結果をJOIN関数で結合する方法です。A列に名前、B列に部署が入っているとします。</p>



<p class="wp-block-paragraph">「営業部」のメンバーだけをカンマ区切りで結合する数式です。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, FILTER(A2:A10, B2:B10=&quot;営業部&quot;))
→ 「田中, 佐藤, 高橋」</code></pre>



<p class="wp-block-paragraph">FILTER関数が条件に合う名前の配列を返します。JOIN関数がその配列をカンマ区切りで結合します。2つの関数を組み合わせるだけで条件付き結合が完成しますよ。</p>



<p class="wp-block-paragraph">複数条件にしたいときは <code>*</code>（AND）や <code>+</code>（OR）を使います。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, FILTER(A2:A10, B2:B10=&quot;営業部&quot;, C2:C10&gt;=3))
→ 営業部で勤続3年以上の名前だけ結合</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>FILTER + JOIN の活用場面</strong></p><p>部署別の名前リスト、カテゴリ別の商品一覧、ステータス別のタスク一覧、担当者別の案件リストなど、「条件で絞り込んでからリスト化する」パターンに幅広く使えます。</p></blockquote>



<h4 class="wp-block-heading">FILTER結果が空のときのエラー回避</h4>



<p class="wp-block-paragraph">条件に合うデータがないとFILTERは <code>#N/A</code> を返してJOINも失敗します。IFERRORで包んでおくと安心です。</p>



<pre class="wp-block-code"><code>=IFERROR(JOIN(&quot;, &quot;, FILTER(A2:A10, B2:B10=&quot;広報部&quot;)), &quot;該当なし&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc19">QUERY で SQL 風の抽出結果を結合</span></h3>



<p class="wp-block-paragraph"><a href="https://support.google.com/docs/answer/3093343">QUERY関数</a>で抽出した結果もJOIN関数で結合できます。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, QUERY(A2:C100, &quot;SELECT A WHERE C='完了'&quot;, 0))
→ ステータスが完了の案件名だけをカンマ区切りで結合</code></pre>



<p class="wp-block-paragraph">QUERYの柔軟な条件指定とJOINのテキスト化がハマる組み合わせです。レポート作成の常連コンビなので、ぜひ覚えておいてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc20">ARRAYFORMULAで行ごとに結合して1列に収める</span></h3>



<p class="wp-block-paragraph">「A〜C列の値を各行ごとに結合して、D列に1列で出力したい」ときはARRAYFORMULAが使えます。ただしJOIN関数は配列展開に制約があるので、行ごとの結合には<code>&</code>演算子のほうが安定します。</p>



<pre class="wp-block-code"><code># D1に入力
=ARRAYFORMULA(IF(A1:A10=&quot;&quot;,&quot;&quot;, A1:A10 &amp; &quot;-&quot; &amp; B1:B10 &amp; &quot;-&quot; &amp; C1:C10))</code></pre>



<p class="wp-block-paragraph">どうしても区切り文字を可変にしたいなら、行ごとに <code>TEXTJOIN</code> を使うほうが柔軟です。</p>



<pre class="wp-block-code"><code># D1に入力（TEXTJOIN版）
=ARRAYFORMULA(IF(A1:A10=&quot;&quot;,&quot;&quot;, TEXTJOIN(&quot;-&quot;, TRUE, A1:A10, B1:B10, C1:C10)))</code></pre>



<p class="wp-block-paragraph">JOINとARRAYFORMULAは相性に制約があるので、行ごとの結合ではTEXTJOINや&#038;演算子を選ぶと挙動が安定しますよ。</p>



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



<p class="wp-block-paragraph">JOIN関数と<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>はどちらも区切り文字で結合する関数です。似ているようで大きな違いがあります。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>JOIN</th><th>TEXTJOIN</th></tr></thead><tbody><tr><td>空白セルのスキップ</td><td>不可（空白もそのまま結合）</td><td>第2引数でTRUE/FALSE制御</td></tr><tr><td>引数の並び</td><td>区切り文字, 配列&#8230;</td><td>区切り文字, 空白無視, テキスト&#8230;</td></tr><tr><td>IF配列との相性</td><td>不可（FILTER経由が必要）</td><td>直接IF配列を渡せる</td></tr><tr><td>最大文字数</td><td>セル上限（約50,000字）</td><td>セル上限（約50,000字）</td></tr><tr><td>Sheets対応</td><td>対応（独自関数）</td><td>対応</td></tr><tr><td>Excel対応</td><td>非対応</td><td>対応（Microsoft 365 / Excel 2019以降）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc23">どちらを使うべきか（選び方フロー）</span></h3>



<p class="wp-block-paragraph">次の基準で選んでみてください。</p>



<ul class="wp-block-list"><li><strong>空白セルが混じるデータ</strong> → TEXTJOIN（空白スキップ機能あり）</li><li><strong>IF関数の結果を直接結合したい</strong> → TEXTJOIN</li><li><strong>空白セルがないクリーンな配列</strong> → JOIN（引数がシンプル）</li><li><strong>FILTER・UNIQUE・SORTの結果を結合</strong> → JOIN（相性が良く書きやすい）</li><li><strong>Excelとの互換性が必要</strong> → TEXTJOIN（Excel側でも動作する）</li></ul>



<p class="wp-block-paragraph">空白セルを含むデータなら迷わずTEXTJOINです。空白のないデータやFILTER関数の結果を結合するなら、引数がシンプルなJOINが便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc24">実例で比較する</span></h3>



<p class="wp-block-paragraph">A列が <code>東京 / （空白） / 大阪 / （空白） / 名古屋</code> の場合の結果を比較してみましょう。</p>



<pre class="wp-block-code"><code>=JOIN(&quot;, &quot;, A1:A5)
→ 「東京, , 大阪, , 名古屋」（空白のせいでカンマが連続）

=TEXTJOIN(&quot;, &quot;, TRUE, A1:A5)
→ 「東京, 大阪, 名古屋」（空白スキップ）</code></pre>



<p class="wp-block-paragraph">見た目の美しさに差が出ますね。実務では空白が混じることも多いので、TEXTJOINに切り替える選択肢を常に持っておくと安心です。</p>



<h2 class="wp-block-heading"><span id="toc25">SPLIT関数との逆関数関係（結合と分割の往復）</span></h2>



<p class="wp-block-paragraph">JOIN関数と<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>は「結合」と「分割」の逆の関係にあります。セットで覚えておくと便利です。</p>



<figure class="wp-block-table"><table><thead><tr><th>操作</th><th>関数</th><th>例</th></tr></thead><tbody><tr><td>結合</td><td>JOIN</td><td>3つのセル → 「東京,大阪,名古屋」</td></tr><tr><td>分割</td><td>SPLIT</td><td>「東京,大阪,名古屋」→ 3つのセルに分割</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実際に相互変換してみましょう。</p>



<p class="wp-block-paragraph"><strong>結合（JOIN）:</strong></p>



<pre class="wp-block-code"><code>=JOIN(&quot;,&quot;, A1:C1)
→ 「東京,大阪,名古屋」</code></pre>



<p class="wp-block-paragraph"><strong>分割（SPLIT）:</strong></p>



<pre class="wp-block-code"><code>=SPLIT(&quot;東京,大阪,名古屋&quot;, &quot;,&quot;)
→ A1:「東京」, B1:「大阪」, C1:「名古屋」</code></pre>



<p class="wp-block-paragraph">同じ区切り文字（カンマ）を使えば、元の形に戻せます。データの結合と分割を行き来する場面で活躍しますよ。</p>



<h3 class="wp-block-heading"><span id="toc26">往復の典型シーン</span></h3>



<ul class="wp-block-list"><li>CSV形式で貼り付けたテキストを分割（SPLIT） → 必要な列だけ取り出して結合（JOIN）</li><li>タグ文字列を分割して並び替え → 再結合</li><li>フォーム回答の自由記述欄を単語分割 → 条件に合うものだけ結合</li></ul>



<p class="wp-block-paragraph">SPLITとJOINをセットで使うと、データクレンジングの小さなETLパイプラインが作れます。</p>



<h2 class="wp-block-heading"><span id="toc27">CONCAT・CONCATENATEとの違いと使い分け</span></h2>



<p class="wp-block-paragraph">単純に文字列を連結したいなら<a href="https://mashukabu.com/spreadsheet-concat-function/">CONCAT関数</a>や<a href="https://mashukabu.com/spreadsheet-concatenate-function/">CONCATENATE関数</a>が候補になります。違いは区切り文字の扱いです。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>区切り文字</th><th>配列対応</th><th>空白スキップ</th><th>主な用途</th></tr></thead><tbody><tr><td>JOIN</td><td>指定できる</td><td>可</td><td>不可</td><td>区切り付きリスト化</td></tr><tr><td>TEXTJOIN</td><td>指定できる</td><td>可</td><td>可（オプション）</td><td>区切り付き+空白対応</td></tr><tr><td>CONCAT</td><td>なし</td><td>可（一部）</td><td>&#8211;</td><td>2値の単純連結</td></tr><tr><td>CONCATENATE</td><td>なし</td><td>不可</td><td>&#8211;</td><td>旧版の単純連結</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc28">選び方の早見表</span></h3>



<ul class="wp-block-list"><li><strong>区切り文字入り、空白なしデータ</strong> → JOIN</li><li><strong>区切り文字入り、空白混じり</strong> → TEXTJOIN</li><li><strong>区切りなしの単純連結</strong> → CONCAT</li><li><strong>古いスプレッドシートで互換性重視</strong> → CONCATENATE</li></ul>



<p class="wp-block-paragraph">CONCATは <code>=CONCAT(A1, B1)</code> のような2値の連結が中心で、JOIN/TEXTJOINのように区切り文字を一括指定できません。リスト化にはJOIN系を選ぶのが定石です。</p>



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



<p class="wp-block-paragraph">JOIN関数で発生しやすいエラーと落とし穴をまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー・症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>区切り文字が連続する（&#8221;, ,&#8221;）</td><td>空白セルが含まれている</td><td>TEXTJOIN関数に切り替えて第2引数をTRUEに</td></tr><tr><td>#N/A エラー</td><td>FILTER関数が条件に合うデータを見つけられない</td><td>FILTER結果をIFERROR関数で囲む</td></tr><tr><td>#VALUE! エラー</td><td>第2引数以降を指定していない</td><td>結合対象を必ず1つ以上指定</td></tr><tr><td>数値がシリアル値になる</td><td>日付セルをそのまま渡した</td><td>TEXT関数で書式変換してから結合</td></tr><tr><td>結果が空になる</td><td>指定範囲のセルがすべて空</td><td>データの入力範囲を確認する</td></tr><tr><td>改行が表示されない</td><td>CHAR(10)を使ったが折り返し未設定</td><td>表示形式→折り返し→「折り返す」を設定</td></tr><tr><td>文字化けする</td><td>タブやNULL文字が混じる</td><td>CLEAN関数でクリーンアップしてから結合</td></tr><tr><td>パフォーマンスが劣化</td><td>大量行（1万以上）を一気に処理</td><td>QUERY/FILTERで事前に絞り込む</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">いちばん多いのが「区切り文字が連続する」ケースです。JOIN関数には空白セルをスキップする機能がありません。データに空白が混じるときはTEXTJOIN関数を使ってくださいね。</p>



<h3 class="wp-block-heading"><span id="toc30">FILTER結果が空になるときの対処（サンプル）</span></h3>



<p class="wp-block-paragraph">条件に一致するデータがないとFILTERは <code>#N/A</code> を返します。JOINの外側でIFERRORを使うのが定番です。</p>



<pre class="wp-block-code"><code>=IFERROR(JOIN(&quot;, &quot;, FILTER(A2:A100, B2:B100=&quot;広報部&quot;)), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">同じ要領でIFNA関数を使ってもOKです。</p>



<pre class="wp-block-code"><code>=IFNA(JOIN(&quot;, &quot;, FILTER(A2:A100, B2:B100=&quot;広報部&quot;)), &quot;該当なし&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc31">日付書式を保持するサンプル</span></h3>



<p class="wp-block-paragraph">日付セルをそのまま渡すと、内部のシリアル値（例: 46021）が結合されてしまいます。TEXT関数で書式変換してから渡しましょう。</p>



<pre class="wp-block-code"><code>=JOIN(&quot; / &quot;, TEXT(A1:A3, &quot;yyyy/mm/dd&quot;))
→ 「2026/03/21 / 2026/03/22 / 2026/03/23」</code></pre>



<p class="wp-block-paragraph">TEXT関数に配列を渡すときはARRAYFORMULAを挟むと安定する場面があります。動かないときは <code>=ARRAYFORMULA(JOIN(" / ", TEXT(A1:A3, "yyyy/mm/dd")))</code> を試してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc32">パフォーマンス劣化への対処</span></h3>



<p class="wp-block-paragraph">1万行を超えるような大きな範囲をJOINで処理すると、数式の再計算が遅くなります。事前にFILTERやQUERYで範囲を絞り込む、あるいは必要な範囲だけを引数に渡すのが基本です。</p>



<pre class="wp-block-code"><code># NG: 広すぎる範囲を全部渡す
=JOIN(&quot;, &quot;, A1:A10000)

# OK: 必要な条件で絞ってから渡す
=JOIN(&quot;, &quot;, FILTER(A1:A10000, B1:B10000=&quot;対象&quot;))</code></pre>



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



<p class="wp-block-paragraph">スプレッドシートのJOIN関数の使い方を振り返りましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>内容</th></tr></thead><tbody><tr><td>読み方</td><td>ジョイン</td></tr><tr><td>機能</td><td>配列やセル範囲を区切り文字で結合して1つの文字列にする</td></tr><tr><td>構文</td><td>=JOIN(区切り文字, 値または配列1, [値または配列2, &#8230;])</td></tr><tr><td>TEXTJOIN との違い</td><td>JOINは空白スキップ機能なし。シンプルな引数構造</td></tr><tr><td>対になる関数</td><td>SPLIT（分割）</td></tr><tr><td>注意点</td><td>Excelには非搭載（スプレッドシート独自関数）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">配列やFILTER関数の結果を手早くテキストにまとめたいなら、JOINがいちばんシンプルです。区切り文字ひとつを指定するだけで、カンマ区切りリストもセル内改行も自在に作れますよ。</p>



<p class="wp-block-paragraph">空白セルが混じるデータには<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>、逆に文字列を分割したいときは<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>も合わせてチェックしてみてください。区切り文字なしで単純に結合したい場合は<a href="https://mashukabu.com/spreadsheet-concat-function/">CONCAT関数</a>や<a href="https://mashukabu.com/spreadsheet-concatenate-function/">CONCATENATE関数</a>もおすすめです。</p>



<p class="wp-block-paragraph">JOIN・TEXTJOIN・SPLIT・CONCATの4つをセットで覚えれば、スプレッドシートでの文字列操作はほぼカバーできます。用途に合わせて使い分けてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-join-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのTEXTJOIN関数の使い方｜区切り文字付き結合</title>
		<link>https://mashukabu.com/spreadsheet-textjoin-function/</link>
					<comments>https://mashukabu.com/spreadsheet-textjoin-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 09:47:51 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[CONCAT]]></category>
		<category><![CDATA[CONCATENATE]]></category>
		<category><![CDATA[TEXTJOIN]]></category>
		<category><![CDATA[区切り文字]]></category>
		<category><![CDATA[文字列結合]]></category>
		<category><![CDATA[空白セル]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4301</guid>

					<description><![CDATA[スプレッドシートのTEXTJOIN関数の使い方を基礎から解説。区切り文字の一括設定、空白セルを無視するTRUE/FALSEの違い、IF+配列との応用例まで。CONCATENATE・CONCATとの比較表付き。]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-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">TEXTJOIN関数の基本的な使い方（スプレッドシート）</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">構文と引数の説明</a></li><li><a href="#toc4" tabindex="0">基本的な書き方の例</a></li></ol></li><li><a href="#toc5" tabindex="0">空白セルを無視するオプション（TRUE/FALSE）の違い</a><ol><li><a href="#toc6" tabindex="0">TRUEの場合（空白をスキップ）</a></li><li><a href="#toc7" tabindex="0">FALSEの場合（空白もそのまま結合）</a></li><li><a href="#toc8" tabindex="0">TRUE/FALSE 比較表</a></li></ol></li><li><a href="#toc9" tabindex="0">TEXTJOIN関数の実務パターン集</a><ol><li><a href="#toc10" tabindex="0">カンマ区切りのリストを作る</a></li><li><a href="#toc11" tabindex="0">複数列を1つの文字列にまとめる</a></li><li><a href="#toc12" tabindex="0">条件付きで結合する（IF + TEXTJOIN）</a></li></ol></li><li><a href="#toc13" tabindex="0">CONCATENATE・CONCAT・&#038;演算子との違い</a><ol><li><a href="#toc14" tabindex="0">4方法比較表</a></li><li><a href="#toc15" tabindex="0">どれを使うか ── 判断フロー</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">TEXTJOIN関数の基本的な使い方（スプレッドシート）</span></h2>



<p class="wp-block-paragraph">Googleスプレッドシートで「カンマ区切りのリストを作りたい」「空白セルを飛ばして名前を繋ぎたい」と思ったことはありませんか?</p>



<p class="wp-block-paragraph">CONCATENATE関数や&#038;演算子でも結合はできます。でも区切り文字をいちいち手で入れるのは面倒ですよね。セルが増えるほど数式が長くなって読みにくくなります。</p>



<p class="wp-block-paragraph">そんなときに使うのが<strong>TEXTJOIN関数</strong>です。区切り文字を1か所で指定するだけで、まとめて結合してくれます。空白セルのスキップ機能もついているので、データに抜けがあっても安心ですよ。</p>



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



<p class="wp-block-paragraph">TEXTJOIN関数の読み方は「テキストジョイン」です。TEXT（文字列）とJOIN（結合する）を組み合わせた名前です。名前のとおり「文字列を結合する関数」と覚えてください。</p>



<h3 class="wp-block-heading"><span id="toc3">構文と引数の説明</span></h3>



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



<pre class="wp-block-code"><code>=TEXTJOIN(区切り文字, 空白を無視, テキスト1, [テキスト2, ...])</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>テキスト間に挿入する文字列（&#8221;,&#8221;や&#8221; &#8220;など）</td></tr><tr><td>空白を無視</td><td>必須</td><td>TRUEで空白セルをスキップ、FALSEでそのまま結合</td></tr><tr><td>テキスト1</td><td>必須</td><td>結合したい文字列、セル参照、またはセル範囲</td></tr><tr><td>テキスト2, &#8230;</td><td>省略可</td><td>追加で結合したい文字列やセル範囲（最大252個）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第1引数の区切り文字には空文字&#8221;&#8221;も指定できます。区切りなしで結合したい場合に使ってください。</p>



<h3 class="wp-block-heading"><span id="toc4">基本的な書き方の例</span></h3>



<p class="wp-block-paragraph">A1〜A4に「田中」「佐藤」「鈴木」「高橋」と入っている場合を見てみましょう。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;, &quot;, TRUE, A1:A4)
→ 「田中, 佐藤, 鈴木, 高橋」</code></pre>



<p class="wp-block-paragraph">カンマ+スペースを区切り文字に指定するだけで、きれいなリストが完成します。CONCATENATE関数なら<code>=CONCATENATE(A1, ", ", A2, ", ", A3, ", ", A4)</code>と書く必要がありますよね。TEXTJOINなら1か所で済むので数式がスッキリしますよ。</p>



<h2 class="wp-block-heading"><span id="toc5">空白セルを無視するオプション（TRUE/FALSE）の違い</span></h2>



<p class="wp-block-paragraph">TEXTJOIN関数の第2引数はTRUEかFALSEを指定します。これが空白セル処理のカギです。違いを実例で確認してみましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">TRUEの場合（空白をスキップ）</span></h3>



<p class="wp-block-paragraph">A1〜A5に「東京」「」「大阪」「」「福岡」と入っている場合です。A2とA4が空白セルです。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;/&quot;, TRUE, A1:A5)
→ 「東京/大阪/福岡」</code></pre>



<p class="wp-block-paragraph">空白セルが無視されて、区切り文字「/」が連続しません。データに抜けがあっても見た目がきれいに仕上がります。</p>



<h3 class="wp-block-heading"><span id="toc7">FALSEの場合（空白もそのまま結合）</span></h3>



<p class="wp-block-paragraph">同じデータでFALSEを指定した場合です。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;/&quot;, FALSE, A1:A5)
→ 「東京//大阪//福岡」</code></pre>



<p class="wp-block-paragraph">空白セルの位置にも区切り文字が入ります。結果として「/」が2つ連続してしまいます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>設定</th><th>空白セルの扱い</th><th>結果の例</th><th>おすすめの場面</th></tr></thead><tbody><tr><td>TRUE</td><td>スキップする</td><td>東京/大阪/福岡</td><td>名簿・リスト・住所など</td></tr><tr><td>FALSE</td><td>そのまま結合</td><td>東京//大阪//福岡</td><td>空白位置を残したい場合</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務ではTRUEを使うことがほとんどです。FALSEが必要になるのは「空白の位置を明示的に残したい」という特殊なケースだけですよ。</p>



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



<h3 class="wp-block-heading"><span id="toc10">カンマ区切りのリストを作る</span></h3>



<p class="wp-block-paragraph">メールの宛先一覧やタグリストを作るときに便利です。A列にメールアドレスが入っている場合はこう書きます。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;, &quot;, TRUE, A1:A10)</code></pre>



<p class="wp-block-paragraph">セルが10個でも20個でも、数式は変わりません。CONCATENATE関数では区切り文字を毎回手入力する必要があるので、数が多いほどTEXTJOINの便利さを実感できますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">複数列を1つの文字列にまとめる</span></h3>



<p class="wp-block-paragraph">A列に都道府県、B列に市区町村、C列に番地が入っている住所データの場合です。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;&quot;, TRUE, A2:C2)</code></pre>



<p class="wp-block-paragraph">区切り文字に空文字&#8221;&#8221;を指定すると、区切りなしで結合できます。住所の場合はスペースを入れたくないので、この書き方がぴったりです。</p>



<p class="wp-block-paragraph">マンション名（D列）が空のレコードがあっても大丈夫です。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;&quot;, TRUE, A2:D2)
→ D列が空なら「東京都渋谷区1-2-3」
→ D列があれば「東京都渋谷区1-2-3ABCマンション101」</code></pre>



<p class="wp-block-paragraph">TRUEを指定しているので、空白セルは自動でスキップされます。</p>



<h3 class="wp-block-heading"><span id="toc12">条件付きで結合する（IF + TEXTJOIN）</span></h3>



<p class="wp-block-paragraph">IF関数と組み合わせると、条件に合うデータだけを結合できます。これはTEXTJOIN関数の応用テクニックです。</p>



<p class="wp-block-paragraph">A列に名前、B列に部署が入っているとします。「営業部」のメンバーだけをカンマ区切りで結合する数式です。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;, &quot;, TRUE, IF(B2:B10=&quot;営業部&quot;, A2:A10, &quot;&quot;))</code></pre>



<p class="wp-block-paragraph">IF関数が「営業部なら名前を返し、違えば空文字を返す」という配列を作ります。TEXTJOINはその結果からTRUEで空文字をスキップして結合します。</p>



<p class="wp-block-paragraph">Googleスプレッドシートは自動で配列を展開するので、特別な操作は不要です。Ctrl+Shift+Enterを押す必要もありませんよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>IF + TEXTJOIN の活用場面</strong></p><p>部署別の名前リスト、カテゴリ別の商品一覧、担当者別のタスク一覧など、フィルタリング+結合のパターンに幅広く使えます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc13">CONCATENATE・CONCAT・&#038;演算子との違い</span></h2>



<h3 class="wp-block-heading"><span id="toc14">4方法比較表</span></h3>



<p class="wp-block-paragraph">スプレッドシートの文字列結合方法を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>方法</th><th>セル範囲</th><th>区切り文字</th><th>空白スキップ</th><th>引数上限</th></tr></thead><tbody><tr><td>TEXTJOIN</td><td>対応</td><td>自動（第1引数で指定）</td><td>対応（第2引数で制御）</td><td>252</td></tr><tr><td>CONCAT</td><td>対応</td><td>手動（毎回指定）</td><td>不可</td><td>なし</td></tr><tr><td>CONCATENATE</td><td>非対応</td><td>手動（毎回指定）</td><td>不可</td><td>30</td></tr><tr><td>&#038; 演算子</td><td>非対応</td><td>手動（毎回指定）</td><td>不可</td><td>なし</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">TEXTJOINだけが区切り文字の自動挿入と空白スキップに対応しています。</p>



<h3 class="wp-block-heading"><span id="toc15">どれを使うか ── 判断フロー</span></h3>



<p class="wp-block-paragraph">次の基準で選んでみてください。</p>



<ul class="wp-block-list"><li>セルが2〜3個でシンプルに結合 → <strong>&#038; 演算子</strong></li><li>セル範囲をまとめて区切りなしで結合 → <strong>CONCAT</strong></li><li>区切り文字を自動で入れたい → <strong>TEXTJOIN</strong></li><li>空白セルをスキップしたい → <strong>TEXTJOIN</strong></li><li>古いExcelファイルとの互換性が必要 → <strong>CONCATENATE</strong></li></ul>



<p class="wp-block-paragraph">区切り文字か空白スキップのどちらかが必要なら、迷わずTEXTJOINを選んでください。<a href="https://mashukabu.com/spreadsheet-concatenate-function/">CONCATENATE関数の基本</a>を学んだあとのステップアップとしてぴったりです。<a href="https://mashukabu.com/spreadsheet-concat-function/">CONCAT関数との違い</a>も合わせて確認しておくと使い分けに迷わなくなりますよ。</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>#VALUE! エラー</td><td>結合結果が32,767文字を超えた</td><td>結合する範囲を分割する</td></tr><tr><td>区切り文字が2つ連続する</td><td>第2引数がFALSEで空白セルがある</td><td>TRUEに変更して空白をスキップ</td></tr><tr><td>数値がシリアル値になる</td><td>日付セルをそのまま渡した</td><td>TEXT関数で書式変換してから結合</td></tr><tr><td>結果が空になる</td><td>指定範囲のセルがすべて空</td><td>データの入力範囲を確認する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">日付の書式変換はこう書きます。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;/&quot;, TRUE, TEXT(A2, &quot;yyyy&quot;), TEXT(B2, &quot;m&quot;), TEXT(C2, &quot;d&quot;))</code></pre>



<p class="wp-block-paragraph">日付の表示形式は結合時に失われます。TEXT関数で明示的に指定するのを忘れないでくださいね。結合後のスペース処理には<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>も覚えておくと便利ですよ。</p>



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



<p class="wp-block-paragraph">TEXTJOIN関数は、区切り文字を1か所で指定できる文字列結合の決定版です。</p>



<p class="wp-block-paragraph">おさらいです。</p>



<ul class="wp-block-list"><li><strong>第1引数</strong>で区切り文字を一括指定（カンマ、スペース、スラッシュなど）</li><li><strong>第2引数</strong>でTRUEを指定すれば空白セルを自動スキップ</li><li><strong>セル範囲に対応</strong>しているので、セルが増えても数式は変わらない</li><li><strong>IF関数との組み合わせ</strong>で条件付き結合もできる</li><li>実務ではTRUE指定がほとんど。迷ったらTRUEで大丈夫</li></ul>



<p class="wp-block-paragraph">CONCATENATE関数や&#038;演算子から始めた方も、区切り文字や空白処理が必要になったらTEXTJOINに切り替えてみてください。数式がスッキリして管理もラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-textjoin-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのSUMPRODUCT関数の使い方｜配列の積の和</title>
		<link>https://mashukabu.com/spreadsheet-sumproduct-function/</link>
					<comments>https://mashukabu.com/spreadsheet-sumproduct-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 12:28:37 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[SUMPRODUCT]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[加重平均]]></category>
		<category><![CDATA[掛け算の合計]]></category>
		<category><![CDATA[条件付き集計]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4024</guid>

					<description><![CDATA[GoogleスプレッドシートのSUMPRODUCT関数の使い方を初心者向けに解説。単価×数量の合計、条件付き集計、加重平均の計算方法から、SUMIFSとの使い分け、よくあるエラーの対処法まで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「単価と数量をいちいち掛け算して、さらにSUM関数で合計するのが面倒&#8230;」そんな経験、ありませんか？</p>



<p class="wp-block-paragraph">作業列が増えるとシートがゴチャゴチャしますし、行が増えたときの範囲修正も手間ですよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのがSUMPRODUCT関数です。掛け算と合計をまとめて1つの数式で処理できます。</p>



<p class="wp-block-paragraph">この記事では基本の使い方から条件付き集計・加重平均の計算まで紹介します。</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">SUMPRODUCT関数とは？</a></li><li><a href="#toc2" tabindex="0">SUMPRODUCT関数の書き方（構文と引数）</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">SUMPRODUCT関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">単価×数量の合計を求める</a></li><li><a href="#toc7" tabindex="0">配列が1つだけの場合</a></li></ol></li><li><a href="#toc8" tabindex="0">SUMPRODUCT関数で条件付き集計する方法</a><ol><li><a href="#toc9" tabindex="0">1つの条件で集計する</a></li><li><a href="#toc10" tabindex="0">複数条件（AND条件）で集計する</a></li><li><a href="#toc11" tabindex="0">OR条件で集計する</a></li></ol></li><li><a href="#toc12" tabindex="0">SUMPRODUCT関数の実務活用パターン</a><ol><li><a href="#toc13" tabindex="0">パターン1: 見積書の合計金額を一発計算</a></li><li><a href="#toc14" tabindex="0">パターン2: 加重平均の計算</a></li><li><a href="#toc15" tabindex="0">パターン3: 複数条件のOR集計</a></li><li><a href="#toc16" tabindex="0">パターン4: 特定条件の件数カウント</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">#VALUE!エラーが出る場合</a></li><li><a href="#toc19" tabindex="0">結果が0になる場合</a></li><li><a href="#toc20" tabindex="0">条件付き集計の結果がおかしい場合</a></li></ol></li><li><a href="#toc21" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc22" tabindex="0">SUM→SUMIF→SUMIFS→SUMPRODUCTの使い分け</a></li><li><a href="#toc23" tabindex="0">SUMIFS関数とSUMPRODUCT関数の比較</a></li><li><a href="#toc24" tabindex="0">Excelとの違い</a></li></ol></li><li><a href="#toc25" tabindex="0">まとめ</a><ol><li><a href="#toc26" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">SUMPRODUCT関数（読み方: サムプロダクト関数）は、<strong>複数の配列の対応する要素を掛け算し、その合計を返す関数</strong>です。</p>



<p class="wp-block-paragraph">名前は「SUM（合計）」と「PRODUCT（積・掛け算）」の組み合わせです。文字どおり「掛け算の合計」を求めます。</p>



<p class="wp-block-paragraph">たとえば商品の「単価」と「数量」が別々の列にあるとします。通常なら作業列で「単価 x 数量」を1行ずつ計算しますよね。さらに<a href="https://mashukabu.com/spreadsheet-sum-function/">SUM関数</a>で合計する必要があります。SUMPRODUCT関数なら1つの数式で済みます。</p>



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



<ul class="wp-block-list"><li>複数の範囲を要素ごとに掛け算して合計する</li><li>条件に合うデータだけを集計する（条件付き集計）</li><li>複数の条件をAND・ORで組み合わせて集計する</li><li>加重平均（重み付き平均）を計算する</li><li>作業列なしでスッキリ計算できる</li></ul>



<p class="wp-block-paragraph">「掛けてから合計」を1つの数式で実行する関数です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>SUMPRODUCT関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。</p></blockquote>



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



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



<pre class="wp-block-code"><code>=SUMPRODUCT(配列1, [配列2], [配列3], ...)</code></pre>



<p class="wp-block-paragraph">カッコの中に、計算したい配列やセル範囲を指定します。</p>



<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>配列1</td><td>必須</td><td>計算の対象となる最初の配列またはセル範囲</td></tr><tr><td>配列2, &#8230;</td><td>任意</td><td>掛け合わせたい追加の配列やセル範囲（最大30個）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数が1つだけの場合は範囲の合計を返します。SUM関数と同じ動作です。</p>



<p class="wp-block-paragraph">引数を2つ以上指定すると、対応する位置の要素同士を掛けてから合計します。</p>



<p class="wp-block-paragraph">ここで大事なポイントがひとつ。<strong>すべての配列は同じサイズ（行数・列数）にする必要があります</strong>。サイズが違うと <code>#VALUE!</code> エラーになります。</p>



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



<h3 class="wp-block-heading"><span id="toc6">単価×数量の合計を求める</span></h3>



<p class="wp-block-paragraph">実際にSUMPRODUCT関数を使ってみましょう。よくある「単価 x 数量」の合計を求める例です。</p>



<p class="wp-block-paragraph">次のような商品リストがあるとします。</p>



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



<p class="wp-block-paragraph">全商品の売上合計を出すには、次の数式を入力します。</p>



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



<p class="wp-block-paragraph">この数式が内部で行っている計算はこうなります。</p>



<pre class="wp-block-code"><code>(200×50) + (150×80) + (100×30) + (300×20)
= 10000 + 12000 + 3000 + 6000
= 31000</code></pre>



<p class="wp-block-paragraph">結果は <strong>31,000</strong> です。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数を使わない場合を考えてみましょう。D列に <code>=B2*C2</code> と作業列を作り、さらに <code>=SUM(D2:D5)</code> で合計する2ステップが必要です。SUMPRODUCT関数なら作業列なしで済みます。</p>



<h3 class="wp-block-heading"><span id="toc7">配列が1つだけの場合</span></h3>



<p class="wp-block-paragraph">引数を1つだけ指定するとSUM関数と同じ動作をします。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B5)</code></pre>



<p class="wp-block-paragraph">この場合は <code>200+150+100+300 = 750</code> です。あまり使う場面はありませんが、仕組みとして覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc8">SUMPRODUCT関数で条件付き集計する方法</span></h2>



<p class="wp-block-paragraph">SUMPRODUCT関数の真価が発揮されるのは条件付き集計です。<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>では対応しにくいOR条件にも使えます。</p>



<h3 class="wp-block-heading"><span id="toc9">1つの条件で集計する</span></h3>



<p class="wp-block-paragraph">商品リストにカテゴリ列を追加したデータで考えてみます。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（商品名）</th><th>B列（カテゴリ）</th><th>C列（単価）</th><th>D列（数量）</th></tr></thead><tbody><tr><td>1行目</td><td>商品名</td><td>カテゴリ</td><td>単価</td><td>数量</td></tr><tr><td>2行目</td><td>ノート</td><td>文房具</td><td>200</td><td>50</td></tr><tr><td>3行目</td><td>ペン</td><td>文房具</td><td>150</td><td>80</td></tr><tr><td>4行目</td><td>マウス</td><td>PC周辺機器</td><td>2000</td><td>10</td></tr><tr><td>5行目</td><td>ファイル</td><td>文房具</td><td>300</td><td>20</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「文房具」だけの売上合計を出す数式はこちらです。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/04_formula_sumproduct-condition.png" alt="04 formula sumproduct condition" /></figure>



<p class="wp-block-paragraph">ちょっと不思議な書き方に見えますよね。ポイントは <code>(B2:B5="文房具")</code> の部分です。</p>



<p class="wp-block-paragraph">この条件式は各セルが「文房具」と一致するかを判定します。一致すれば <code>TRUE(1)</code>、不一致なら <code>FALSE(0)</code> です。</p>



<p class="wp-block-paragraph">掛け算に含めることで、条件に合わない行は自動的に0になります。</p>



<pre class="wp-block-code"><code>(TRUE×200×50) + (TRUE×150×80) + (FALSE×2000×10) + (TRUE×300×20)
= (1×200×50) + (1×150×80) + (0×2000×10) + (1×300×20)
= 10000 + 12000 + 0 + 6000
= 28000</code></pre>



<p class="wp-block-paragraph">結果は <strong>28,000</strong> です。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/05_result_sumproduct-condition.png" alt="05 result sumproduct condition" /></figure>



<h3 class="wp-block-heading"><span id="toc10">複数条件（AND条件）で集計する</span></h3>



<p class="wp-block-paragraph">条件を2つ以上組み合わせることもできます。「文房具」で、かつ「単価が200以上」の売上合計を出す場合です。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*(C2:C5&gt;=200)*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">条件部分をカッコで囲んで <code><em></code> でつなぐだけです。<code></em></code> は「AND（かつ）」の意味になります。</p>



<p class="wp-block-paragraph">条件を増やしたいときも同じパターンで追加できますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">OR条件で集計する</span></h3>



<p class="wp-block-paragraph">「文房具<strong>または</strong>PC周辺機器」のようなOR条件にも対応できます。ここがSUMPRODUCT関数の強みです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B5=&quot;文房具&quot;)+(B2:B5=&quot;PC周辺機器&quot;))*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">条件を <code>+</code> でつなぐとOR条件になります。</p>



<ul class="wp-block-list"><li><code>*</code>（掛け算） = AND条件（すべて満たす）</li><li><code>+</code>（足し算） = OR条件（いずれか満たす）</li></ul>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>でOR条件を書くと、関数を何個も足し算する必要があります。SUMPRODUCT関数なら1つの数式にまとまります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>OR条件で <code>+</code> を使うと、両方の条件に一致する行は2重カウントされます。重複を防ぎたい場合は <code>((条件1)+(条件2)>0)</code> のように <code>>0</code> を付けましょう。</p></blockquote>



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



<p class="wp-block-paragraph">基本がわかったところで、仕事でよく使うパターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc13">パターン1: 見積書の合計金額を一発計算</span></h3>



<p class="wp-block-paragraph">見積書で「単価 x 数量」の合計を出すパターンです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(C2:C20, D2:D20)</code></pre>



<p class="wp-block-paragraph">C列に単価、D列に数量が入っている見積書ならこれだけです。範囲を広めにとっておけば、行を追加しても修正不要です。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン2: 加重平均の計算</span></h3>



<p class="wp-block-paragraph">テストの点数に重み（配点）を付けて平均を出すパターンです。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（科目）</th><th>B列（点数）</th><th>C列（配点比率）</th></tr></thead><tbody><tr><td>2行目</td><td>国語</td><td>80</td><td>1</td></tr><tr><td>3行目</td><td>数学</td><td>70</td><td>2</td></tr><tr><td>4行目</td><td>英語</td><td>90</td><td>1.5</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">配点を加味した加重平均を求めるにはこう書きます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B4, C2:C4) / SUM(C2:C4)</code></pre>



<p class="wp-block-paragraph">計算の中身はこうなります。</p>



<pre class="wp-block-code"><code>(80×1 + 70×2 + 90×1.5) / (1 + 2 + 1.5)
= (80 + 140 + 135) / 4.5
= 355 / 4.5
= 78.9（小数点以下四捨五入）</code></pre>



<p class="wp-block-paragraph">単純な平均 <code>(80+70+90)/3 = 80</code> とは異なる結果です。配点の大きい数学（70点）の影響で、加重平均のほうが低くなっています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>加重平均は成績評価だけでなく、仕入れ先ごとの加重平均単価の計算にも使えます。仕入量の多い先の単価をより強く反映できます。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc15">パターン3: 複数条件のOR集計</span></h3>



<p class="wp-block-paragraph">「営業部<strong>または</strong>総務部」の売上合計を求めるパターンです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B100=&quot;営業部&quot;)+(B2:B100=&quot;総務部&quot;)&gt;0)*E2:E100)</code></pre>



<p class="wp-block-paragraph">条件が3つ以上でも同じ書き方で拡張できます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B100=&quot;営業部&quot;)+(B2:B100=&quot;総務部&quot;)+(B2:B100=&quot;企画部&quot;)&gt;0)*E2:E100)</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>の足し算で書くと3つの関数が並んで長くなります。SUMPRODUCT関数なら1つの数式にまとまりますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン4: 特定条件の件数カウント</span></h3>



<p class="wp-block-paragraph">SUMPRODUCT関数は条件に合うデータの件数を数えることもできます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B100=&quot;営業部&quot;)*(D2:D100=&quot;プランA&quot;))</code></pre>



<p class="wp-block-paragraph">条件式の結果（TRUE=1/FALSE=0）を掛け算するだけです。合計範囲を指定しないため、1の合計=件数になります。</p>



<p class="wp-block-paragraph">COUNTIFS関数と同じ結果が得られますが、OR条件にも対応できるのが利点です。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数で困ったときの原因と対策をまとめました。</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>結果が0</td><td>セルが「数値に見える文字列」</td><td>VALUE関数で数値に変換、またはデータクリーンアップを実行</td></tr><tr><td>結果が0</td><td>全角・半角の不一致</td><td>ASC関数（半角化）またはJIS関数（全角化）で統一</td></tr><tr><td>結果がおかしい</td><td>条件部分のカッコ忘れ</td><td>条件式は必ずカッコで囲む</td></tr><tr><td>結果がおかしい</td><td>OR条件で2重カウント</td><td><code>>0</code> を付けて重複を防ぐ</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">最も多い原因は配列のサイズ不一致です。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(A1:A5, B1:B3)</code></pre>



<p class="wp-block-paragraph">この数式はA列が5行、B列が3行で行数が合いません。すべての配列を同じ範囲に揃えてください。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(A1:A5, B1:B5)</code></pre>



<p class="wp-block-paragraph">データを追加した後は特にズレやすいので確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">結果が0になる場合</span></h3>



<p class="wp-block-paragraph">数値が入っているのに結果が0になるときは「文字列型の数値」が原因です。CSVやWebからコピーしたデータでよく起きます。</p>



<p class="wp-block-paragraph">セルの表示が左揃えなら文字列型のサインです。次の方法で修正できます。</p>



<ol class="wp-block-list"><li>対象セルを選択 → メニュー「データ」→「データクリーンアップ」で一括変換</li><li>数式内でVALUE関数を使って変換</li></ol>



<pre class="wp-block-code"><code>=SUMPRODUCT(VALUE(B2:B5)*C2:C5)</code></pre>



<h3 class="wp-block-heading"><span id="toc20">条件付き集計の結果がおかしい場合</span></h3>



<p class="wp-block-paragraph">条件式のカッコ忘れが原因のことが多いです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B5=&quot;文房具&quot;*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">上の数式ではカッコがないため、計算順序がおかしくなります。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">条件式は必ず <code>()</code> で囲むのがルールです。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数と似た機能を持つ関数を比較します。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><th>用途</th><th>条件の扱い</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/spreadsheet-sum-function/">SUM</a></td><td>無条件で合計</td><td>条件なし</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF</a></td><td>1条件で合計</td><td>1つだけ</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS</a></td><td>複数条件で合計</td><td>AND（すべて満たす）</td></tr><tr><td>SUMPRODUCT</td><td>配列の積を合計</td><td>AND・OR両対応</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc22">SUM→SUMIF→SUMIFS→SUMPRODUCTの使い分け</span></h3>



<p class="wp-block-paragraph">集計関数は段階的に使い分けるのがおすすめです。</p>



<ol class="wp-block-list"><li><strong>条件なしの合計</strong> → <a href="https://mashukabu.com/spreadsheet-sum-function/">SUM関数</a></li><li><strong>条件が1つ</strong> → <a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF関数</a></li><li><strong>条件が2つ以上（AND）</strong> → <a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a></li><li><strong>OR条件や掛け算を含む集計</strong> → SUMPRODUCT関数</li></ol>



<p class="wp-block-paragraph">条件の複雑さに合わせてステップアップするイメージです。シンプルな集計にSUMPRODUCT関数を使う必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc23">SUMIFS関数とSUMPRODUCT関数の比較</span></h3>



<p class="wp-block-paragraph">どちらも複数条件で合計できます。使い分けのポイントを整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>SUMIFS</th><th>SUMPRODUCT</th></tr></thead><tbody><tr><td>AND条件</td><td>得意（標準機能）</td><td>得意（条件を<code>*</code>で連結）</td></tr><tr><td>OR条件</td><td>苦手（足し算が必要）</td><td>得意（条件を<code>+</code>で連結）</td></tr><tr><td>掛け算を含む集計</td><td>できない</td><td>得意（配列の積の和）</td></tr><tr><td>数式の読みやすさ</td><td>シンプル</td><td>慣れが必要</td></tr><tr><td>処理速度</td><td>速い</td><td>やや遅い</td></tr><tr><td>ワイルドカード</td><td>使える</td><td>使えない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">AND条件だけなら<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>がシンプルで高速です。OR条件や掛け算を含む集計にはSUMPRODUCT関数を選びましょう。</p>



<h3 class="wp-block-heading"><span id="toc24">Excelとの違い</span></h3>



<p class="wp-block-paragraph">SUMPRODUCT関数の動作はExcelとほぼ同じです。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Googleスプレッドシート</th><th>Excel</th></tr></thead><tbody><tr><td>基本動作</td><td>同じ</td><td>同じ</td></tr><tr><td>引数の上限</td><td>最大30個</td><td>最大255個</td></tr><tr><td>配列サイズ不一致</td><td>#VALUE!</td><td>#VALUE!</td></tr><tr><td>条件付き集計の書き方</td><td>同じ</td><td>同じ</td></tr><tr><td>空白セルの扱い</td><td>0として処理</td><td>0として処理</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数の上限に違いはありますが、実務で30個を超えることはまずありません。ExcelのSUMPRODUCT関数と同じ書き方で使えますよ。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数のポイントをおさらいしましょう。</p>



<ul class="wp-block-list"><li>SUMPRODUCT関数は「掛け算してから合計」を1つの数式で実行できる</li><li>条件付き集計は <code>(条件式)*集計範囲</code> の形で書く</li><li>AND条件は <code>*</code>、OR条件は <code>+</code> でつなぐ</li><li>加重平均は <code>=SUMPRODUCT(値, 重み)/SUM(重み)</code></li><li>配列のサイズは必ず揃える（揃っていないと#VALUE!エラー）</li><li>シンプルな条件にはSUMIFS、OR条件や掛け算集計にはSUMPRODUCT</li></ul>



<p class="wp-block-paragraph">まずは <code>=SUMPRODUCT(単価範囲, 数量範囲)</code> の基本形から試してみてください。作業列が不要になりますよ。</p>



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-sum-function/">スプレッドシートのSUM関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-sumif-function/">スプレッドシートのSUMIF関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-sumifs-function/">スプレッドシートのSUMIFS関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-product-function/">スプレッドシートのPRODUCT関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-sumproduct-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Excel】INDEX関数とは？使い方・MATCH連携・エラー対処を解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-index/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-index/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 22 May 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[INDEX関数]]></category>
		<category><![CDATA[MATCH関数]]></category>
		<category><![CDATA[検索・行列関数]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2303</guid>

					<description><![CDATA[ExcelのINDEX関数の使い方を基本から応用まで解説。構文・引数の意味、MATCH関数との組み合わせ、VLOOKUP・XLOOKUPとの使い分け、よくあるエラーの対処法まで、実務で使える具体例つきで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ExcelのINDEX関数は、表の中から「何行目・何列目」を指定して値を取り出す関数です。</p>



<p class="wp-block-paragraph">「VLOOKUPだと左側の列を検索できない」「もっと柔軟にデータを取り出したい」と思ったことはありませんか？ INDEX関数を覚えると、こうした悩みをスッキリ解決できます。</p>



<p class="wp-block-paragraph">この記事では、INDEX関数の基本構文から、MATCH関数との組み合わせ方、VLOOKUP・XLOOKUPとの使い分け、よくあるエラーの対処法まで、実務で使える具体例をまじえて解説していきます。</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">INDEX関数とは？</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">INDEX関数でできること</a></li><li><a href="#toc4" tabindex="0">配列形式とセル参照形式</a></li></ol></li><li><a href="#toc5" tabindex="0">INDEX関数の書き方（構文と引数）</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc8" tabindex="0">INDEX関数の基本的な使い方</a><ol><li><a href="#toc9" tabindex="0">指定した行・列の値を取得する</a></li><li><a href="#toc10" tabindex="0">行番号・列番号に0を指定して行全体・列全体を返す</a></li></ol></li><li><a href="#toc11" tabindex="0">INDEX関数とMATCH関数の組み合わせ</a><ol><li><a href="#toc12" tabindex="0">INDEX+MATCHの基本パターン</a></li><li><a href="#toc13" tabindex="0">2方向のINDEX+MATCH（クロス検索）</a></li><li><a href="#toc14" tabindex="0">VLOOKUPとの違い・使い分け</a></li><li><a href="#toc15" tabindex="0">XLOOKUPとの使い分け</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#REF! エラー</a></li><li><a href="#toc18" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc19" tabindex="0">#N/A エラー（INDEX+MATCH連携時）</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



<p class="wp-block-paragraph">読み方は「インデックス関数」です。英語の「index」は「索引・目次」を意味します。表の中から目次のように位置を指定してデータを引っ張ってくる、というイメージですね。</p>



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



<p class="wp-block-paragraph">INDEX関数は、<strong>指定した行番号・列番号の位置にあるセルの値を返す関数</strong>です。</p>



<p class="wp-block-paragraph">たとえば「売上管理表の3行目・2列目の値を取り出したい」というケースで活躍します。VLOOKUPのように検索値を使うのではなく、行と列の番号をダイレクトに指定するのが特徴です。</p>



<p class="wp-block-paragraph">対応環境は、Excel for Microsoft 365、Excel 2024、Excel 2021、Excel 2019、Excel 2016、Excel for the web、Excel for Macです。幅広いバージョンで使えるので安心してください。</p>



<h3 class="wp-block-heading"><span id="toc4">配列形式とセル参照形式</span></h3>



<p class="wp-block-paragraph">実はINDEX関数には「配列形式」と「セル参照形式」の2種類があります。</p>



<ul class="wp-block-list"><li><strong>配列形式</strong>: <code>=INDEX(配列, 行番号, [列番号])</code> — 通常使うのはこちら</li><li><strong>セル参照形式</strong>: <code>=INDEX(参照, 行番号, [列番号], [領域番号])</code> — 複数の離れた範囲を切り替えて扱いたいときに使う</li></ul>



<p class="wp-block-paragraph">実務ではほぼ配列形式で事足りるので、この記事では配列形式を中心に解説します。</p>



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



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



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



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



<p class="wp-block-paragraph">引数は3つありますが、列番号は省略できます。配列が1列だけの場合は、行番号だけで値を取り出せるということですね。</p>



<h3 class="wp-block-heading"><span id="toc7">引数の詳細</span></h3>



<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><tr><td>行番号</td><td>必須（※）</td><td>配列の中で値を取り出したい行の位置を数値で指定します</td></tr><tr><td>列番号</td><td>任意</td><td>配列の中で値を取り出したい列の位置を数値で指定します</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">※列番号を指定する場合は、行番号に <code>0</code> を指定することで省略に相当する扱いになります。</p>



<p class="wp-block-paragraph">ポイントを補足しておきます。</p>



<ul class="wp-block-list"><li><strong>行番号に「0」を指定</strong>すると、列全体の値を配列として返します</li><li><strong>列番号に「0」を指定</strong>すると、行全体の値を配列として返します</li><li>行番号・列番号に配列の範囲外の数値を指定すると、<code>#REF!</code> エラーになります</li></ul>



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



<h3 class="wp-block-heading"><span id="toc9">指定した行・列の値を取得する</span></h3>



<p class="wp-block-paragraph">まずは一番シンプルな使い方です。次のような社員名簿があるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>名前</td><td>部署</td><td>内線番号</td></tr><tr><td>2</td><td>田中</td><td>営業部</td><td>1001</td></tr><tr><td>3</td><td>佐藤</td><td>経理部</td><td>2001</td></tr><tr><td>4</td><td>鈴木</td><td>人事部</td><td>3001</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここから「佐藤の内線番号（2行目・3列目）」を取得するには、次のように書きます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, 2, 3)</code></pre>



<p class="wp-block-paragraph">結果は <code>2001</code> が返ります。配列 <code>A2:C4</code> の2行目・3列目、つまりセルC3の値を取り出しているわけです。</p>



<p class="wp-block-paragraph">もうひとつ例を見てみましょう。配列が1列だけの場合は、列番号を省略できます。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A4, 3)</code></pre>



<p class="wp-block-paragraph">この場合は「鈴木」が返ります。1列の範囲から3番目の値を取り出す、というシンプルな使い方です。</p>



<h3 class="wp-block-heading"><span id="toc10">行番号・列番号に0を指定して行全体・列全体を返す</span></h3>



<p class="wp-block-paragraph">行番号または列番号に「0」を指定すると、行全体や列全体の値を配列として取得できます。</p>



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



<p class="wp-block-paragraph">この数式は、2列目（B列）の全データ、つまり「営業部」「経理部」「人事部」を配列として返します。SUM関数やAVERAGE関数と組み合わせると便利ですよ。</p>



<pre class="wp-block-code"><code>=SUM(INDEX(A2:C4, 0, 3))</code></pre>



<p class="wp-block-paragraph">こうすると、3列目（内線番号）の合計を返します。ちょっとむずかしく見えますが、やっていることはシンプルです。「0」は「全部ちょうだい」という意味だと覚えておけばOKです。</p>



<h2 class="wp-block-heading"><span id="toc11">INDEX関数とMATCH関数の組み合わせ</span></h2>



<p class="wp-block-paragraph">INDEX関数の真価は、MATCH関数と組み合わせたときに発揮されます。ここが一番実務で役立つパートなので、しっかり押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">INDEX+MATCHの基本パターン</span></h3>



<p class="wp-block-paragraph">MATCH関数は、指定した値が範囲内の何番目にあるかを返す関数です。この「何番目か」をINDEX関数の行番号に渡すことで、検索値に対応するデータを柔軟に取り出せます。</p>



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



<pre class="wp-block-code"><code>=INDEX(取り出したい範囲, MATCH(検索値, 検索する範囲, 0))</code></pre>



<p class="wp-block-paragraph">先ほどの社員名簿で、「佐藤」の内線番号を検索値から取得する場合はこうなります。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C4, MATCH(&quot;佐藤&quot;, A2:A4, 0))</code></pre>



<p class="wp-block-paragraph">処理の流れを分解すると、次のようになります。</p>



<ol class="wp-block-list"><li><code>MATCH("佐藤", A2:A4, 0)</code> → 「佐藤」はA2:A4の2番目なので <code>2</code> を返す</li><li><code>INDEX(C2:C4, 2)</code> → C2:C4の2番目の値 <code>2001</code> を返す</li></ol>



<p class="wp-block-paragraph">MATCH関数の第3引数「0」は完全一致を意味します。ほとんどの場合は「0」を指定すると覚えておいてください。</p>



<p class="wp-block-paragraph">MATCH関数の詳しい使い方は、こちらの記事で解説しています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-match/">MATCH関数で範囲内から値を検索し、相対的な位置を取得する</a></p>



<h3 class="wp-block-heading"><span id="toc13">2方向のINDEX+MATCH（クロス検索）</span></h3>



<p class="wp-block-paragraph">MATCH関数を行番号と列番号の両方に入れると、「縦軸と横軸から交差するセルを取り出す」クロス検索ができます。</p>



<p class="wp-block-paragraph">たとえば、商品×月のマトリクス表から「商品B」の「3月」の売上を取り出すには、こう書きます。</p>



<pre class="wp-block-code"><code>=INDEX(B2:D5, MATCH(&quot;商品B&quot;, A2:A5, 0), MATCH(&quot;3月&quot;, B1:D1, 0))</code></pre>



<p class="wp-block-paragraph">行方向と列方向、どちらの検索も柔軟にできるのがINDEX+MATCHの強みです。XLOOKUPが使えない環境でも、この組み合わせなら同じことが実現できます。</p>



<h3 class="wp-block-heading"><span id="toc14">VLOOKUPとの違い・使い分け</span></h3>



<p class="wp-block-paragraph">「VLOOKUPがあるならINDEX+MATCHは要らないのでは？」と思うかもしれません。実は、INDEX+MATCHにはVLOOKUPにない大きなメリットがあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>VLOOKUP</th><th>INDEX+MATCH</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>VLOOKUPより高速な場合がある</td></tr><tr><td>数式の読みやすさ</td><td>シンプルで直感的</td><td>慣れるまでやや複雑</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に重要なのが<strong>検索方向</strong>です。VLOOKUPは検索値が左端列にないと使えませんが、INDEX+MATCHなら検索列と取得列を自由に指定できます。</p>



<p class="wp-block-paragraph">たとえば「内線番号から名前を逆引きしたい」という場合、VLOOKUPでは対応できませんが、INDEX+MATCHなら簡単です。</p>



<pre class="wp-block-code"><code>=INDEX(A2:A4, MATCH(2001, C2:C4, 0))</code></pre>



<p class="wp-block-paragraph">結果は「佐藤」が返ります。検索列が右側にあっても問題なく動くのが、INDEX+MATCHの強みです。</p>



<p class="wp-block-paragraph">VLOOKUPの詳しい使い方はこちらの記事で解説しています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数を徹底解説！初心者でも使いこなせる完全ガイド</a></p>



<h3 class="wp-block-heading"><span id="toc15">XLOOKUPとの使い分け</span></h3>



<p class="wp-block-paragraph">Excel for Microsoft 365やExcel 2021以降をお使いなら、XLOOKUP関数という新しい選択肢もあります。VLOOKUPの制限を解消した後継関数で、左方向の検索もスピルにも対応しています。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>対応バージョン</th><th>左方向検索</th><th>数式のシンプルさ</th></tr></thead><tbody><tr><td>VLOOKUP</td><td>全バージョン</td><td>×</td><td>〇</td></tr><tr><td>INDEX+MATCH</td><td>全バージョン</td><td>〇</td><td>△</td></tr><tr><td>XLOOKUP</td><td>365 / 2021以降</td><td>〇</td><td>◎</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けの目安は次のとおりです。</p>



<ul class="wp-block-list"><li><strong>Excel 2021以降 or Microsoft 365</strong> → XLOOKUPを第一候補に</li><li><strong>Excel 2019以前も含めて使うファイル</strong> → INDEX+MATCHが安全</li><li><strong>シンプルな左端検索だけ</strong> → VLOOKUPでもOK</li></ul>



<p class="wp-block-paragraph">XLOOKUPの詳しい使い方はこちらで解説しています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-xlookup/">XLOOKUP関数を徹底解説！基本から応用まで完全マスター</a></p>



<p class="wp-block-paragraph">3つの関数をまとめて比較したい場合は、こちらの記事もあわせてどうぞ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-vlookup-xlookup-index-match-comparison/">VLOOKUP・XLOOKUP・INDEX+MATCHを徹底比較</a></p>



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



<p class="wp-block-paragraph">INDEX関数で発生しやすいエラーと、その原因・対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc17">#REF! エラー</span></h3>



<p class="wp-block-paragraph"><code>#REF!</code> エラーは、<strong>行番号や列番号が配列の範囲を超えている</strong>ときに発生します。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, 5, 1)</code></pre>



<p class="wp-block-paragraph">この例では、A2:C4は3行しかないのに行番号に「5」を指定しているため、<code>#REF!</code> エラーになります。</p>



<p class="wp-block-paragraph"><strong>対処法:</strong> 配列の行数・列数を確認してください。ROWS関数やCOLUMNS関数で範囲のサイズを確認すると安心です。</p>



<pre class="wp-block-code"><code>=ROWS(A2:C4)    → 3（行数）
=COLUMNS(A2:C4) → 3（列数）</code></pre>



<h3 class="wp-block-heading"><span id="toc18">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><code>#VALUE!</code> エラーは、<strong>行番号や列番号に数値以外の値（文字列など）を指定した</strong>場合に発生します。</p>



<pre class="wp-block-code"><code>=INDEX(A2:C4, &quot;二&quot;, 1)</code></pre>



<p class="wp-block-paragraph"><strong>対処法:</strong> 行番号・列番号には必ず数値を指定してください。セル参照を使っている場合は、参照先のセルが数値になっているか確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">#N/A エラー（INDEX+MATCH連携時）</span></h3>



<p class="wp-block-paragraph">INDEX単体ではあまり出ませんが、MATCHと組み合わせたときに <code>#N/A</code> が出ることがあります。これはMATCH側で検索値が見つからなかったサインです。</p>



<pre class="wp-block-code"><code>=INDEX(C2:C4, MATCH(&quot;高橋&quot;, A2:A4, 0))</code></pre>



<p class="wp-block-paragraph">A列に「高橋」がいなければ、MATCHが <code>#N/A</code> を返し、そのままINDEXにも伝わってしまいます。</p>



<p class="wp-block-paragraph"><strong>対処法:</strong> IFERROR関数でラップして、見つからなかった場合のメッセージを指定しておくと実務で使いやすくなります。</p>



<pre class="wp-block-code"><code>=IFERROR(INDEX(C2:C4, MATCH(&quot;高橋&quot;, A2:A4, 0)), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">エラー値の種類と対処方法の詳細は、こちらの記事でまとめています。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-error-value-list/">セルに表示されるエラーの種類と原因、対処方法を解説</a></p>



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



<p class="wp-block-paragraph">この記事では、ExcelのINDEX関数について解説しました。ポイントを振り返っておきましょう。</p>



<ul class="wp-block-list"><li><strong>INDEX関数</strong>は、行番号と列番号を指定して表から値を取り出す関数</li><li>基本構文は <code>=INDEX(配列, 行番号, [列番号])</code></li><li><strong>MATCH関数との組み合わせ</strong>で、検索値に対応するデータを柔軟に取得できる</li><li>2方向のINDEX+MATCHなら、クロス表からの検索も可能</li><li>VLOOKUPでは対応できない「左方向の検索」や「逆引き」も可能</li><li>Excel 2021以降なら、より簡潔なXLOOKUPも選択肢に</li><li><code>#REF!</code> は範囲外、<code>#VALUE!</code> は数値以外、<code>#N/A</code> はMATCH側の検索失敗が主な原因</li></ul>



<p class="wp-block-paragraph">INDEX+MATCHは最初はちょっと複雑に感じるかもしれませんが、パターンを覚えてしまえば応用が利く強力な組み合わせです。ぜひ実際のデータで試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-index/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのARRAYTOTEXT関数の使い方｜配列をテキストに変換する方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-arraytotext/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-arraytotext/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 20 Dec 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ARRAYTOTEXT関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[テキスト変換]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3120</guid>

					<description><![CDATA[ExcelのARRAYTOTEXT関数の使い方を解説。配列データをテキスト形式に一括変換する方法を、構文・引数・書式オプションの違い、実務での活用例とともにわかりやすく紹介します。VALUETOTEXT関数との違いも解説。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Excelで複数セルのデータをまとめて1つの文字列にしたい場面、ありますよね。「報告書にデータを貼り付けたいけど、1セルずつコピーするのが面倒&#8230;」と感じたことはないでしょうか。</p>



<p class="wp-block-paragraph">そのままだと、セルをひとつずつ手作業でつなげるしかなくて非効率です。</p>



<p class="wp-block-paragraph">そんなときに便利なのが <strong>ARRAYTOTEXT関数</strong> です。この関数を使えば、配列やセル範囲のデータをまとめて1つのテキストに変換できますよ。</p>



<p class="wp-block-paragraph">この記事では、ARRAYTOTEXT関数の基本的な使い方から実務での活用例まで、わかりやすく解説していきます。</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">ExcelのARRAYTOTEXT関数とは</a></li><li><a href="#toc2" tabindex="0">ARRAYTOTEXT関数の構文と引数</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li><li><a href="#toc5" tabindex="0">書式オプションの違い</a></li></ol></li><li><a href="#toc6" tabindex="0">ARRAYTOTEXT関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">セル範囲を指定する</a></li><li><a href="#toc8" tabindex="0">2次元の範囲を指定する</a></li><li><a href="#toc9" tabindex="0">配列定数を直接指定する</a></li></ol></li><li><a href="#toc10" tabindex="0">ARRAYTOTEXT関数の活用例</a><ol><li><a href="#toc11" tabindex="0">担当者名の一覧を1セルにまとめる</a></li><li><a href="#toc12" tabindex="0">TEXTJOIN関数との組み合わせ</a></li><li><a href="#toc13" tabindex="0">厳格形式を活用したデータ加工</a></li></ol></li><li><a href="#toc14" tabindex="0">FILTER関数・SORT関数との組み合わせ</a><ol><li><a href="#toc15" tabindex="0">条件に合う名前リストだけを1セルにまとめる</a></li><li><a href="#toc16" tabindex="0">五十音順に並べ替えてから結合する</a></li></ol></li><li><a href="#toc17" tabindex="0">ARRAYTOTEXT関数とVALUETOTEXT関数の違い</a></li><li><a href="#toc18" tabindex="0">ARRAYTOTEXT関数の注意点とエラー対処</a><ol><li><a href="#toc19" tabindex="0">対応バージョンに注意</a></li><li><a href="#toc20" tabindex="0">空白セルの扱い</a></li><li><a href="#toc21" tabindex="0">大量データの場合</a></li></ol></li><li><a href="#toc22" tabindex="0">GoogleスプレッドシートでARRAYTOTEXTを使いたい場合</a><ol><li><a href="#toc23" tabindex="0">Sheetsでの代替方法</a></li></ol></li><li><a href="#toc24" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc25" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">ARRAYTOTEXT関数は、配列やセル範囲のデータをテキスト形式に変換して返す関数です。読み方は「アレイ トゥ テキスト」です。Array（配列）をText（テキスト）に変換する、という意味がそのまま名前になっています。</p>



<p class="wp-block-paragraph">たとえば、A1からA3に「田中」「太郎」「22」と入っている場合、ARRAYTOTEXT関数を使うと「田中, 太郎, 22」のように1つの文字列にまとめてくれます。</p>



<p class="wp-block-paragraph">複数のセルに散らばったデータを1つにまとめたいときに活躍する関数ですよ。</p>



<p class="wp-block-paragraph">なお、ARRAYTOTEXT関数は <strong>Microsoft 365</strong> または <strong>Excel 2021</strong> 以降で利用できます。お使いのバージョンが対応しているか、確認しておきましょう。</p>



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



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



<pre class="wp-block-code"><code>=ARRAYTOTEXT(配列, [書式])</code></pre>



<p class="wp-block-paragraph">引数は2つありますが、必須なのは「配列」だけです。「書式」は省略できます。</p>



<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><tr><td>書式</td><td>省略可</td><td>出力形式を指定する。0（簡潔形式）または1（厳格形式）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc5">書式オプションの違い</span></h3>



<p class="wp-block-paragraph">書式の指定によって、出力されるテキストの形が変わります。ここがARRAYTOTEXT関数のポイントです。</p>



<p class="wp-block-paragraph"><strong>書式 = 0（簡潔形式 / デフォルト）</strong></p>



<p class="wp-block-paragraph">省略時はこちらが適用されます。セルの表示そのままの値がカンマ区切りで並びます。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(A1:A3, 0)
→ 田中, 太郎, 22</code></pre>



<p class="wp-block-paragraph">見た目がシンプルなので、報告書やメール本文にそのまま貼り付けたいときに向いています。</p>



<p class="wp-block-paragraph"><strong>書式 = 1（厳格形式）</strong></p>



<p class="wp-block-paragraph">中括弧で囲まれ、文字列にはダブルクォーテーションが付きます。数値はそのまま表示されますよ。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(A1:A3, 1)
→ {&quot;田中&quot;,&quot;太郎&quot;,22}</code></pre>



<p class="wp-block-paragraph">厳格形式は、出力結果を別の数式に渡したいときに便利です。データ型が明確になるので、文字列と数値を区別しやすくなります。</p>



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



<p class="wp-block-paragraph">実際にARRAYTOTEXT関数を使ってみましょう。ここでは、よくある使い方を3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc7">セル範囲を指定する</span></h3>



<p class="wp-block-paragraph">もっとも基本的な使い方です。データが入ったセル範囲をそのまま指定します。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(A1:C1)
→ 田中, 太郎, 営業部</code></pre>



<p class="wp-block-paragraph">横方向・縦方向のどちらの範囲でも同じように動作します。</p>



<h3 class="wp-block-heading"><span id="toc8">2次元の範囲を指定する</span></h3>



<p class="wp-block-paragraph">行と列にまたがる範囲も指定できます。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(A1:C3)
→ 田中, 太郎, 営業部, 鈴木, 花子, 総務部, 佐藤, 一郎, 経理部</code></pre>



<p class="wp-block-paragraph">複数行のデータもカンマ区切りで1行にまとめてくれます。データの一覧をさっと確認したいときに使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">配列定数を直接指定する</span></h3>



<p class="wp-block-paragraph">セル参照ではなく、配列定数を直接指定することもできます。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT({&quot;東京&quot;,&quot;大阪&quot;,&quot;名古屋&quot;})
→ 東京, 大阪, 名古屋</code></pre>



<p class="wp-block-paragraph">数式の中でちょっとした文字列を組み立てたいときに覚えておくと便利です。</p>



<h2 class="wp-block-heading"><span id="toc10">ARRAYTOTEXT関数の活用例</span></h2>



<p class="wp-block-paragraph">ここからは、実務で役立つ活用例を紹介していきます。</p>



<h3 class="wp-block-heading"><span id="toc11">担当者名の一覧を1セルにまとめる</span></h3>



<p class="wp-block-paragraph">プロジェクトの担当者リストが縦に並んでいるとき、報告書用に1セルにまとめるケースです。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(B2:B6)
→ 田中, 鈴木, 佐藤, 山田, 高橋</code></pre>



<p class="wp-block-paragraph">これなら、報告資料にコピー&#038;ペーストするだけで済みますよね。</p>



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



<p class="wp-block-paragraph">区切り文字を自由にカスタマイズしたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>を使うのがおすすめです。</p>



<p class="wp-block-paragraph">ARRAYTOTEXTはカンマ区切り固定ですが、TEXTJOINなら区切り文字を「/」や「・」に変えられます。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;・&quot;, TRUE, B2:B6)
→ 田中・鈴木・佐藤・山田・高橋</code></pre>



<p class="wp-block-paragraph">用途に応じて使い分けてみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">厳格形式を活用したデータ加工</span></h3>



<p class="wp-block-paragraph">厳格形式（書式=1）の出力は、データの受け渡しに活用できます。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(A1:A3, 1)
→ {&quot;商品A&quot;,&quot;商品B&quot;,&quot;商品C&quot;}</code></pre>



<p class="wp-block-paragraph">この形式は、VBAやPower Queryにデータを渡すときの入力として使えるケースがあります。データ型が明確なので、加工時のトラブルを減らせますよ。</p>



<h2 class="wp-block-heading"><span id="toc14">FILTER関数・SORT関数との組み合わせ</span></h2>



<p class="wp-block-paragraph">ARRAYTOTEXT関数は、<a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-sort/">SORT関数</a>と組み合わせると、絞り込み・並べ替えをした結果を1つの文字列として取り出せます。</p>



<h3 class="wp-block-heading"><span id="toc15">条件に合う名前リストだけを1セルにまとめる</span></h3>



<p class="wp-block-paragraph">A列に部署名、B列に担当者名がある場合、「営業部」の担当者だけをカンマ区切りで抽出するには次のように書きます。</p>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(FILTER(B2:B10, A2:A10=&quot;営業部&quot;))
→ 田中, 鈴木, 高橋</code></pre>



<p class="wp-block-paragraph">FILTER関数が条件に合う行だけを取り出し、ARRAYTOTEXTがその結果を1つのテキストにまとめます。フィルター後の結果をそのまま議事録や報告書に貼り付けられるのが便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc16">五十音順に並べ替えてから結合する</span></h3>



<pre class="wp-block-code"><code>=ARRAYTOTEXT(SORT(B2:B6))
→ 鈴木, 田中, 高橋, 佐藤, 山田（五十音順）</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sort/">SORT関数</a>で並べ替えた配列をそのまま渡せるので、別のセルに作業列を作る必要がありません。</p>



<h2 class="wp-block-heading"><span id="toc17">ARRAYTOTEXT関数とVALUETOTEXT関数の違い</span></h2>



<p class="wp-block-paragraph">ARRAYTOTEXT関数と似た関数に、<a href="https://mashukabu.com/excel-function-howto-use-valuetotext/">VALUETOTEXT関数</a>があります。名前が似ているので混同しやすいですが、違いはシンプルです。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>ARRAYTOTEXT</th><th>VALUETOTEXT</th></tr></thead><tbody><tr><td>対象</td><td>配列・セル範囲（複数セル）</td><td>単一の値（1つのセル）</td></tr><tr><td>出力</td><td>複数の値をまとめた文字列</td><td>1つの値をテキストに変換</td></tr><tr><td>書式オプション</td><td>0（簡潔）/ 1（厳格）</td><td>0（簡潔）/ 1（厳格）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくり言うと、 <strong>複数のデータをまとめたいならARRAYTOTEXT、1つの値を変換したいならVALUETOTEXT</strong> と覚えておけば大丈夫ですよ。</p>



<p class="wp-block-paragraph">また、文字列を結合する関数としては<a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数</a>もあります。CONCAT関数はセル範囲の値を区切り文字なしで結合するので、カンマ区切りが不要な場合はこちらも検討してみてください。</p>



<p class="wp-block-paragraph">テキスト変換関連の関数を目的別に整理すると、次のようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使う関数</th></tr></thead><tbody><tr><td>配列をテキストにまとめる</td><td>ARRAYTOTEXT</td></tr><tr><td>1つの値をテキストに変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-valuetotext/">VALUETOTEXT</a></td></tr><tr><td>区切り文字を自由に指定して結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></td></tr><tr><td>区切り文字なしで文字列を結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a></td></tr><tr><td>数値や日付を表示形式付きでテキスト化する</td><td><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT</a></td></tr><tr><td>テキストを区切り文字で分割する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a></td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc18">ARRAYTOTEXT関数の注意点とエラー対処</span></h2>



<h3 class="wp-block-heading"><span id="toc19">対応バージョンに注意</span></h3>



<p class="wp-block-paragraph">ARRAYTOTEXT関数はMicrosoft 365またはExcel 2021以降でのみ利用できます。それ以前のバージョンでは <code>#NAME?</code> エラーが表示されます。</p>



<p class="wp-block-paragraph">もし <code>#NAME?</code> エラーが出たら、まずExcelのバージョンを確認してみてください。バージョンが対応していない場合は、<a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>で代用できます。</p>



<h3 class="wp-block-heading"><span id="toc20">空白セルの扱い</span></h3>



<p class="wp-block-paragraph">配列の中に空白セルがある場合、簡潔形式（書式=0）ではスキップされずにカンマの間が空になります。</p>



<pre class="wp-block-code"><code>A1: 田中、A2: (空白)、A3: 佐藤 の場合
=ARRAYTOTEXT(A1:A3)
→ 田中, , 佐藤</code></pre>



<p class="wp-block-paragraph">空白を除外したい場合は、TEXTJOIN関数の第2引数に TRUE を指定する方法が便利ですよ。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;, &quot;, TRUE, A1:A3)
→ 田中, 佐藤</code></pre>



<h3 class="wp-block-heading"><span id="toc21">大量データの場合</span></h3>



<p class="wp-block-paragraph">変換対象のセル数が多いと、結果の文字列が非常に長くなります。Excelのセルに格納できる文字数は32,767文字が上限なので、大量データの場合は範囲を区切って使いましょう。</p>



<h2 class="wp-block-heading"><span id="toc22">GoogleスプレッドシートでARRAYTOTEXTを使いたい場合</span></h2>



<p class="wp-block-paragraph">ARRAYTOTEXT関数はExcel専用の関数で、Googleスプレッドシートには搭載されていません。スプレッドシートで同様の処理をしたい場合は、<code>JOIN関数</code> か <code>TEXTJOIN関数</code> が代替になります。</p>



<h3 class="wp-block-heading"><span id="toc23">Sheetsでの代替方法</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>Excelの数式</th><th>Sheetsの代替</th></tr></thead><tbody><tr><td><code>=ARRAYTOTEXT(A1:A5)</code></td><td><code>=JOIN(", ", A1:A5)</code></td></tr><tr><td><code>=ARRAYTOTEXT(A1:A5, 0)</code></td><td><code>=TEXTJOIN(", ", FALSE, A1:A5)</code></td></tr><tr><td>空白を除外したい場合</td><td><code>=TEXTJOIN(", ", TRUE, A1:A5)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ExcelのファイルをスプレッドシートでそのまMA開くと、ARRAYTOTEXT関数は <code>#NAME?</code> エラーになります。スプレッドシートで使い続ける場合は、上記の代替関数に置き換えておくとスムーズです。</p>



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



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



<p class="wp-block-paragraph">使えません。ARRAYTOTEXT関数はMicrosoft 365またはExcel 2021以降専用です。Googleスプレッドシートでは <code>=JOIN(", ", A1:A5)</code> または <code>=TEXTJOIN(", ", FALSE, A1:A5)</code> が代替になります。</p>



<p class="wp-block-paragraph"><strong>Q. 区切り文字をカンマ以外に変えることはできますか？</strong></p>



<p class="wp-block-paragraph">ARRAYTOTEXT関数の区切り文字はカンマ固定で変更できません。スラッシュや読点など別の区切り文字を使いたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>を使ってください。<code>=TEXTJOIN("/", TRUE, A1:A5)</code> のように第1引数で自由に指定できます。</p>



<p class="wp-block-paragraph"><strong>Q. 空白セルを除外してまとめるにはどうすればよいですか？</strong></p>



<p class="wp-block-paragraph">ARRAYTOTEXT関数では空白セルを自動除外できません。空白を除外したい場合は <code>=TEXTJOIN(", ", TRUE, A1:A10)</code> を使ってください。TEXTJOINの第2引数を <code>TRUE</code> にすると、空白セルを自動スキップします。</p>



<p class="wp-block-paragraph"><strong>Q. FILTER関数と組み合わせるとどのような場面で使えますか？</strong></p>



<p class="wp-block-paragraph">条件に合うデータだけを抽出してから1つの文字列にまとめる場面で使えます。例として、部署が「営業部」の担当者だけを「田中, 鈴木, 高橋」のように出力する場合は <code>=ARRAYTOTEXT(FILTER(B2:B10, A2:A10="営業部"))</code> と書けます。議事録や週次レポートへの貼り付けが効率化しますよ。</p>



<p class="wp-block-paragraph"><strong>Q. 厳格形式（書式=1）はどんな場面で使いますか？</strong></p>



<p class="wp-block-paragraph">出力テキストをそのまま別の数式やプログラムに渡したいとき、文字列と数値を型ごとに区別したいときに便利です。たとえばVBAのInputBoxにデータを貼り付けるときや、Power Queryのカスタム列で使いやすい形式が欲しいときに活用できます。</p>



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



<p class="wp-block-paragraph">ExcelのARRAYTOTEXT関数は、配列やセル範囲のデータをまとめて1つのテキストに変換できる関数です。</p>



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



<ul class="wp-block-list"><li><strong>書式=0（簡潔形式）</strong>: カンマ区切りでシンプルに出力。報告書やメールへの貼り付けに便利</li><li><strong>書式=1（厳格形式）</strong>: 中括弧+引用符付きで出力。データの受け渡しに向いている</li><li><strong>VALUETOTEXT関数との違い</strong>: ARRAYTOTEXTは複数セル、VALUETOTEXTは単一セルが対象</li><li><strong>区切り文字を変えたいとき</strong>: <a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>がおすすめ</li><li><strong>FILTERやSORT関数と組み合わせると</strong>: 条件絞り込み・並べ替え後のデータをそのまま1文字列に変換できる</li><li><strong>Googleスプレッドシートでは使えない</strong>: <code>JOIN関数</code> または <code>TEXTJOIN関数</code> が代替になる</li></ul>



<p class="wp-block-paragraph">配列データを文字列に変換する場面で、ぜひ活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-arraytotext/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのCHOOSECOLS関数の使い方｜指定した列だけを取り出す方法</title>
		<link>https://mashukabu.com/excel-function-howto-use-choosecols/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-choosecols/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 13 Nov 2022 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CHOOSECOLS]]></category>
		<category><![CDATA[スピル]]></category>
		<category><![CDATA[列抽出]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=3002</guid>

					<description><![CDATA[ExcelのCHOOSECOLS関数の使い方を解説。構文・引数の基本から複数列の取り出し・負の数による逆指定・SORT/FILTER/HSTACKとの組み合わせ・よくあるエラー対処・FAQまで実例付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">表のデータから特定の列だけを別の場所に取り出したいとき、手作業でコピー＆ペーストを繰り返していませんか？</p>



<p class="wp-block-paragraph">「商品名と売上だけ抜き出したい」「列の順番を入れ替えて報告書を作りたい」――こうした作業は、対応するデータが100行・1000行と増えるほど、手作業では追いつかなくなります。</p>



<p class="wp-block-paragraph">CHOOSECOLS関数を使えば、指定した列番号を入力するだけで、必要な列を自動的に取り出せます。複数列の同時取り出しや逆順指定、スピルによる結果の自動展開にも対応しており、データ加工の手間を大幅に削減できます。</p>



<p class="wp-block-paragraph">この記事では、CHOOSECOLS関数の基本構文から、SORT・FILTER・HSTACKなど他関数との実務的な組み合わせ、よくあるエラーへの対処法、FAQまでまとめて解説します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">CHOOSECOLS関数とは</a><ol><li><a href="#toc2" tabindex="0">CHOOSECOLS関数でできること</a></li><li><a href="#toc3" tabindex="0">こんな場面で活躍する</a></li></ol></li><li><a href="#toc4" tabindex="0">CHOOSECOLS関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">列番号の指定方法</a></li></ol></li><li><a href="#toc6" tabindex="0">CHOOSECOLS関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">1列だけ取り出す</a></li><li><a href="#toc8" tabindex="0">複数列を同時に取り出す</a></li><li><a href="#toc9" tabindex="0">列の順番を並べ替える</a></li><li><a href="#toc10" tabindex="0">末尾から列を指定する（負の数）</a></li><li><a href="#toc11" tabindex="0">同じ列を複数回取り出す</a></li></ol></li><li><a href="#toc12" tabindex="0">実務での活用例</a><ol><li><a href="#toc13" tabindex="0">活用例1：報告書用に必要な列だけ抽出する</a></li><li><a href="#toc14" tabindex="0">活用例2：SORT関数と組み合わせて並べ替えと列抽出を同時に行う</a></li><li><a href="#toc15" tabindex="0">活用例3：FILTER関数と組み合わせて抽出と列選択をまとめる</a></li><li><a href="#toc16" tabindex="0">活用例4：CHOOSEROWS関数と組み合わせて行と列を同時に指定する</a></li><li><a href="#toc17" tabindex="0">活用例5：HSTACK関数と組み合わせて列を結合する</a></li><li><a href="#toc18" tabindex="0">活用例6：常に最後の3列を取り出す</a></li></ol></li><li><a href="#toc19" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">列数を確認しながら指定する</a></li><li><a href="#toc21" tabindex="0">動的に末尾の列だけ取り出す</a></li></ol></li><li><a href="#toc22" tabindex="0">CHOOSECOLSと似た関数との使い分け</a></li><li><a href="#toc23" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc24" tabindex="0">Q1. CHOOSECOLS関数はどのバージョンのExcelで使えますか？</a></li><li><a href="#toc25" tabindex="0">Q2. CHOOSECOLSとINDEXは何が違いますか？</a></li><li><a href="#toc26" tabindex="0">Q3. CHOOSECOLSで0番目や存在しない列番号を指定するとどうなりますか？</a></li><li><a href="#toc27" tabindex="0">Q4. 取り出した結果を値として固定したい場合はどうすればよいですか？</a></li><li><a href="#toc28" tabindex="0">Q5. CHOOSECOLSをスピルさせず、特定のセルだけに表示することはできますか？</a></li></ol></li><li><a href="#toc29" tabindex="0">まとめ</a><ol><li><a href="#toc30" tabindex="0">関数一覧</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">CHOOSECOLS関数は、配列またはセル範囲から「指定した列番号の列だけ」を取り出して返す関数です。Microsoft 365およびExcel 2021以降で使用できます。</p>



<p class="wp-block-paragraph">読み方は「チューズ コラムズ（CHOOSE COLUMNS）」で、英語の「列を選ぶ」という意味そのままの関数名です。</p>



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



<ul class="wp-block-list"><li>表の中から必要な列だけを抽出する</li><li>複数の列をまとめて取り出す</li><li>取り出す列の順番を自由に並べ替える</li><li>負の数を使って末尾から列を指定する</li><li>スピルによって複数列の結果をワンクリックで展開する</li></ul>



<p class="wp-block-paragraph">スピル（自動展開）に対応しているため、結果が複数列にわたる場合でも1つの数式で処理できます。元データを変更せずに「ビューだけ作る」用途にぴったりの関数です。</p>



<h3 class="wp-block-heading"><span id="toc3">こんな場面で活躍する</span></h3>



<ul class="wp-block-list"><li>元データはそのまま残し、別シートに「必要な列だけのビュー」を作りたい</li><li>列順がバラバラの社内データを、報告フォーマットの順番に並べ替えたい</li><li>列数が変動する表で「常に最後の列」を取り出したい</li><li>FILTERやSORTと組み合わせて、抽出と並べ替えと列選択を1つの数式にまとめたい</li></ul>



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



<pre class="wp-block-code"><code>=CHOOSECOLS( 配列 , 列番号1 , [列番号2] , … )</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略</th><th>説明</th></tr></thead><tbody><tr><td>配列</td><td>必須</td><td>列を取り出したい配列またはセル範囲</td></tr><tr><td>列番号1</td><td>必須</td><td>取り出す列の番号（1から始まる）</td></tr><tr><td>列番号2以降</td><td>省略可</td><td>追加で取り出す列の番号（複数指定可）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc5">列番号の指定方法</span></h3>



<ul class="wp-block-list"><li><strong>正の数</strong>：先頭から数えた列番号（1＝1列目、2＝2列目）</li><li><strong>負の数</strong>：末尾から数えた列番号（-1＝最終列、-2＝最終列から2番目）</li><li><strong>複数指定</strong>：取り出したい順に列番号をカンマで区切る</li><li><strong>同じ列の重複指定</strong>：同じ列番号を複数回指定して、同じ列を2度取り出すことも可能</li></ul>



<p class="wp-block-paragraph">列番号は必ず「整数」で指定します。小数や文字列を指定すると後述のエラーが返ります。</p>



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



<p class="wp-block-paragraph">ここからは、シンプルなパターンから順に手を動かして確かめていきましょう。サンプル表は次のような構成を想定します。</p>



<figure class="wp-block-table"><table><thead><tr><th>列</th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th></tr></thead><tbody><tr><td>内容</td><td>商品コード</td><td>商品名</td><td>単価</td><td>数量</td><td>売上</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">1列だけ取り出す</span></h3>



<p class="wp-block-paragraph">A2:E10の範囲から3列目（単価）だけを取り出す例です。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(A2:E10, 3)</code></pre>



<p class="wp-block-paragraph">指定したセル範囲の3列目のデータが、数式を入力したセルからスピルして縦方向に表示されます。元の表に「単価」だけが並んだ縦長のリストができあがります。</p>



<h3 class="wp-block-heading"><span id="toc8">複数列を同時に取り出す</span></h3>



<p class="wp-block-paragraph">A2:E10の範囲から2列目（商品名）と5列目（売上）を取り出す例です。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(A2:E10, 2, 5)</code></pre>



<p class="wp-block-paragraph">離れた位置にある「商品名」と「売上」を、間の列（単価・数量）を飛ばして一度に取り出せます。報告書用の縮約版データをサクッと作りたいときに重宝します。</p>



<h3 class="wp-block-heading"><span id="toc9">列の順番を並べ替える</span></h3>



<p class="wp-block-paragraph">元の表の列順を変えて取り出したい場合も、列番号の順番を指定するだけです。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(A2:E10, 5, 2, 3, 4)</code></pre>



<p class="wp-block-paragraph">元が「商品コード・商品名・単価・数量・売上」の順でも、「売上・商品名・単価・数量」の順に並べ替えて取り出せます。レポート用フォーマットに合わせて列順を変えたいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc10">末尾から列を指定する（負の数）</span></h3>



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



<p class="wp-block-paragraph"><code>-1</code> を指定すると最終列（売上）を取り出せます。<code>-2</code> なら最終列の1つ手前（数量）。列数が増減する可能性がある表で「常に末尾の列」を参照したい場合に使うと、列の追加で数式が壊れません。</p>



<h3 class="wp-block-heading"><span id="toc11">同じ列を複数回取り出す</span></h3>



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



<p class="wp-block-paragraph">同じ列番号を繰り返し指定すると、同じ列を複数回並べて取り出せます。「商品名を3列ぶん並べたフォーマットに転記したい」といった特殊な要件に対応できます。</p>



<h2 class="wp-block-heading"><span id="toc12">実務での活用例</span></h2>



<h3 class="wp-block-heading"><span id="toc13">活用例1：報告書用に必要な列だけ抽出する</span></h3>



<p class="wp-block-paragraph">販売管理表（商品コード・商品名・単価・数量・売上・担当者）から、報告書に必要な「商品名・売上・担当者」だけを取り出す場合：</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(A2:F100, 2, 5, 6)</code></pre>



<p class="wp-block-paragraph">元のデータを変更せずに、報告書用のビューを別シートに作れます。元データを編集すれば抽出結果もリアルタイムに更新されるため、月次レポートのテンプレート化に向いています。</p>



<h3 class="wp-block-heading"><span id="toc14">活用例2：SORT関数と組み合わせて並べ替えと列抽出を同時に行う</span></h3>



<p class="wp-block-paragraph">SORT関数と組み合わせると、必要な列を取り出しつつ売上順に並べ替えるといった処理を、1つの数式で完結できます。</p>



<pre class="wp-block-code"><code>=SORT(CHOOSECOLS(A2:E100, 2, 1, 4), 2, -1)</code></pre>



<p class="wp-block-paragraph">この数式は次のように動きます。</p>



<ol class="wp-block-list"><li><code>CHOOSECOLS(A2:E100, 2, 1, 4)</code> で「2列目・1列目・4列目」を順に取り出す</li><li><code>SORT(..., 2, -1)</code> で結果の2列目（＝元の1列目）を降順に並べる</li></ol>



<p class="wp-block-paragraph">「必要な列だけを選んで、特定の列で降順に並べる」という処理を、補助列なしで実現できます。</p>



<h3 class="wp-block-heading"><span id="toc15">活用例3：FILTER関数と組み合わせて抽出と列選択をまとめる</span></h3>



<p class="wp-block-paragraph">FILTER関数と組み合わせると、「条件に合う行だけを取り出し、さらに必要な列だけに絞る」処理を1つの数式で書けます。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(FILTER(A2:F100, E2:E100&gt;=10000), 2, 5, 6)</code></pre>



<p class="wp-block-paragraph">この例では、E列（売上）が10000以上の行だけをFILTERで抽出し、その結果から商品名・売上・担当者の3列だけをCHOOSECOLSで取り出しています。条件付き縮約レポートのテンプレートとして強力です。</p>



<h3 class="wp-block-heading"><span id="toc16">活用例4：CHOOSEROWS関数と組み合わせて行と列を同時に指定する</span></h3>



<p class="wp-block-paragraph">CHOOSEROWS関数（行を選択する関数）と組み合わせると、必要な行と列を同時に抽出できます。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(CHOOSEROWS(A1:E20, 1, 3, 5), 2, 4)</code></pre>



<p class="wp-block-paragraph">この例では1・3・5行目から2・4列目だけを取り出しています。「サンプル行だけ抜き出してダッシュボード化したい」ときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc17">活用例5：HSTACK関数と組み合わせて列を結合する</span></h3>



<p class="wp-block-paragraph">別表の列同士を結合してから列順を整えたい場合は、HSTACKと組み合わせます。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(HSTACK(A2:A100, D2:D100, F2:F100), 3, 1, 2)</code></pre>



<p class="wp-block-paragraph">A列・D列・F列という離れた列を横に結合してから、CHOOSECOLSで並び順を「F → A → D」に変えています。複数シートのデータを1枚にまとめる作業で活躍します。</p>



<h3 class="wp-block-heading"><span id="toc18">活用例6：常に最後の3列を取り出す</span></h3>



<p class="wp-block-paragraph">月次データのように、列が右に追加されていく表では、負の数指定が威力を発揮します。</p>



<pre class="wp-block-code"><code>=CHOOSECOLS(A2:Z100, -3, -2, -1)</code></pre>



<p class="wp-block-paragraph">「直近3か月分」を常に末尾の3列とみなして取り出せるため、列が追加されても数式を書き換える必要がありません。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>列番号に小数や文字列を指定している</td><td>INT関数で整数化するか、整数を直接指定する</td></tr><tr><td>#VALUE!</td><td>列番号に0を指定している</td><td>1以上、または-1以下の整数を指定する</td></tr><tr><td>#REF!</td><td>列番号が配列の列数を超えている</td><td>配列の列数以内で指定する（COLUMNS関数で確認）</td></tr><tr><td>#NAME?</td><td>関数名のスペルミスまたは非対応バージョン</td><td>Microsoft 365またはExcel 2021以降で使用する</td></tr><tr><td>#SPILL!</td><td>スピル先のセルにデータが入っている</td><td>スピル範囲を空にする</td></tr><tr><td>結果が1列になる</td><td>列番号を1つしか指定していない</td><td>複数列を取り出すには列番号を複数指定する</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc20">列数を確認しながら指定する</span></h3>



<p class="wp-block-paragraph">配列の列数が不明なときは、COLUMNS関数で列数を取得してから指定すると安全です。</p>



<pre class="wp-block-code"><code>=COLUMNS(A2:E100)</code></pre>



<p class="wp-block-paragraph">返ってきた数（5）以内の整数を列番号に指定すれば、#REF!エラーを防げます。</p>



<h3 class="wp-block-heading"><span id="toc21">動的に末尾の列だけ取り出す</span></h3>



<p class="wp-block-paragraph">列数が変動する表では、負の数指定と組み合わせるか、<code>-COLUMNS(範囲)</code> のような相対指定で対応できます。</p>



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



<p class="wp-block-paragraph">このように書いておけば、列が右に追加されても常に「最終列」を取り出せます。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>用途</th><th>使い分けのポイント</th></tr></thead><tbody><tr><td>CHOOSECOLS</td><td>配列から特定の列を選んで取り出す</td><td>列番号で選びたい・列順を入れ替えたい</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-chooserows/">CHOOSEROWS</a></td><td>配列から特定の行を選んで取り出す</td><td>行番号で選びたい・行順を入れ替えたい</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-index/">INDEX</a></td><td>行と列の交差するセルや範囲を返す</td><td>1セルだけ・行と列の両方を指定したい</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-filter/">FILTER</a></td><td>条件に合う行または列を抽出する</td><td>条件式で絞り込みたい</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-hstack/">HSTACK</a></td><td>複数の配列を横方向に結合する</td><td>別表の列を1つにまとめたい</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-vstack/">VSTACK</a></td><td>複数の配列を縦方向に結合する</td><td>別表の行を1つにまとめたい</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">CHOOSECOLSは「列番号で選ぶ」発想、FILTERは「条件で絞る」発想、INDEXは「1点を取り出す」発想と覚えると使い分けが整理できます。</p>



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



<h3 class="wp-block-heading"><span id="toc24">Q1. CHOOSECOLS関数はどのバージョンのExcelで使えますか？</span></h3>



<p class="wp-block-paragraph">A. Microsoft 365およびExcel 2021以降で使用できます。Excel 2019以前およびExcel for Mac 2019以前では使用できず、<code>#NAME?</code> エラーが返ります。Web版Excel・iPad版Excelの最新版でも使用可能です。</p>



<h3 class="wp-block-heading"><span id="toc25">Q2. CHOOSECOLSとINDEXは何が違いますか？</span></h3>



<p class="wp-block-paragraph">A. CHOOSECOLSは「列単位で複数列を一気に取り出す」のが得意な関数です。一方、INDEXは「1セル単位の取得」または「1列・1行の取り出し」が基本です。複数列を順番を変えて取り出したい場合や、スピルで自動展開させたい場合はCHOOSECOLSが向いています。</p>



<h3 class="wp-block-heading"><span id="toc26">Q3. CHOOSECOLSで0番目や存在しない列番号を指定するとどうなりますか？</span></h3>



<p class="wp-block-paragraph">A. 列番号に0を指定すると <code>#VALUE!</code>、列数を超える番号（例：5列の表に7を指定）や負の方向に超えた指定（例：5列の表に-7）を指定すると <code>#REF!</code> エラーが返ります。COLUMNS関数で列数を事前に確認しておくと事故を防げます。</p>



<h3 class="wp-block-heading"><span id="toc27">Q4. 取り出した結果を値として固定したい場合はどうすればよいですか？</span></h3>



<p class="wp-block-paragraph">A. 数式を入力したセル範囲をコピーし、「貼り付けのオプション」→「値の貼り付け」を選択すれば、結果を値として固定できます。元データの変更を反映させたくない場合や、別ファイルに転記したい場合に使います。</p>



<h3 class="wp-block-heading"><span id="toc28">Q5. CHOOSECOLSをスピルさせず、特定のセルだけに表示することはできますか？</span></h3>



<p class="wp-block-paragraph">A. CHOOSECOLSの結果は基本的にスピルしますが、<code>INDEX(CHOOSECOLS(...), 行, 列)</code> のようにINDEX関数で囲めば、1セルだけを取り出せます。また、<code>=CHOOSECOLS(A2:E10, 2)</code> のように1列分の指定でも、出力先が1セルしかない場合は #SPILL! エラーになるため、スピル先のセルを空けておくのが基本です。</p>



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



<p class="wp-block-paragraph">CHOOSECOLS関数は、配列から指定した列を自由に取り出せる関数です。</p>



<ul class="wp-block-list"><li>1列だけの抽出から複数列の同時取り出しまで対応</li><li>列の並べ替えや、同じ列の繰り返し指定も可能</li><li>負の数で末尾から列を指定できる（列数が変動する表で便利）</li><li>SORT・FILTER・HSTACK・CHOOSEROWSと組み合わせれば、条件抽出・並べ替え・列結合を1つの数式で実現</li><li>Microsoft 365・Excel 2021以降で使用可能</li></ul>



<p class="wp-block-paragraph">元のデータを変えずに必要な列だけを取り出してレポートを作りたい場面で活躍します。スピルを活用すれば、列の選択・並べ替え・抽出・結合をすべて関数1つで完結できるため、月次レポートやダッシュボード作成の効率が一気に上がります。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">アルファベット順 Excel関数一覧</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">機能別 Excel関数一覧</a></li><li><a href="https://mashukabu.com/excel-function-alphabetical-order-pronunciation/">Excel関数の読み方一覧</a></li><li><a href="https://mashukabu.com/excel-error-value-list/">Excel エラー値の種類と対処方法</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-choosecols/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのSUMPRODUCT関数の使い方｜掛けて合計・複数条件・OR集計を完全ガイド</title>
		<link>https://mashukabu.com/excel-function-howto-use-sumproduct/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-sumproduct/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 13 Mar 2022 14:59:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[OR条件]]></category>
		<category><![CDATA[SUMPRODUCT関数]]></category>
		<category><![CDATA[加重平均]]></category>
		<category><![CDATA[条件付き集計]]></category>
		<category><![CDATA[複数条件]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1353</guid>

					<description><![CDATA[ExcelのSUMPRODUCT関数の使い方を初心者にもわかりやすく解説。基本の「掛けて合計」から、複数条件・OR条件・加重平均・ダブルマイナス（--）まで実例付きで紹介。SUMIF・SUMIFSとの使い分けや「0になる」エラーの対処法もまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「商品ごとの売上を出したいけど、単価と数量を1行ずつ掛けてから合計するのは面倒&#8230;」。Excelで集計作業をしていると、こんな場面に出くわしますよね。</p>



<p class="wp-block-paragraph">作業列を増やすほどシートが散らかるし、計算ミスも起きやすくなります。</p>



<p class="wp-block-paragraph">そんなときに頼りになるのが、ExcelのSUMPRODUCT関数です。「掛け算して合計」を1つの数式でこなせます。しかも、条件付き集計やOR条件にも対応できる万能な関数ですよ。</p>



<p class="wp-block-paragraph">この記事では、SUMPRODUCT関数の基本構文から複数条件・OR条件・加重平均まで、実例付きでわかりやすく解説します。実務シーン別の使い方やよくあるエラーの対処法も、あわせて紹介しますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのSUMPRODUCT関数とは？</a></li><li><a href="#toc2" tabindex="0">SUMPRODUCT関数の書き方（構文と引数）</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">SUMPRODUCT関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">「掛けてから合計」が1つの数式で済む仕組み</a></li></ol></li><li><a href="#toc7" tabindex="0">SUMPRODUCT関数で条件付き集計をする</a><ol><li><a href="#toc8" tabindex="0">1つの条件で集計する</a></li><li><a href="#toc9" tabindex="0">複数条件（AND）で集計する</a></li><li><a href="#toc10" tabindex="0">OR条件で集計する</a></li></ol></li><li><a href="#toc11" tabindex="0">知っておくと便利なダブルマイナス（&#8211;）</a></li><li><a href="#toc12" tabindex="0">実務シーン別のSUMPRODUCT関数活用例</a><ol><li><a href="#toc13" tabindex="0">月別×商品別のクロス集計をする</a></li><li><a href="#toc14" tabindex="0">「○○を含む」の部分一致で集計する</a></li><li><a href="#toc15" tabindex="0">チェック列（フラグ）で集計する</a></li><li><a href="#toc16" tabindex="0">複数条件でカウントする</a></li></ol></li><li><a href="#toc17" tabindex="0">SUMPRODUCT関数で加重平均を求める</a></li><li><a href="#toc18" tabindex="0">SUMPRODUCT関数でよくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc20" tabindex="0">数値が入っているのに結果が0になる</a></li><li><a href="#toc21" tabindex="0">条件式で結果がおかしい</a></li></ol></li><li><a href="#toc22" tabindex="0">SUMIF・SUMIFS関数との違い・使い分け</a></li><li><a href="#toc23" tabindex="0">PRODUCT関数との違い</a></li><li><a href="#toc24" tabindex="0">SUMPRODUCT関数のよくある質問（FAQ）</a><ol><li><a href="#toc25" tabindex="0">SUMPRODUCTは配列数式ですか？Ctrl+Shift+Enterは必要ですか？</a></li><li><a href="#toc26" tabindex="0">「&#8211;」（ダブルマイナス）は必ず必要ですか？</a></li><li><a href="#toc27" tabindex="0">Googleスプレッドシートでも使えますか？</a></li><li><a href="#toc28" tabindex="0">大量データでSUMPRODUCTが重いときはどうすればいいですか？</a></li><li><a href="#toc29" tabindex="0">空白セルがあるとエラーになりますか？</a></li></ol></li><li><a href="#toc30" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">SUMPRODUCT関数（読み方: サムプロダクト）は、<strong>複数の配列の対応する要素を掛け算し、その合計を返す関数</strong>です。</p>



<p class="wp-block-paragraph">名前は「SUM（合計）」と「PRODUCT（積・掛け算）」の組み合わせ。文字どおり「掛け算の合計」を一発で求められます。</p>



<p class="wp-block-paragraph">たとえば、商品リストに「単価」と「数量」があるとき、全商品の売上合計をワンステップで計算できます。通常なら作業列に「単価 x 数量」を入力してからSUM関数で合計しますよね。SUMPRODUCT関数なら数式1つで済むわけです。</p>



<p class="wp-block-paragraph">SUMPRODUCT関数でできることを整理すると、次のとおりです。</p>



<ul class="wp-block-list"><li>複数の範囲を要素ごとに掛け算して合計する</li><li>条件に合うデータだけを集計する（条件付き集計）</li><li>複数の条件やOR条件を組み合わせた集計を行う</li><li>加重平均を求める</li><li>作業列を使わずにスマートに計算できる</li></ul>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-sum/">SUM関数</a>は「合計」が得意です。ただ、「掛けてから合計」はできません。そんな場面で活躍するのがSUMPRODUCT関数です。</p>



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



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



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



<pre class="wp-block-code"><code>=SUMPRODUCT(配列1, [配列2], [配列3], ...)</code></pre>



<p class="wp-block-paragraph">カッコの中に、計算したい配列やセル範囲を指定します。</p>



<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>配列1</td><td>必須</td><td>計算の対象となる最初の配列またはセル範囲</td></tr><tr><td>配列2, 配列3, &#8230;</td><td>任意</td><td>掛け合わせたい追加の配列（最大255個まで）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数が1つだけの場合は、その範囲の合計を返します。<a href="https://mashukabu.com/excel-function-howto-use-sum/">SUM関数</a>と同じ動作ですね。引数を2つ以上指定すると、対応する位置の要素同士を掛け算してから合計します。</p>



<p class="wp-block-paragraph">ここで大事なポイントがひとつあります。<strong>すべての配列は同じサイズ（行数・列数）にする必要があります</strong>。サイズが違うと <code>#VALUE!</code> エラーになるので注意してください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>SUMPRODUCT関数は配列を扱う関数ですが、Ctrl+Shift+Enterでの確定は不要です。通常のEnterで確定できます。配列数式の入門としても使いやすい関数ですよ。</p></blockquote>



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



<p class="wp-block-paragraph">実際にSUMPRODUCT関数を使ってみましょう。よくある「単価 x 数量」の合計を求める例で説明します。</p>



<p class="wp-block-paragraph">次のような商品リストがあるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（商品名）</th><th>B列（単価）</th><th>C列（数量）</th></tr></thead><tbody><tr><td>1行目</td><td>商品名</td><td>単価</td><td>数量</td></tr><tr><td>2行目</td><td>ノート</td><td>200</td><td>50</td></tr><tr><td>3行目</td><td>ペン</td><td>150</td><td>80</td></tr><tr><td>4行目</td><td>消しゴム</td><td>100</td><td>30</td></tr><tr><td>5行目</td><td>ファイル</td><td>300</td><td>20</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">全商品の売上合計を出すには、次の数式を入力します。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B5, C2:C5)</code></pre>



<p class="wp-block-paragraph">この数式は内部で次のように計算しています。</p>



<pre class="wp-block-code"><code>(200 x 50) + (150 x 80) + (100 x 30) + (300 x 20)
= 10,000 + 12,000 + 3,000 + 6,000
= 31,000</code></pre>



<p class="wp-block-paragraph">結果は <strong>31,000</strong> です。</p>



<p class="wp-block-paragraph">もしSUMPRODUCT関数を使わない場合、D列に <code>=B2*C2</code> と作業列を作ります。さらに <code>=SUM(D2:D5)</code> で合計する2ステップが必要です。SUMPRODUCT関数なら作業列なしで1つの数式にまとまるのがうれしいですよね。</p>



<h3 class="wp-block-heading"><span id="toc6">「掛けてから合計」が1つの数式で済む仕組み</span></h3>



<p class="wp-block-paragraph">なぜ作業列が不要なのでしょうか。SUMPRODUCT関数は、内部で「配列」という見えない計算用のリストを使っているからです。</p>



<p class="wp-block-paragraph"><code>B2:B5</code> は <code>{200, 150, 100, 300}</code> という配列になります。同じように <code>C2:C5</code> は <code>{50, 80, 30, 20}</code> という配列です。SUMPRODUCT関数はこの2つを、対応する位置同士で掛け算します。</p>



<pre class="wp-block-code"><code>{200, 150, 100, 300} x {50, 80, 30, 20}
= {10000, 12000, 3000, 6000}   ← 掛け算の途中結果（配列）
→ 合計 31,000</code></pre>



<p class="wp-block-paragraph">この「掛け算の途中結果」が、本来なら作業列に表示される値です。SUMPRODUCT関数は、それをセルに書き出さず内部で処理してから合計します。だから作業列が要らないわけですね。</p>



<h2 class="wp-block-heading"><span id="toc7">SUMPRODUCT関数で条件付き集計をする</span></h2>



<p class="wp-block-paragraph">SUMPRODUCT関数の真価が発揮されるのは、条件付き集計の場面です。「特定の条件に合うデータだけを集計したい」ときに大活躍しますよ。</p>



<h3 class="wp-block-heading"><span id="toc8">1つの条件で集計する</span></h3>



<p class="wp-block-paragraph">先ほどの商品リストにカテゴリ列を追加したデータで考えてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（商品名）</th><th>B列（カテゴリ）</th><th>C列（単価）</th><th>D列（数量）</th></tr></thead><tbody><tr><td>1行目</td><td>商品名</td><td>カテゴリ</td><td>単価</td><td>数量</td></tr><tr><td>2行目</td><td>ノート</td><td>文房具</td><td>200</td><td>50</td></tr><tr><td>3行目</td><td>ペン</td><td>文房具</td><td>150</td><td>80</td></tr><tr><td>4行目</td><td>マウス</td><td>PC周辺機器</td><td>2,000</td><td>10</td></tr><tr><td>5行目</td><td>ファイル</td><td>文房具</td><td>300</td><td>20</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「文房具」だけの売上合計を出したい場合、次のように書きます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">ポイントは <code>(B2:B5="文房具")</code> の部分です。この条件判定は、各セルが「文房具」かどうかを <code>TRUE(1)</code> / <code>FALSE(0)</code> で返します。結果を掛け算に含めることで、条件に合わない行が自動的に0になる仕組みです。</p>



<pre class="wp-block-code"><code>(TRUE x 200 x 50) + (TRUE x 150 x 80) + (FALSE x 2000 x 10) + (TRUE x 300 x 20)
= (1 x 200 x 50) + (1 x 150 x 80) + (0 x 2000 x 10) + (1 x 300 x 20)
= 10,000 + 12,000 + 0 + 6,000
= 28,000</code></pre>



<p class="wp-block-paragraph">結果は <strong>28,000</strong> です。「マウス」はカテゴリがPC周辺機器なので、<code>FALSE(0)</code> が掛かって除外されました。</p>



<h3 class="wp-block-heading"><span id="toc9">複数条件（AND）で集計する</span></h3>



<p class="wp-block-paragraph">条件を2つ以上組み合わせることもできます。「文房具」で、かつ「単価が200以上」の売上合計を出す場合は次のとおりです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*(C2:C5&gt;=200)*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph">条件部分をカッコで囲んで <code>*</code> でつなぐだけ。条件をいくつ増やしても同じパターンで追加できます。</p>



<p class="wp-block-paragraph">計算過程を確認してみましょう。</p>



<pre class="wp-block-code"><code>文房具かつ単価200以上のデータ:
  ノート: 文房具=TRUE, 200&gt;=200=TRUE → 1 x 1 x 200 x 50 = 10,000
  ペン:   文房具=TRUE, 150&gt;=200=FALSE → 1 x 0 x 150 x 80 = 0
  マウス: PC周辺機器=FALSE             → 0 x ... = 0
  ファイル: 文房具=TRUE, 300&gt;=200=TRUE → 1 x 1 x 300 x 20 = 6,000

合計 = 10,000 + 0 + 0 + 6,000 = 16,000</code></pre>



<p class="wp-block-paragraph">結果は <strong>16,000</strong> です。</p>



<h3 class="wp-block-heading"><span id="toc10">OR条件で集計する</span></h3>



<p class="wp-block-paragraph">「文房具」<strong>または</strong>「PC周辺機器」のデータを集計したい場合、<code>+</code> を使ってOR条件を作れます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B5=&quot;文房具&quot;)+(B2:B5=&quot;PC周辺機器&quot;))*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph"><code>*</code> がAND条件、<code>+</code> がOR条件と覚えておくとわかりやすいですよ。</p>



<p class="wp-block-paragraph">ただし、OR条件のときはひとつ注意点があります。両方の条件に当てはまるデータがある場合、合計値が2倍になってしまいます。これを防ぐには、条件の結果を <code>>0</code> で判定する方法がおすすめです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(((B2:B5=&quot;文房具&quot;)+(B2:B5=&quot;PC周辺機器&quot;)&gt;0)*C2:C5*D2:D5)</code></pre>



<p class="wp-block-paragraph"><code>>0</code> を加えることで、条件の合計が1以上なら <code>TRUE(1)</code> に統一されます。重複カウントの心配がなくなりますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>OR条件は<a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>では直接書けません。OR条件が必要なときこそ、SUMPRODUCT関数の出番です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">知っておくと便利なダブルマイナス（&#8211;）</span></h2>



<p class="wp-block-paragraph">SUMPRODUCT関数の数式を調べていると、<code>--(条件)</code> のように先頭にマイナスが2つ並んだ書き方をよく見かけます。これは「ダブルマイナス」と呼ばれるテクニックです。</p>



<p class="wp-block-paragraph">役割は、条件式が返す <code>TRUE/FALSE</code> を <code>1/0</code> の数値に変換することです。</p>



<p class="wp-block-paragraph">なぜ変換が必要なのでしょうか。SUMPRODUCT関数は、<code>TRUE/FALSE</code> のままでは足し算してくれないからです。マイナスを2回掛けると、<code>TRUE</code> は <code>1</code>、<code>FALSE</code> は <code>0</code> になります。</p>



<pre class="wp-block-code"><code>--(B2:B5=&quot;文房具&quot;)
= {TRUE, TRUE, FALSE, TRUE} に -- を適用
= {1, 1, 0, 1}</code></pre>



<p class="wp-block-paragraph">たとえば、集計範囲を掛けずに「文房具の件数」だけを数えたい場合は次のとおりです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(--(B2:B5=&quot;文房具&quot;))</code></pre>



<p class="wp-block-paragraph">結果は <strong>3</strong> （ノート・ペン・ファイル）です。</p>



<p class="wp-block-paragraph"><code>--(条件)</code> と <code>(条件)*1</code> は同じ結果になります。どちらを使っても構いません。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*1)   ← --(条件) と同じ意味</code></pre>



<p class="wp-block-paragraph">条件式に集計範囲を掛けている数式（<code>(条件)*金額</code> など）では、掛け算の過程で自動的に <code>1/0</code> へ変換されます。そのため、ダブルマイナスは不要です。集計範囲を掛けない「件数カウント」のときだけ覚えておけば十分ですよ。</p>



<h2 class="wp-block-heading"><span id="toc12">実務シーン別のSUMPRODUCT関数活用例</span></h2>



<p class="wp-block-paragraph">ここからは、実務でそのまま使える集計パターンを紹介します。自分のシートに合わせてコピーして使ってみてください。</p>



<h3 class="wp-block-heading"><span id="toc13">月別×商品別のクロス集計をする</span></h3>



<p class="wp-block-paragraph">「4月のノートの売上だけ知りたい」のように、2つの条件で絞り込む場面はよくあります。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（月）</th><th>B列（商品）</th><th>C列（金額）</th></tr></thead><tbody><tr><td>1行目</td><td>月</td><td>商品</td><td>金額</td></tr><tr><td>2行目</td><td>4月</td><td>ノート</td><td>10,000</td></tr><tr><td>3行目</td><td>4月</td><td>ペン</td><td>8,000</td></tr><tr><td>4行目</td><td>5月</td><td>ノート</td><td>12,000</td></tr><tr><td>5行目</td><td>4月</td><td>ノート</td><td>6,000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「4月」かつ「ノート」の金額合計を出す数式はこうなります。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((A2:A5=&quot;4月&quot;)*(B2:B5=&quot;ノート&quot;)*C2:C5)</code></pre>



<p class="wp-block-paragraph">該当するのは2行目（10,000）と5行目（6,000）です。合計は <strong>16,000</strong> になります。月の見出しと商品の見出しを参照すれば、クロス集計表がそのまま作れますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">「○○を含む」の部分一致で集計する</span></h3>



<p class="wp-block-paragraph">「商品名に『ペン』を含むものだけ集計したい」。こんな部分一致の条件にも対応できます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(ISNUMBER(SEARCH(&quot;ペン&quot;, B2:B5))*C2:C5)</code></pre>



<p class="wp-block-paragraph">SEARCH関数（文字列の位置を探す関数）は、文字が見つかれば位置の数値を返します。見つからなければエラーになります。それをISNUMBER関数で <code>TRUE/FALSE</code> に変換し、見つかった行だけを集計する仕組みです。</p>



<p class="wp-block-paragraph">「ボールペン」「サインペン」のように、表記がバラついていてもまとめて集計できるのが便利です。</p>



<h3 class="wp-block-heading"><span id="toc15">チェック列（フラグ）で集計する</span></h3>



<p class="wp-block-paragraph">「対応済みの行だけ金額を集計したい」のように、印（フラグ）で絞り込むパターンも定番です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（項目）</th><th>B列（対応）</th><th>C列（金額）</th></tr></thead><tbody><tr><td>1行目</td><td>項目</td><td>対応</td><td>金額</td></tr><tr><td>2行目</td><td>A社</td><td>〇</td><td>50,000</td></tr><tr><td>3行目</td><td>B社</td><td>&nbsp;</td><td>30,000</td></tr><tr><td>4行目</td><td>C社</td><td>〇</td><td>20,000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「〇」が入った行だけの金額合計はこうなります。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B4=&quot;〇&quot;)*C2:C4)</code></pre>



<p class="wp-block-paragraph">結果は <strong>70,000</strong> （A社とC社）です。空白の行（B社）は条件に合わないので除外されます。チェックボックス運用のシートでそのまま使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">複数条件でカウントする</span></h3>



<p class="wp-block-paragraph">SUMPRODUCT関数は件数のカウントにも使えます。集計範囲を掛けずに、条件だけを掛け合わせるのがポイントです。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*(C2:C5&gt;=200))</code></pre>



<p class="wp-block-paragraph">この数式は「文房具かつ単価200以上」のデータを数えます。結果は <strong>2</strong> （ノートとファイル）です。</p>



<p class="wp-block-paragraph">単純な1条件のカウントなら<a href="https://mashukabu.com/excel-function-howto-use-countif/">COUNTIF関数</a>で十分です。ただ、複数条件をANDやORで柔軟に組み合わせたいときは、SUMPRODUCT関数のほうが書きやすいですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">SUMPRODUCT関数で加重平均を求める</span></h2>



<p class="wp-block-paragraph">「科目ごとに配点（重み）が違うテストの平均点を出したい」。こんなときは加重平均が必要です。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>A列（科目）</th><th>B列（点数）</th><th>C列（配点）</th></tr></thead><tbody><tr><td>1行目</td><td>科目</td><td>点数</td><td>配点</td></tr><tr><td>2行目</td><td>数学</td><td>80</td><td>3</td></tr><tr><td>3行目</td><td>英語</td><td>90</td><td>2</td></tr><tr><td>4行目</td><td>国語</td><td>70</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">加重平均の計算式はこうなります。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B4, C2:C4) / SUM(C2:C4)</code></pre>



<p class="wp-block-paragraph">計算の流れを確認しましょう。</p>



<pre class="wp-block-code"><code>分子: (80 x 3) + (90 x 2) + (70 x 1) = 240 + 180 + 70 = 490
分母: 3 + 2 + 1 = 6
加重平均: 490 / 6 ≒ 81.7</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-average/">AVERAGE関数</a>の単純平均は <code>(80+90+70)/3 = 80</code> です。一方、配点を考慮した加重平均は <strong>約81.7</strong> になります。配点の大きい数学の比重が高くなるわけですね。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数を使っていると遭遇しやすいエラーを整理しました。原因と対処法をセットで覚えておくと安心です。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code> エラー</td><td>配列のサイズ（行数・列数）が不一致</td><td>すべての配列を同じサイズに揃える</td></tr><tr><td>結果が0または小さすぎる</td><td>数値が文字列として格納されている</td><td>数値に変換、またはVALUE関数で変換</td></tr><tr><td>結果がおかしい</td><td>条件式のカッコ抜け</td><td>条件は必ず <code>(条件)</code> でカッコ囲み</td></tr><tr><td>OR条件で値が2倍</td><td>両条件を満たす行の重複カウント</td><td><code>((条件A)+(条件B)>0)</code> で正規化</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここから、特につまずきやすい3つを詳しく見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc19">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 指定した配列のサイズ（行数・列数）が一致していません。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(A1:A5, B1:B3)  ← 5行と3行で不一致</code></pre>



<p class="wp-block-paragraph"><strong>対処法</strong>: すべての配列を同じサイズに揃えましょう。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(A1:A5, B1:B5)  ← 両方5行に揃える</code></pre>



<p class="wp-block-paragraph">データを追加したあとは特に要注意です。範囲の行数がずれていないか確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc20">数値が入っているのに結果が0になる</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: セルの値が「数値に見える文字列」になっている可能性があります。CSVファイルからデータを取り込んだ場合によく起きるトラブルです。</p>



<p class="wp-block-paragraph">セルの左上に緑の三角マークが表示されていたら、文字列として格納されているサインです。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 対象セルを選択して「数値に変換」を実行しましょう。または、VALUE関数（文字列を数値に変換する関数）で明示的に変換してから使います。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(VALUE(A1:A5)*B1:B5)</code></pre>



<h3 class="wp-block-heading"><span id="toc21">条件式で結果がおかしい</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 条件部分のカッコが抜けています。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT(B2:B5=&quot;文房具&quot;*C2:C5*D2:D5)  ← カッコ忘れ</code></pre>



<p class="wp-block-paragraph"><strong>対処法</strong>: 条件部分は必ずカッコで囲みましょう。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((B2:B5=&quot;文房具&quot;)*C2:C5*D2:D5)  ← 正しい</code></pre>



<p class="wp-block-paragraph">カッコを忘れると、<code>"文房具"*C2:C5</code> が先に評価されてしまいます。<code>#VALUE!</code> エラーになることもあります。条件式には必ずカッコを付ける、と覚えておくと安心ですよ。</p>



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



<p class="wp-block-paragraph">SUMPRODUCT関数と似た機能を持つ関数との違いを整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>SUMIF関数</th><th>SUMIFS関数</th><th>SUMPRODUCT関数</th></tr></thead><tbody><tr><td>条件の数</td><td>1つ</td><td>複数（AND）</td><td>複数（AND + OR）</td></tr><tr><td>掛け算+合計</td><td>できない</td><td>できない</td><td>できる</td></tr><tr><td>OR条件</td><td>できない</td><td>直接はできない</td><td><code>+</code> で簡単に書ける</td></tr><tr><td>計算式を条件に使う</td><td>できない</td><td>できない</td><td>できる</td></tr><tr><td>書きやすさ</td><td>シンプル</td><td>わかりやすい</td><td>やや複雑</td></tr><tr><td>処理速度</td><td>速い</td><td>速い</td><td>やや遅い（大量データ時）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けの目安は次のとおりです。</p>



<ul class="wp-block-list"><li><strong>条件が1つだけ</strong> → <a href="https://mashukabu.com/excel-function-howto-use-sumif/">SUMIF関数</a>がシンプルでおすすめ</li><li><strong>複数条件（AND）</strong> → <a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>が直感的</li><li><strong>OR条件が必要</strong> → SUMPRODUCT関数の出番</li><li><strong>「掛けてから合計」が必要</strong> → SUMPRODUCT関数一択</li><li><strong>計算式を条件にしたい</strong> → SUMPRODUCT関数が最適</li></ul>



<p class="wp-block-paragraph">より詳しい比較は「<a href="https://mashukabu.com/excel-sumif-sumifs-sumproduct-comparison/">SUMIF・SUMIFS・SUMPRODUCTの使い分け｜条件付き集計を完全攻略</a>」で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc23">PRODUCT関数との違い</span></h2>



<p class="wp-block-paragraph">名前が似ているPRODUCT関数とも比べておきましょう。両者は役割がはっきり違います。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-product/">PRODUCT関数</a>は「指定した範囲の数値を全部掛け算する」関数です。一方、SUMPRODUCT関数は「複数の範囲を行ごとに掛けてから合計する」関数です。</p>



<p class="wp-block-paragraph">同じデータで結果を比べてみましょう。B列が <code>{2, 3, 4}</code>、C列が <code>{5, 6, 7}</code> の場合です。</p>



<pre class="wp-block-code"><code>PRODUCT(B2:B4)       = 2 x 3 x 4 = 24          ← 1つの範囲を全部掛ける
SUMPRODUCT(B2:B4, C2:C4) = (2x5)+(3x6)+(4x7) = 56   ← 行ごとに掛けて合計</code></pre>



<p class="wp-block-paragraph">PRODUCT関数は「掛け算だけ」、SUMPRODUCT関数は「行ごとに掛けてから合計」。この違いを押さえておけば、名前で混乱することはありませんよ。</p>



<h2 class="wp-block-heading"><span id="toc24">SUMPRODUCT関数のよくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc25">SUMPRODUCTは配列数式ですか？Ctrl+Shift+Enterは必要ですか？</span></h3>



<p class="wp-block-paragraph">SUMPRODUCT関数は内部で配列を扱いますが、Ctrl+Shift+Enterでの確定は不要です。通常のEnterで確定できます。配列数式に苦手意識がある人でも使いやすい関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc26">「&#8211;」（ダブルマイナス）は必ず必要ですか？</span></h3>



<p class="wp-block-paragraph">集計範囲を掛けている数式では不要です。掛け算の過程で <code>TRUE/FALSE</code> が自動的に <code>1/0</code> に変わるからです。ダブルマイナスが必要なのは、集計範囲を掛けない「件数カウント」のときだけです。</p>



<h3 class="wp-block-heading"><span id="toc27">Googleスプレッドシートでも使えますか？</span></h3>



<p class="wp-block-paragraph">使えます。SUMPRODUCT関数は同じ名前・同じ構文でGoogleスプレッドシートでも利用できます。Excelで作った数式をそのままコピーしても動きますよ。</p>



<h3 class="wp-block-heading"><span id="toc28">大量データでSUMPRODUCTが重いときはどうすればいいですか？</span></h3>



<p class="wp-block-paragraph">範囲を必要最小限に絞るのが基本です。<code>A:A</code> のような列全体の参照は避け、<code>A2:A1000</code> のように実データの範囲を指定しましょう。単純なAND条件だけなら、処理が速い<a href="https://mashukabu.com/excel-function-howto-use-sumifs/">SUMIFS関数</a>に置き換えるのも有効です。</p>



<h3 class="wp-block-heading"><span id="toc29">空白セルがあるとエラーになりますか？</span></h3>



<p class="wp-block-paragraph">エラーにはなりません。SUMPRODUCT関数は、配列内の文字列や空白を <code>0</code> として扱います。ただし掛け算の途中で意図せず0になることがあるので、計算結果が想定と合わないときは空白セルの有無を確認してみてください。</p>



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



<p class="wp-block-paragraph">この記事では、ExcelのSUMPRODUCT関数の使い方を基本から応用まで解説しました。</p>



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



<ul class="wp-block-list"><li>SUMPRODUCT関数は「掛け算してから合計」を1つの数式で実行できる</li><li>条件付き集計は <code>(条件式)*集計範囲</code> の形で書く</li><li>複数条件（AND）は <code>(条件1)<em>(条件2)</code> のように <code></em></code> でつなぐ</li><li>OR条件は <code>(条件1)+(条件2)</code> のように <code>+</code> でつなぐ（<code>>0</code> で重複防止）</li><li>件数カウントは <code>--(条件)</code> または <code>(条件)*1</code> で <code>1/0</code> に変換する</li><li>加重平均は <code>SUMPRODUCT(値, 重み) / SUM(重み)</code> で求められる</li><li>配列のサイズは必ず揃える（<code>#VALUE!</code> エラーの原因になる）</li><li>単純な条件合計にはSUMIF・SUMIFS、柔軟な条件合計にはSUMPRODUCTと使い分けよう</li></ul>



<p class="wp-block-paragraph">最初はちょっと取っつきにくく感じるかもしれません。でも <code>(条件)*範囲</code> の型さえ覚えてしまえば、作業列を減らせてシートがすっきりしますよ。ぜひ実務で試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-sumproduct/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
