<?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/%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 26 May 2026 10:49:33 +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>スプレッドシートのSUBTOTAL関数の使い方｜フィルタ対応の集計を1関数で</title>
		<link>https://mashukabu.com/spreadsheet-subtotal-function/</link>
					<comments>https://mashukabu.com/spreadsheet-subtotal-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 11:25:29 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[AVERAGE]]></category>
		<category><![CDATA[SUBTOTAL]]></category>
		<category><![CDATA[SUM]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[フィルタ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4079</guid>

					<description><![CDATA[GoogleスプレッドシートのSUBTOTAL関数の使い方を初心者向けに解説。機能番号1-11と101-111の違い、フィルタで絞り込んだ合計・平均・件数の求め方、小計行を含む総合計、SUM/SUMIFとの使い分けまで実務パターン6つと一緒に紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「スプレッドシートのフィルタで絞り込んだのに、合計値が全データのままで困る&#8230;」そんな経験はありませんか？</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-sum-function/">SUM関数</a>で合計を出していると、フィルタで行を隠しても合計は変わりません。表示されているデータだけの合計がほしいのに、もどかしいですよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのがスプレッドシートのSUBTOTAL関数です。フィルタで非表示にした行を自動的に除外して、合計・平均・件数など11種類の集計を1つの関数でまかなえます。</p>



<p class="wp-block-paragraph">この記事では機能番号の一覧から、実務で本当に使う活用パターン6つ、SUMやSUMIFとの使い分け、つまずきやすいFAQまで一気に紹介します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのSUBTOTAL関数とは？</a></li><li><a href="#toc2" tabindex="0">SUBTOTAL関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li><li><a href="#toc5" tabindex="0">機能番号の一覧（1〜11 / 101〜111）</a></li></ol></li><li><a href="#toc6" tabindex="0">スプレッドシートのSUBTOTAL関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">フィルタで絞り込んだデータの合計を求める</a></li><li><a href="#toc8" tabindex="0">平均や件数を求める</a></li><li><a href="#toc9" tabindex="0">最大値・最小値も同じ書き方でOK</a></li></ol></li><li><a href="#toc10" tabindex="0">機能番号1〜11と101〜111の違い</a><ol><li><a href="#toc11" tabindex="0">動作の違いを具体例で確認する</a></li><li><a href="#toc12" tabindex="0">どちらを使うべき？</a></li></ol></li><li><a href="#toc13" tabindex="0">SUBTOTAL関数の実務活用パターン6選</a><ol><li><a href="#toc14" tabindex="0">パターン1: フィルタ付き売上ダッシュボード</a></li><li><a href="#toc15" tabindex="0">パターン2: 小計行がある表での総合計（二重集計の防止）</a></li><li><a href="#toc16" tabindex="0">パターン3: フィルタ後の連番（行番号の振り直し）</a></li><li><a href="#toc17" tabindex="0">パターン4: SUMIFと組み合わせて固定集計＋フィルタ集計を1画面に</a></li><li><a href="#toc18" tabindex="0">パターン5: 条件付き書式で「表示中の行だけ」を色付け</a></li><li><a href="#toc19" tabindex="0">パターン6: SUBTOTAL同士の組み合わせで「表示行の加重平均」</a></li></ol></li><li><a href="#toc20" tabindex="0">SUBTOTAL関数でよくあるエラーと対処法</a><ol><li><a href="#toc21" tabindex="0">機能番号の指定ミス（#VALUE!）</a></li><li><a href="#toc22" tabindex="0">フィルタしても合計値が変わらない</a></li><li><a href="#toc23" tabindex="0">平均で #DIV/0! が出る</a></li><li><a href="#toc24" tabindex="0">数値が文字列型になっている</a></li></ol></li><li><a href="#toc25" tabindex="0">似た関数との違い・使い分け</a><ol><li><a href="#toc26" tabindex="0">SUM関数との使い分け</a></li><li><a href="#toc27" tabindex="0">SUMIF・SUMIFSとの使い分け</a></li><li><a href="#toc28" tabindex="0">QUERY関数との使い分け</a></li><li><a href="#toc29" tabindex="0">FILTER関数との組み合わせ</a></li></ol></li><li><a href="#toc30" tabindex="0">ExcelのSUBTOTAL関数との違い</a><ol><li><a href="#toc31" tabindex="0">Excelの「AGGREGATE関数」に注意</a></li><li><a href="#toc32" tabindex="0">引数上限の違い</a></li></ol></li><li><a href="#toc33" tabindex="0">よくある質問（FAQ）</a><ol><li><a href="#toc34" tabindex="0">Q. SUBTOTALで条件指定（カテゴリ別の合計）はできますか？</a></li><li><a href="#toc35" tabindex="0">Q. SUBTOTAL(9, &#8230;) と SUBTOTAL(109, &#8230;) はどちらが速いですか？</a></li><li><a href="#toc36" tabindex="0">Q. フィルタを解除しても合計が変わってしまうのはなぜ？</a></li><li><a href="#toc37" tabindex="0">Q. SUBTOTALの結果をさらに別のSUBTOTALで使えますか？</a></li><li><a href="#toc38" tabindex="0">Q. ARRAYFORMULAでSUBTOTALを使えますか？</a></li><li><a href="#toc39" tabindex="0">Q. 既存のSUM関数をSUBTOTALに置き換えても安全ですか？</a></li></ol></li><li><a href="#toc40" tabindex="0">SUBTOTALのネスト除外を使った多段階集計</a><ol><li><a href="#toc41" tabindex="0">3階層の集計表でも二重カウントなし</a></li><li><a href="#toc42" tabindex="0">フィルタと多段階集計の組み合わせ</a></li></ol></li><li><a href="#toc43" tabindex="0">SUBTOTAL vs AGGREGATE：スプレッドシートでの代替手段</a><ol><li><a href="#toc44" tabindex="0">AGGREGATEが持つSUBTOTALにない機能</a></li><li><a href="#toc45" tabindex="0">スプレッドシートでのエラー無視集計</a></li></ol></li><li><a href="#toc46" tabindex="0">SUBTOTAL関数 vs ピボットテーブル：どちらを選ぶ？</a><ol><li><a href="#toc47" tabindex="0">比較表</a></li><li><a href="#toc48" tabindex="0">SUBTOTALを選ぶべき場面</a></li><li><a href="#toc49" tabindex="0">ピボットテーブルを選ぶべき場面</a></li></ol></li><li><a href="#toc50" tabindex="0">まとめ｜SUBTOTAL関数でフィルタ対応の集計を1関数に集約</a><ol><li><a href="#toc51" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">スプレッドシートのSUBTOTAL関数（読み方: サブトータル関数）は、<strong>フィルタで非表示にした行を除外して集計できる関数</strong>です。</p>



<p class="wp-block-paragraph">名前の「SUBTOTAL」は「小計」を意味します。「機能番号」を切り替えるだけで合計・平均・件数・最大値・最小値など11種類の集計を1つの関数で扱えます。</p>



<p class="wp-block-paragraph">最大の特長は<strong>フィルタとの連動</strong>です。通常の<a href="https://mashukabu.com/spreadsheet-sum-function/">SUM関数</a>はフィルタで行を隠しても全行を合計します。SUBTOTAL関数なら表示されている行だけを集計してくれますよ。</p>



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



<ul class="wp-block-list"><li>フィルタで絞り込んだデータだけを合計・平均・カウントする</li><li>機能番号の切り替えで11種類の集計を使い分ける</li><li>範囲内の他のSUBTOTAL関数を無視する（小計と総合計の二重カウントを防ぐ）</li><li>手動で非表示にした行の扱いも機能番号で制御できる</li></ul>



<p class="wp-block-paragraph">「フィルタ付きの集計表」や「部署別小計＋総合計の集計表」を作るなら、まず最初に覚えたい関数です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>SUBTOTAL関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も高く、ファイルのやり取りでも安心ですよ。Excelとの細かい差は後半の「Excelとの違い」で整理しています。</p></blockquote>



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



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



<pre class="wp-block-code"><code>=SUBTOTAL(機能番号, 範囲1, [範囲2], ...)</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>機能番号</td><td>必須</td><td>集計方法を表す番号（1〜11 または 101〜111）</td></tr><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">ポイントは「機能番号」です。この番号で合計・平均・件数などの集計方法を指定します。</p>



<h3 class="wp-block-heading"><span id="toc5">機能番号の一覧（1〜11 / 101〜111）</span></h3>



<p class="wp-block-paragraph">SUBTOTAL関数の機能番号は2つのグループに分かれます。1〜11と101〜111で「対応する集計方法」は同じで、違いは「手動で非表示にした行を含めるかどうか」だけです。</p>



<figure class="wp-block-table"><table><thead><tr><th>機能番号（含む）</th><th>機能番号（除外）</th><th>集計方法</th><th>対応する関数</th></tr></thead><tbody><tr><td>1</td><td>101</td><td>平均</td><td><a href="https://mashukabu.com/spreadsheet-average-function/">AVERAGE</a></td></tr><tr><td>2</td><td>102</td><td>数値の個数</td><td><a href="https://mashukabu.com/spreadsheet-count-function/">COUNT</a></td></tr><tr><td>3</td><td>103</td><td>空白以外の個数</td><td><a href="https://mashukabu.com/spreadsheet-counta-function/">COUNTA</a></td></tr><tr><td>4</td><td>104</td><td>最大値</td><td><a href="https://mashukabu.com/spreadsheet-max-function/">MAX</a></td></tr><tr><td>5</td><td>105</td><td>最小値</td><td><a href="https://mashukabu.com/spreadsheet-min-function/">MIN</a></td></tr><tr><td>6</td><td>106</td><td>積</td><td><a href="https://mashukabu.com/spreadsheet-product-function/">PRODUCT</a></td></tr><tr><td>7</td><td>107</td><td>標本標準偏差（手元データをサンプルとみなす偏差）</td><td>STDEV</td></tr><tr><td>8</td><td>108</td><td>母標準偏差（手元データが母集団とみなす偏差）</td><td>STDEVP</td></tr><tr><td>9</td><td>109</td><td>合計</td><td><a href="https://mashukabu.com/spreadsheet-sum-function/">SUM</a></td></tr><tr><td>10</td><td>110</td><td>標本分散</td><td>VAR</td></tr><tr><td>11</td><td>111</td><td>母分散</td><td>VARP</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">よく使うのは <strong>9（合計）・1（平均）・2（件数）・4（最大値）・5（最小値）</strong> の5つです。まずはこの5つを覚えておけば、ほとんどの集計表を作れますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>「合計は9」と覚えにくい場合は「<strong>S</strong>UMの<strong>S</strong>は9番目のアルファベット」と覚えると忘れにくいです。「平均は1（先頭）・件数は2（並んだ2番目）」もリスト順なので覚えやすいですよ。</p></blockquote>



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



<h3 class="wp-block-heading"><span id="toc7">フィルタで絞り込んだデータの合計を求める</span></h3>



<p class="wp-block-paragraph">実際にSUBTOTAL関数を使ってみましょう。</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>



<figure class="wp-block-table"><table><thead><tr><th>行</th><th>A列（商品）</th><th>B列（カテゴリ）</th><th>C列（売上）</th></tr></thead><tbody><tr><td>2</td><td>ボールペン</td><td>文房具</td><td>5,000</td></tr><tr><td>3</td><td>お菓子</td><td>食品</td><td>8,000</td></tr><tr><td>4</td><td>ノート</td><td>文房具</td><td>3,000</td></tr><tr><td>5</td><td>飲料</td><td>食品</td><td>12,000</td></tr><tr><td>6</td><td>クリップ</td><td>文房具</td><td>2,000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">全データの合計を求めるには、次の数式を入力します。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(9, C2:C6)</code></pre>



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



<p class="wp-block-paragraph">機能番号 <code>9</code> は「合計（SUM）」です。結果は <strong>30,000</strong> です（5,000+8,000+3,000+12,000+2,000）。</p>



<p class="wp-block-paragraph">ここでB列のフィルタで「文房具」だけに絞り込んでみましょう。SUM関数なら値は変わりませんが、SUBTOTAL関数は自動的に再計算されます。</p>



<pre class="wp-block-code"><code>表示後の結果: 10,000（5,000 + 3,000 + 2,000）</code></pre>



<p class="wp-block-paragraph">フィルタに連動して合計値が変わるのがSUBTOTAL関数の強みです。フィルタを解除すれば、また30,000に戻ります。</p>



<h3 class="wp-block-heading"><span id="toc8">平均や件数を求める</span></h3>



<p class="wp-block-paragraph">機能番号を変えるだけで、同じ範囲を別の集計方法に切り替えられます。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(1, C2:C6)</code></pre>



<p class="wp-block-paragraph">機能番号 <code>1</code> は「平均（AVERAGE）」です。全データの平均は <strong>6,000</strong> です。フィルタで「文房具」に絞ると約 <strong>3,333</strong>（10,000÷3）になります。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(2, C2:C6)</code></pre>



<p class="wp-block-paragraph">機能番号 <code>2</code> は「件数（COUNT）」です。全データは <strong>5件</strong>、「文房具」だけなら <strong>3件</strong> になります。</p>



<p class="wp-block-paragraph">このように数式の機能番号を1つ変えるだけで、さまざまな集計に対応できますよ。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-subtotal-function_03_result_subtotal-functions.png" alt="03 result subtotal functions" /></figure>



<h3 class="wp-block-heading"><span id="toc9">最大値・最小値も同じ書き方でOK</span></h3>



<p class="wp-block-paragraph">合計や平均と同じ感覚で、最大値・最小値も取れます。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(4, C2:C6)   → 12,000（全データの最大値）
=SUBTOTAL(5, C2:C6)   → 2,000（全データの最小値）</code></pre>



<p class="wp-block-paragraph">文房具に絞り込んだあとは、最大値が5,000・最小値が2,000に変わります。集計表の上部に「合計・平均・件数・最大・最小」の5行を並べておくと、フィルタ操作だけでミニダッシュボードが完成しますよ。</p>



<h2 class="wp-block-heading"><span id="toc10">機能番号1〜11と101〜111の違い</span></h2>



<p class="wp-block-paragraph">SUBTOTAL関数には機能番号が2セットあります。どちらもフィルタで非表示にした行は除外しますが、<strong>手動で非表示にした行の扱い</strong>が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>非表示の方法</th><th>1〜11</th><th>101〜111</th></tr></thead><tbody><tr><td>フィルタで非表示</td><td>除外する</td><td>除外する</td></tr><tr><td>手動で行を非表示（右クリック→行を非表示）</td><td><strong>含める</strong></td><td><strong>除外する</strong></td></tr><tr><td>グループ化で折りたたまれた行</td><td>含める</td><td>除外する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">つまり、1〜11は「フィルタ非表示」だけを除外します。101〜111は「フィルタ非表示」に加えて「手動非表示・グループ化での折りたたみ」も除外します。</p>



<h3 class="wp-block-heading"><span id="toc11">動作の違いを具体例で確認する</span></h3>



<p class="wp-block-paragraph">5行の売上データ（5,000 / 8,000 / 3,000 / 12,000 / 2,000）で、3行目（3,000）と5行目（2,000）を手動で「行を非表示」にした場合を考えてみましょう。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(9,  C2:C6)   → 30,000（手動非表示も合計する）
=SUBTOTAL(109, C2:C6)  → 25,000（手動非表示の3,000+2,000を除外）</code></pre>



<p class="wp-block-paragraph">両方ともフィルタを使えば同じように表示行だけを合計しますが、手動非表示の有無で結果が変わるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc12">どちらを使うべき？</span></h3>



<p class="wp-block-paragraph">迷ったら <strong>101〜111</strong> を使うのがおすすめです。</p>



<p class="wp-block-paragraph">理由はシンプルで、「画面に表示されている行だけを集計したい」という直感に一番近い動きをするからです。フィルタを解除した状態でも、手動で隠した行は集計から外せます。</p>



<p class="wp-block-paragraph">ただし、「内訳行は非表示にしているけれど集計には含めたい」というケースでは1〜11を使います。たとえば「明細を畳んでサマリーだけ見せたいが、合計値は明細を含めた金額にしたい」というレポートが該当しますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>Googleスプレッドシートでは「フィルタビュー」を使うことが多いので、1〜11と101〜111の差が実際に出るのは「行の非表示」「グループ化」機能を併用するときだけです。フィルタだけなら動作は同じになります。</p></blockquote>



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



<p class="wp-block-paragraph">基本がわかったところで、仕事でよく使うパターンを6つ紹介します。コピペで使えるようにサンプル数式付きです。</p>



<h3 class="wp-block-heading"><span id="toc14">パターン1: フィルタ付き売上ダッシュボード</span></h3>



<p class="wp-block-paragraph">フィルタで部門や月を切り替えながら、合計・平均・件数・最大・最小を1画面で確認する集計表です。</p>



<pre class="wp-block-code"><code>合計:   =SUBTOTAL(109, D2:D1000)
平均:   =SUBTOTAL(101, D2:D1000)
件数:   =SUBTOTAL(102, D2:D1000)
最大値: =SUBTOTAL(104, D2:D1000)
最小値: =SUBTOTAL(105, D2:D1000)</code></pre>



<p class="wp-block-paragraph">5つの数式を表頭に並べるだけで、フィルタを切り替えるたびに数字がリアルタイムに更新されます。ピボットテーブルを使うほどではないけれど、ちょっとした集計を見たいときに便利ですよ。</p>



<p class="wp-block-paragraph">範囲はD1000など余裕を持って広めに取っておくと、データが追加されても数式を直す必要がありません。</p>



<h3 class="wp-block-heading"><span id="toc15">パターン2: 小計行がある表での総合計（二重集計の防止）</span></h3>



<p class="wp-block-paragraph">部門ごとに小計行があるデータの場合、SUM関数で総合計を出すと小計が二重カウントされます。</p>



<pre class="wp-block-code"><code>| 営業部       | 100 |
| 営業部       | 200 |
| 営業部 小計  | =SUBTOTAL(9, C2:C3)  → 300 |
| 総務部       | 150 |
| 総務部 小計  | =SUBTOTAL(9, C5:C5)  → 150 |
| 総合計       | =SUBTOTAL(9, C2:C6)  → 450（正しい） |</code></pre>



<p class="wp-block-paragraph">SUBTOTAL関数は範囲内の他のSUBTOTAL関数を自動的に無視します。そのため、小計行を含む範囲で総合計を出しても二重カウントされません。</p>



<p class="wp-block-paragraph">同じことをSUM関数でやると、<code>300 + 200 + 100 + 150 + 150 = 900</code> と小計が重複して正しい値になりません。請求書や経費精算書のような「小計＋総合計」が必要な書類では、SUBTOTAL一択ですよ。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン3: フィルタ後の連番（行番号の振り直し）</span></h3>



<p class="wp-block-paragraph">フィルタで絞り込んでも連番が崩れないようにする定番テクニックです。COUNTA（機能番号3）を使います。</p>



<pre class="wp-block-code"><code>（A2セル以降に入力）
=SUBTOTAL(3, $B$2:B2)</code></pre>



<p class="wp-block-paragraph"><code>$B$2:B2</code> のように、開始セルを絶対参照・終了セルを相対参照にするのがコツです。下にコピーすると <code>$B$2:B3</code> <code>$B$2:B4</code> &#8230; と範囲が広がります。フィルタで途中の行が隠れると、その行はカウントされず、表示中の行だけに1から番号が付き直されますよ。</p>



<p class="wp-block-paragraph">報告書の「No.」列をフィルタ対応にしたいときに役立つテクニックです。</p>



<h3 class="wp-block-heading"><span id="toc17">パターン4: SUMIFと組み合わせて固定集計＋フィルタ集計を1画面に</span></h3>



<p class="wp-block-paragraph">SUBTOTAL関数自体は条件指定に対応していないため、条件付き集計は<a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF関数</a>・<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>を使い、「フィルタ後の総合計だけ」をSUBTOTALに任せる役割分担がおすすめです。</p>



<pre class="wp-block-code"><code>文房具カテゴリの合計（フィルタ無視・固定）: =SUMIF(B2:B6, &quot;文房具&quot;, C2:C6)
フィルタ後の総合計（フィルタ連動）:           =SUBTOTAL(9, C2:C6)</code></pre>



<p class="wp-block-paragraph">集計表の上段にSUMIFで主要カテゴリを並べ、最下段でSUBTOTALを使ってフィルタ後の数字を出す。この組み合わせがダッシュボードの定型パターンですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">パターン5: 条件付き書式で「表示中の行だけ」を色付け</span></h3>



<p class="wp-block-paragraph">SUBTOTALは「集計関数」ですが、条件付き書式の判定にも使えます。</p>



<pre class="wp-block-code"><code>条件付き書式のカスタム数式:
=SUBTOTAL(103, INDIRECT(&quot;B&quot; &amp; ROW())) &gt; 0</code></pre>



<p class="wp-block-paragraph"><code>INDIRECT("B" & ROW())</code> で「自分の行のB列」を1セルだけの範囲として渡し、SUBTOTALのCOUNTA（機能番号103）でカウントします。フィルタで非表示の行はSUBTOTALが0を返すので、表示中の行だけに書式が適用されます。</p>



<p class="wp-block-paragraph">「フィルタ中の行だけ色を付けてスクショを撮りたい」「印刷時に隠れた行が色付きで残らないようにしたい」というときに便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc19">パターン6: SUBTOTAL同士の組み合わせで「表示行の加重平均」</span></h3>



<p class="wp-block-paragraph">販売単価と数量があるデータで、フィルタ後の加重平均単価を求めたい場合の例です。</p>



<pre class="wp-block-code"><code>表示行の売上合計:    =SUBTOTAL(9, D2:D100)
表示行の数量合計:    =SUBTOTAL(9, E2:E100)
表示行の加重平均単価: =SUBTOTAL(9, D2:D100) / SUBTOTAL(9, E2:E100)</code></pre>



<p class="wp-block-paragraph">SUBTOTAL自体に「加重平均」はないので、「売上の合計」÷「数量の合計」で求めます。両方ともSUBTOTALを使えば、フィルタを切り替えるたびに加重平均が再計算されますよ。</p>



<p class="wp-block-paragraph">単純なAVERAGE（機能番号1）だと「単価の単純平均」になってしまうので、商品ごとの販売数量が違う場合は数式を変える必要があります。</p>



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



<p class="wp-block-paragraph">SUBTOTAL関数で困ったときの原因と対策をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー/症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>機能番号が範囲外（0、12〜100、112〜）</td><td>1〜11 または 101〜111 を指定する</td></tr><tr><td><code>#DIV/0!</code></td><td>平均（1/101）で対象データが0件</td><td>IFERRORで「-」やゼロを表示する</td></tr><tr><td>結果が0</td><td>範囲に数値がない（文字列型の数字）</td><td>VALUE関数で数値に変換</td></tr><tr><td>フィルタしても値が変わらない</td><td>SUM関数を使っている</td><td>SUBTOTAL関数に置き換える</td></tr><tr><td>小数点以下が出る</td><td>機能番号1（AVERAGE）の仕様</td><td><a href="https://mashukabu.com/spreadsheet-round-function/">ROUND関数</a>で丸める</td></tr><tr><td>手動非表示が反映されない</td><td>機能番号1〜11を使っている</td><td>101〜111に変える</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc21">機能番号の指定ミス（#VALUE!）</span></h3>



<p class="wp-block-paragraph">最も多いミスが機能番号の入力間違いです。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(0, C2:C10)   → #VALUE!
=SUBTOTAL(12, C2:C10)  → #VALUE!
=SUBTOTAL(100, C2:C10) → #VALUE!</code></pre>



<p class="wp-block-paragraph">機能番号は1〜11または101〜111です。0やそれ以外の数値を指定すると <code>#VALUE!</code> エラーになります。</p>



<p class="wp-block-paragraph">合計なら <code>9</code> または <code>109</code>、件数なら <code>2</code> または <code>102</code> と覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">フィルタしても合計値が変わらない</span></h3>



<p class="wp-block-paragraph">SUBTOTAL関数ではなくSUM関数を使っていないか確認してください。SUM関数はフィルタの状態に関係なく全行を合計します。</p>



<pre class="wp-block-code"><code>=SUM(C2:C10)         → フィルタに連動しない
=SUBTOTAL(9, C2:C10) → フィルタに連動する</code></pre>



<p class="wp-block-paragraph">既存の集計表をフィルタ対応にしたい場合は、SUM関数をSUBTOTAL関数に置き換えるだけで対応できますよ。Ctrl+H（置換）で <code>SUM(</code> → <code>SUBTOTAL(9,</code> に一括置換するのが速いです。</p>



<h3 class="wp-block-heading"><span id="toc23">平均で #DIV/0! が出る</span></h3>



<p class="wp-block-paragraph">フィルタで全行が隠れた状態でAVERAGE（機能番号1/101）を使うと、対象データが0件になり <code>#DIV/0!</code> エラーになります。</p>



<pre class="wp-block-code"><code>=IFERROR(SUBTOTAL(101, C2:C100), &quot;-&quot;)</code></pre>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR関数</a>でラップして「-」やゼロを返すようにすると、ダッシュボードが見苦しくなりませんよ。</p>



<h3 class="wp-block-heading"><span id="toc24">数値が文字列型になっている</span></h3>



<p class="wp-block-paragraph">CSVインポート後など、見た目は数字でも内部的に文字列になっているケースがあります。SUBTOTALは文字列型の数字を集計しないため、結果が0になります。</p>



<p class="wp-block-paragraph">セルの左上に緑の三角マークが出ていれば文字列型のサインです。範囲を選択して「データ」→「数値を変換」、または <code>=VALUE(A2)</code> で別列に数値化してから集計してください。</p>



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



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



<figure class="wp-block-table"><table><thead><tr><th>関数名</th><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><td>合計のみ</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF</a></td><td>しない</td><td>1条件</td><td>合計のみ</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS</a></td><td>しない</td><td>複数条件</td><td>合計のみ</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-sumproduct-function/">SUMPRODUCT</a></td><td>しない</td><td>配列条件</td><td>合計（積和）</td></tr><tr><td><a href="https://mashukabu.com/spreadsheet-query-function/">QUERY</a></td><td>参照範囲次第</td><td>SQLライクに自由</td><td>集計＋抽出</td></tr><tr><td>SUBTOTAL</td><td><strong>する</strong></td><td>できない</td><td>11種類</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">SUM関数との使い分け</span></h3>



<p class="wp-block-paragraph">最も重要な違いは「フィルタ連動」の有無です。</p>



<ul class="wp-block-list"><li>フィルタを使わない集計 → <a href="https://mashukabu.com/spreadsheet-sum-function/">SUM関数</a>がシンプルで最適</li><li>フィルタで絞り込みながら集計 → SUBTOTAL関数が必須</li><li>小計と総合計がある表 → SUBTOTAL関数で二重集計を防止</li></ul>



<p class="wp-block-paragraph">「フィルタを使うならSUBTOTAL、使わないならSUM」と覚えるのが一番シンプルです。</p>



<h3 class="wp-block-heading"><span id="toc27">SUMIF・SUMIFSとの使い分け</span></h3>



<p class="wp-block-paragraph">条件指定で集計したいなら<a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF</a>・<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS</a>です。SUBTOTALは条件を直接指定できません。</p>



<p class="wp-block-paragraph">判断基準はシンプルです。「画面のフィルタ操作で結果を切り替えたい」ならSUBTOTAL、「セル上の数式で条件を固定したい（メールに貼る集計レポートなど）」ならSUMIF/SUMIFSを選びます。</p>



<p class="wp-block-paragraph">両方とも使い分けて、フィルタダッシュボード（SUBTOTAL）と固定集計表（SUMIF）を1シートに同居させることもよくありますよ。</p>



<h3 class="wp-block-heading"><span id="toc28">QUERY関数との使い分け</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-query-function/">QUERY関数</a>はSQLライクな構文で「抽出＋集計」が一発でできる強力な関数です。</p>



<ul class="wp-block-list"><li>「フィルタを使いつつ既存の表の上に集計だけ表示したい」→ SUBTOTAL</li><li>「別領域に集計表そのものを生成したい」→ QUERY</li></ul>



<p class="wp-block-paragraph">QUERYは「結果テーブルを別に作る」、SUBTOTALは「既存テーブルの上に数値を出す」と役割が違います。レポートのレイアウトに合わせて選んでください。</p>



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



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-filter-function/">FILTER関数</a>で抽出した結果をSUBTOTAL関数で集計するパターンもあります。</p>



<pre class="wp-block-code"><code>=SUBTOTAL(9, FILTER(C2:C100, B2:B100=&quot;文房具&quot;))</code></pre>



<p class="wp-block-paragraph">ただし、この使い方では実はSUM関数でも同じ結果が得られます。FILTER関数が先にデータを絞り込んでいるためです。</p>



<pre class="wp-block-code"><code>=SUM(FILTER(C2:C100, B2:B100=&quot;文房具&quot;))</code></pre>



<p class="wp-block-paragraph">SUBTOTAL関数が真価を発揮するのは「シート上のフィルタ機能」との連動です。数式内でデータを絞り込む場合はSUM関数やSUMIF関数のほうがシンプルですよ。</p>



<h2 class="wp-block-heading"><span id="toc30">ExcelのSUBTOTAL関数との違い</span></h2>



<p class="wp-block-paragraph">SUBTOTAL関数の動作はExcelとほぼ同じです。同じファイルをExcelとGoogleスプレッドシートで開いても、SUBTOTALに関しては結果がほぼ完全に一致します。</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>1〜11、101〜111</td><td>1〜11、101〜111</td></tr><tr><td>引数の上限</td><td>最大30個</td><td>最大254個</td></tr><tr><td>二重集計回避</td><td>同じ</td><td>同じ</td></tr><tr><td>フィルタ連動</td><td>同じ</td><td>同じ</td></tr><tr><td>上位互換関数</td><td>なし</td><td>AGGREGATE関数あり</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc31">Excelの「AGGREGATE関数」に注意</span></h3>



<p class="wp-block-paragraph">Excelには上位互換である <code>AGGREGATE関数</code> があり、エラー値も無視できます。GoogleスプレッドシートにはAGGREGATEがないため、エラーセルを含む範囲で集計したい場合は<a href="https://mashukabu.com/spreadsheet-iferror-function/">IFERROR</a>で事前にエラーを潰すか、別列に整形して対処してください。</p>



<p class="wp-block-paragraph">たとえばC列にエラーが混在する場合、別列D列に <code>=IFERROR(C2, 0)</code> で整形してから <code>=SUBTOTAL(9, D2:D100)</code> で集計するのが定石です。</p>



<h3 class="wp-block-heading"><span id="toc32">引数上限の違い</span></h3>



<p class="wp-block-paragraph">引数の上限に違い（30 vs 254）はありますが、実務で30個の範囲を1つの数式に渡すことはまずありません。ExcelのSUBTOTAL関数と同じ書き方で使えますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc34">Q. SUBTOTALで条件指定（カテゴリ別の合計）はできますか？</span></h3>



<p class="wp-block-paragraph">A. できません。SUBTOTAL関数自体は条件指定に対応していないので、カテゴリ別の合計を出したいなら<a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF関数</a>・<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS関数</a>を使ってください。「画面のフィルタで絞り込んだ全体の合計」はSUBTOTAL、「特定カテゴリの合計」はSUMIFという役割分担になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc35">Q. SUBTOTAL(9, &#8230;) と SUBTOTAL(109, &#8230;) はどちらが速いですか？</span></h3>



<p class="wp-block-paragraph">A. 計算速度はほぼ同じです。違いは「手動で非表示にした行を含めるかどうか」だけです。レポートでは「画面に見えている数字＝集計値」のほうが直感的なので、迷ったら109など100番台を選ぶのが無難ですよ。</p>



<h3 class="wp-block-heading"><span id="toc36">Q. フィルタを解除しても合計が変わってしまうのはなぜ？</span></h3>



<p class="wp-block-paragraph">A. 100番台（101〜111）を使っているうえに、手動で非表示にした行があるからです。フィルタの状態とは関係なく、手動非表示の行は100番台では常に除外されます。フィルタ解除後も全行を合計したい場合は、機能番号を1〜11（手動非表示を含む側）に変えてください。</p>



<h3 class="wp-block-heading"><span id="toc37">Q. SUBTOTALの結果をさらに別のSUBTOTALで使えますか？</span></h3>



<p class="wp-block-paragraph">A. 使えます。むしろこの「他のSUBTOTAL関数を無視する」仕様こそが、小計＋総合計を作るときの最大のメリットです。総合計のSUBTOTAL範囲に小計のSUBTOTALセルが含まれても、二重カウントされずに正しい合計が出ますよ。</p>



<h3 class="wp-block-heading"><span id="toc38">Q. ARRAYFORMULAでSUBTOTALを使えますか？</span></h3>



<p class="wp-block-paragraph">A. ARRAYFORMULA内でSUBTOTALを使うと、フィルタ連動が正しく動かないケースがあります。SUBTOTALは「単一セルで1つの集計値を返す関数」として使うのが基本です。配列で結果を並べたい場合は<a href="https://mashukabu.com/spreadsheet-query-function/">QUERY関数</a>・<a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF関数</a>を組み合わせるほうが安定しますよ。</p>



<h3 class="wp-block-heading"><span id="toc39">Q. 既存のSUM関数をSUBTOTALに置き換えても安全ですか？</span></h3>



<p class="wp-block-paragraph">A. 安全です。フィルタを使わない状態では、<code>=SUBTOTAL(9, A1:A100)</code> と <code>=SUM(A1:A100)</code> は同じ結果になります。今後フィルタを使う可能性のある集計セルは、最初からSUBTOTAL（9または109）で書いておくと、後で書き換える手間がなくなりますよ。</p>



<h2 class="wp-block-heading"><span id="toc40">SUBTOTALのネスト除外を使った多段階集計</span></h2>



<p class="wp-block-paragraph">SUBTOTAL関数が「範囲内の他のSUBTOTAL関数を無視する」という仕様は、多段階の集計表を作る際に非常に強力です。</p>



<h3 class="wp-block-heading"><span id="toc41">3階層の集計表でも二重カウントなし</span></h3>



<p class="wp-block-paragraph">たとえば「担当者別明細 → 部署小計 → 事業部中計 → 全社総合計」のような3階層の集計表でも、すべてSUBTOTALで書けば二重カウントは起きません。</p>



<pre class="wp-block-code"><code>（明細行）
D4: 山田　5,000
D5: 佐藤　3,000
（部署小計）
D6: 営業1課 小計 =SUBTOTAL(9, D4:D5)   → 8,000

（明細行）
D8: 田中　4,000
D9: 鈴木　6,000
（部署小計）
D10: 営業2課 小計 =SUBTOTAL(9, D8:D9)  → 10,000

（中計行）
D11: 営業部 中計 =SUBTOTAL(9, D4:D10)  → 18,000（小計セルを含む範囲でOK）

（全社総合計）
D20: 全社 合計 =SUBTOTAL(9, D4:D19)    → 正しく全明細の合計になる</code></pre>



<p class="wp-block-paragraph">D11の数式は「D4:D10」という範囲を指定しており、D6（小計セル）を含んでいますが、内部がSUBTOTAL関数であれば自動的にスキップされます。D20でも同様で、小計・中計のセルはすべて無視されて明細行の合計だけが集計されます。</p>



<h3 class="wp-block-heading"><span id="toc42">フィルタと多段階集計の組み合わせ</span></h3>



<p class="wp-block-paragraph">この仕様を活用すると、多段階集計表にフィルタをかけたときも集計値が自動的に更新されます。たとえば担当者でフィルタをかけると、その担当者を含む部署小計・事業部中計・全社総合計がすべて同時に更新されます。</p>



<p class="wp-block-paragraph">SUMで同じ構造を作ると、小計行や中計行にSUM数式が入っている行が隠れずに残り、総合計が二重・三重にカウントされてしまいます。小計行が1行でもあるレポートはSUBTOTAL一択と覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc43">SUBTOTAL vs AGGREGATE：スプレッドシートでの代替手段</span></h2>



<p class="wp-block-paragraph">ExcelにはSUBTOTALの上位互換として「AGGREGATE関数」がありますが、Googleスプレッドシートにはありません。AGGREGATEができてSUBTOTALができないことと、スプレッドシートでの代替手段を整理します。</p>



<h3 class="wp-block-heading"><span id="toc44">AGGREGATEが持つSUBTOTALにない機能</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>機能</th><th>SUBTOTAL</th><th>AGGREGATE（Excelのみ）</th></tr></thead><tbody><tr><td>エラー値を無視して集計</td><td>できない</td><td>できる</td></tr><tr><td>非表示行を無視（条件指定）</td><td>1〜11/101〜111で制御</td><td>より細かく制御可能</td></tr><tr><td>LARGE・SMALL・パーセンタイル</td><td>できない</td><td>できる</td></tr><tr><td>集計種類</td><td>11種類</td><td>19種類</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc45">スプレッドシートでのエラー無視集計</span></h3>



<p class="wp-block-paragraph">AGGREGATEがないスプレッドシートで「エラーを無視して合計したい」場合の代替手段は3つあります。</p>



<p class="wp-block-paragraph"><strong>方法1: 整形列を使う</strong></p>



<pre class="wp-block-code"><code>D列（整形）: =IFERROR(C2, 0)   ← エラーを0に変換した作業列
集計:        =SUBTOTAL(9, D2:D100)</code></pre>



<p class="wp-block-paragraph">作業列が増えますが最もシンプルで安定します。</p>



<p class="wp-block-paragraph"><strong>方法2: IFERROR込みの配列数式（スプレッドシート独自）</strong></p>



<pre class="wp-block-code"><code>=SUMPRODUCT(IFERROR(C2:C100, 0) * SUBTOTAL(103, OFFSET(C2, ROW(C2:C100)-ROW(C2), 0)))</code></pre>



<p class="wp-block-paragraph">SUBTOTAL(103, &#8230;)でフィルタ表示フラグを取得し、SUMPRODUCT内でIFERRORと掛け合わせます。ただしデータ量が多いと動作が重くなるため、実務では作業列（方法1）が推奨です。</p>



<p class="wp-block-paragraph"><strong>方法3: QUERY関数で集計</strong></p>



<pre class="wp-block-code"><code>=QUERY(C2:C100, &quot;SELECT SUM(C) WHERE C IS NOT NULL LABEL SUM(C) ''&quot;)</code></pre>



<p class="wp-block-paragraph">QUERYはNULLを自動的に無視するため、エラーをIFERRORで0変換した後にQUERYで集計する組み合わせも使えます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>ExcelファイルをスプレッドシートにインポートしてAGGREGATEが含まれていると、スプレッドシートでは「未対応関数」としてエラー表示になります。Excelと共同作業するファイルにはAGGREGATEを使わずSUBTOTAL+IFERRORで統一しておくと相互運用性が上がります。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc46">SUBTOTAL関数 vs ピボットテーブル：どちらを選ぶ？</span></h2>



<p class="wp-block-paragraph">SUBTOTAL関数とピボットテーブルは、どちらも「データを集計する」ツールですが、使い方の場面が異なります。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>SUBTOTAL関数</th><th>ピボットテーブル</th></tr></thead><tbody><tr><td>操作方法</td><td>セルに数式を入力</td><td>UIで設定・ドラッグ</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><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>



<h3 class="wp-block-heading"><span id="toc48">SUBTOTALを選ぶべき場面</span></h3>



<ul class="wp-block-list"><li>既存の表の上部や下部に集計行を置きたい</li><li>フィルタ操作の都度リアルタイムで数字を確認したい</li><li>他の数式と組み合わせて動的なダッシュボードを作りたい</li><li>シート構造をシンプルに保ちたい</li></ul>



<h3 class="wp-block-heading"><span id="toc49">ピボットテーブルを選ぶべき場面</span></h3>



<ul class="wp-block-list"><li>集計軸（行・列）を頻繁に切り替えて多角的に分析したい</li><li>数千〜数万行の大量データを集計したい</li><li>クロス集計（行と列の2軸で集計）が必要</li><li>月別・担当者別など複数の切り口で同時に集計したい</li></ul>



<p class="wp-block-paragraph"><strong>結論</strong>: 「既存の表にフィルタ集計を付け加えたい」ならSUBTOTAL、「大量データを多角的に分析したい」ならピボットテーブルが向いています。両方をシートに共存させて使い分けるのがベストプラクティスです。</p>



<h2 class="wp-block-heading"><span id="toc50">まとめ｜SUBTOTAL関数でフィルタ対応の集計を1関数に集約</span></h2>



<p class="wp-block-paragraph">スプレッドシートのSUBTOTAL関数は、フィルタで非表示にした行を除外して集計できる「フィルタ連動の万能集計関数」です。</p>



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



<ul class="wp-block-list"><li>構文は <code>=SUBTOTAL(機能番号, 範囲)</code> の2引数だけ</li><li>機能番号で合計(9)・平均(1)・件数(2)・最大(4)・最小(5)など11種類の集計を切り替える</li><li>1〜11は手動非表示を含む、101〜111は手動非表示も除外する（迷ったら101〜111）</li><li>範囲内の他のSUBTOTAL関数を無視するので、小計＋総合計の二重集計を防止できる</li><li>フィルタを使うならSUBTOTAL、使わないなら<a href="https://mashukabu.com/spreadsheet-sum-function/">SUM</a>、条件指定なら<a href="https://mashukabu.com/spreadsheet-sumif-function/">SUMIF</a>・<a href="https://mashukabu.com/spreadsheet-sumifs-function/">SUMIFS</a></li><li>ExcelのSUBTOTALとも基本動作は同じ。エラー無視が必要なExcelファイルではAGGREGATEを使う</li></ul>



<p class="wp-block-paragraph">まずは <code>=SUBTOTAL(9, 範囲)</code> でフィルタ対応の合計から試してみてください。フィルタを切り替えるたびに値が変わるのを見ると、便利さが一気に実感できますよ。</p>



<p class="wp-block-paragraph">ダッシュボードを作るなら、合計・平均・件数・最大・最小の5行を表頭に並べるだけで「フィルタ対応のミニ集計表」が完成します。今日から使えるテクニックなのでぜひ試してみてくださいね。</p>



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



<h3 class="wp-block-heading"><span id="toc51">この記事で紹介した関数・関連記事</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-sumproduct-function/">スプレッドシートのSUMPRODUCT関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-average-function/">スプレッドシートのAVERAGE関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-count-function/">スプレッドシートのCOUNT関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-counta-function/">スプレッドシートのCOUNTA関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-max-function/">スプレッドシートのMAX関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-min-function/">スプレッドシートのMIN関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-product-function/">スプレッドシートのPRODUCT関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-round-function/">スプレッドシートのROUND関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-iferror-function/">スプレッドシートのIFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方</a></li><li><a href="https://mashukabu.com/spreadsheet-query-function/">スプレッドシートのQUERY関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-subtotal-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
