<?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>SUBTOTAL &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/subtotal/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>SUBTOTAL &#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>
		<item>
		<title>AVERAGE関数の使い方｜0除外・フィルター平均も解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-average/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-average/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 24 Mar 2022 14:59:45 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[AVERAGEIF]]></category>
		<category><![CDATA[AVERAGE関数]]></category>
		<category><![CDATA[SUBTOTAL]]></category>
		<category><![CDATA[加重平均]]></category>
		<category><![CDATA[平均]]></category>
		<category><![CDATA[集計]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=1425</guid>

					<description><![CDATA[ExcelのAVERAGE関数の使い方を基本から実務レベルまで解説。「フィルター後の平均がおかしい」にはSUBTOTAL、「0が混じる」にはAVERAGEIF、「加重平均」にはSUMPRODUCTで解決できます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「Excelで平均を出したいだけなのに、なぜか結果がおかしい」&#8230;&#8230;そんな経験はありませんか。</p>



<p class="wp-block-paragraph">0が混じって平均が低く出たり、フィルターをかけたのに全件で計算されたり。AVERAGE関数は基本的な関数ですが、意外な落とし穴が多いんです。</p>



<p class="wp-block-paragraph">この記事では、ExcelのAVERAGE関数の使い方を基本から解説します。「0除外」「フィルター平均」「加重平均」まで、トラブル別にまるごと紹介しますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">AVERAGE関数とは？書き方と基本の使い方</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">【落とし穴1】0が混じると平均が下がる問題の解決策</a><ol><li><a href="#toc6" tabindex="0">AVERAGEIFで0を除外して平均する</a></li><li><a href="#toc7" tabindex="0">複数条件で除外したい場合はAVERAGEIFSを使う</a></li></ol></li><li><a href="#toc8" tabindex="0">【落とし穴2】フィルター後の平均がおかしいときの対処法</a><ol><li><a href="#toc9" tabindex="0">なぜAVERAGEはフィルターを無視するのか</a></li><li><a href="#toc10" tabindex="0">SUBTOTAL(1,範囲)で可視セルだけ平均する</a></li><li><a href="#toc11" tabindex="0">AGGREGATEでエラー無視＋手動非表示行も対応</a></li></ol></li><li><a href="#toc12" tabindex="0">【応用】加重平均をSUMPRODUCTで実現する</a><ol><li><a href="#toc13" tabindex="0">加重平均とは？単純平均との違い</a></li><li><a href="#toc14" tabindex="0">SUMPRODUCT÷SUMで加重平均を計算する式</a></li></ol></li><li><a href="#toc15" tabindex="0">文字列として格納された数値への対処</a><ol><li><a href="#toc16" tabindex="0">「数値として保存されていない数値」が原因で平均がズレる</a></li><li><a href="#toc17" tabindex="0">VALUE関数または一括変換で正しい数値に直す</a></li></ol></li><li><a href="#toc18" tabindex="0">AVERAGEIF・AVERAGEIFS・AVERAGEA・DAVERAGEとの使い分け</a><ol><li><a href="#toc19" tabindex="0">目的別・関数選択チャート</a></li></ol></li><li><a href="#toc20" tabindex="0">エラー（#DIV/0!）の原因と回避方法</a><ol><li><a href="#toc21" tabindex="0">IFERRORで空白返しにする</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ：AVERAGE関数トラブル別 解決早見表</a><ol><li><a href="#toc23" tabindex="0">この記事で紹介した関数・関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">AVERAGE関数とは？書き方と基本の使い方</span></h2>



<p class="wp-block-paragraph">AVERAGE関数（読み方: アベレージ）は、<strong>指定した数値の算術平均を返す関数</strong>です。英語の「Average（平均）」がそのまま関数名になっています。</p>



<p class="wp-block-paragraph">Excelの集計でもっとも使用頻度が高い関数の一つです。売上の月平均やテストの平均点など、あらゆる場面で活躍します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対応バージョン</strong></p><p>AVERAGE関数はExcel 2007以降すべてのバージョンで使えます。Microsoft 365やGoogleスプレッドシートにも対応しています。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">基本構文と引数の意味</span></h3>



<pre class="wp-block-code"><code>=AVERAGE(数値1, [数値2], ...)</code></pre>



<p class="wp-block-paragraph">カッコの中に平均したい数値やセル範囲を指定します。引数はカンマ区切りで最大255個まで追加できます。</p>



<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>追加の数値やセル範囲（最大255個）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数に指定できるパターンは3つあります。</p>



<ul class="wp-block-list"><li><strong>数値を直接入力</strong>: <code>=AVERAGE(80, 70, 90)</code> → 80</li><li><strong>セル参照</strong>: <code>=AVERAGE(A1, B1, C1)</code></li><li><strong>セル範囲</strong>: <code>=AVERAGE(B2:B6)</code></li></ul>



<p class="wp-block-paragraph">一番よく使うのはセル範囲の指定です。「この列の平均を出して」とお願いする感覚ですね。</p>



<h3 class="wp-block-heading"><span id="toc3">複数範囲・離れたセルを平均する</span></h3>



<p class="wp-block-paragraph">1月と3月の売上だけ平均したい、といった場面もありますよね。離れた範囲はカンマで区切って指定できます。</p>



<pre class="wp-block-code"><code>=AVERAGE(B2:B31, D2:D31)</code></pre>



<p class="wp-block-paragraph">この式はB2:B31とD2:D31のすべての数値をまとめて平均します。間の列は無視されるので、必要な月だけを選べます。</p>



<p class="wp-block-paragraph">個別のセルを混ぜることもできます。</p>



<pre class="wp-block-code"><code>=AVERAGE(B2:B10, E5, G3)</code></pre>



<p class="wp-block-paragraph">範囲と個別セルを自由に組み合わせられるのが便利なポイントです。</p>



<h3 class="wp-block-heading"><span id="toc4">空白・文字列・論理値はどう扱われる？</span></h3>



<p class="wp-block-paragraph">AVERAGE関数はデータの種類によって動きが変わります。ここを知っておくと、計算結果のズレを防げますよ。</p>



<p class="wp-block-paragraph"><strong>セル範囲で指定した場合</strong></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>無視される（分母にも入らない）</td></tr><tr><td>文字列</td><td>無視される</td></tr><tr><td>論理値（TRUE/FALSE）</td><td>無視される</td></tr><tr><td>0</td><td><strong>計算に含まれる</strong>（分母にカウント）</td></tr><tr><td>エラー値</td><td>結果がエラーになる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>引数に直接入力した場合</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>データの種類</th><th>扱い</th></tr></thead><tbody><tr><td>TRUE</td><td>1として計算される</td></tr><tr><td>FALSE</td><td>0として計算される</td></tr><tr><td>文字列</td><td>#VALUE! エラー</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">セル範囲指定と直接入力で、論理値の扱いが変わる点に注意してください。範囲指定では無視されますが、直接入力ではTRUE=1、FALSE=0として計算されます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>空白と0の違いがカギ</strong></p><p>空白セルは「データなし」として分母に入りません。0は「0という値がある」として分母に入ります。この違いが平均に大きく影響します。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">【落とし穴1】0が混じると平均が下がる問題の解決策</span></h2>



<p class="wp-block-paragraph">AVERAGE関数でよくあるトラブルの筆頭がこれです。「まだデータがない行に0が入っていて、平均が実態より低くなる」パターンですね。</p>



<p class="wp-block-paragraph">たとえば、7人分のテスト点数が以下のように並んでいるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>値</th></tr></thead><tbody><tr><td>B2</td><td>80</td></tr><tr><td>B3</td><td>0</td></tr><tr><td>B4</td><td>70</td></tr><tr><td>B5</td><td>90</td></tr><tr><td>B6</td><td>0</td></tr><tr><td>B7</td><td>60</td></tr><tr><td>B8</td><td>50</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>=AVERAGE(B2:B8)</code> の結果は <strong>50</strong> です（合計350 / 7個）。0が2つ含まれるため、実際に点数がある5人の平均70より大幅に低くなります。</p>



<h3 class="wp-block-heading"><span id="toc6">AVERAGEIFで0を除外して平均する</span></h3>



<p class="wp-block-paragraph">0を除外するには、<a href="https://mashukabu.com/excel-function-howto-use-averageif/">AVERAGEIF関数</a>を使います。</p>



<pre class="wp-block-code"><code>=AVERAGEIF(B2:B8, &quot;&lt;&gt;0&quot;)</code></pre>



<p class="wp-block-paragraph">「B2:B8のうち0以外のセルだけで平均する」という意味です。結果は <strong>70</strong> になります（合計350 / 5個）。</p>



<p class="wp-block-paragraph">条件の <code>"<>0"</code> は「0と等しくない」を表す比較演算子です。これだけで0を除外できるので、覚えておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">複数条件で除外したい場合はAVERAGEIFSを使う</span></h3>



<p class="wp-block-paragraph">「0を除外して、かつ特定の部署だけ」のように条件が2つ以上あるときは、<a href="https://mashukabu.com/excel-function-howto-use-averageifs/">AVERAGEIFS関数</a>の出番です。</p>



<pre class="wp-block-code"><code>=AVERAGEIFS(C2:C20, C2:C20, &quot;&lt;&gt;0&quot;, A2:A20, &quot;営業部&quot;)</code></pre>



<p class="wp-block-paragraph">この式は「C列が0でない、かつA列が営業部」の行だけで平均を計算します。条件をカンマで追加していくだけなので、書き方もシンプルです。</p>



<h2 class="wp-block-heading"><span id="toc8">【落とし穴2】フィルター後の平均がおかしいときの対処法</span></h2>



<p class="wp-block-paragraph">フィルターで絞り込んだのに、AVERAGE関数の結果が変わらない。これも実務でよくあるトラブルです。</p>



<h3 class="wp-block-heading"><span id="toc9">なぜAVERAGEはフィルターを無視するのか</span></h3>



<p class="wp-block-paragraph">AVERAGE関数は<strong>非表示行を含めてすべてのセルを計算対象にします</strong>。フィルターで行を隠しても、裏側では全データが計算されています。</p>



<p class="wp-block-paragraph">これはAVERAGE関数の仕様です。フィルター対応の平均には、別の関数を使う必要があります。</p>



<h3 class="wp-block-heading"><span id="toc10">SUBTOTAL(1,範囲)で可視セルだけ平均する</span></h3>



<p class="wp-block-paragraph">フィルターに対応した平均を出すなら、<a href="https://mashukabu.com/excel-function-howto-use-subtotal/">SUBTOTAL関数</a>を使いましょう。</p>



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



<p class="wp-block-paragraph">第1引数の <strong>1</strong> が「平均」を意味します。フィルターで非表示にした行は自動的に除外されます。</p>



<p class="wp-block-paragraph">SUBTOTAL関数の第1引数には2種類の番号があります。</p>



<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>101</td><td>平均</td><td>除外する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">フィルターで隠した行はどちらも除外されます。違いは「手動で非表示にした行」の扱いです。手動非表示も除外したいなら101を使ってください。</p>



<h3 class="wp-block-heading"><span id="toc11">AGGREGATEでエラー無視＋手動非表示行も対応</span></h3>



<p class="wp-block-paragraph">SUBTOTAL関数には弱点が一つあります。範囲内にエラー値があると結果がエラーになる点です。</p>



<p class="wp-block-paragraph">エラー値も無視したいなら、AGGREGATE関数を使います。</p>



<pre class="wp-block-code"><code>=AGGREGATE(1, 7, B2:B100)</code></pre>



<p class="wp-block-paragraph">引数の意味はこうなります。</p>



<ul class="wp-block-list"><li><strong>1</strong>: 平均（AVERAGE相当）</li><li><strong>7</strong>: 非表示行とエラー値の両方を無視</li><li><strong>B2:B100</strong>: 対象範囲</li></ul>



<p class="wp-block-paragraph">optionsの主な設定値をまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>options</th><th>動作</th></tr></thead><tbody><tr><td>5</td><td>非表示行を無視</td></tr><tr><td>6</td><td>エラー値を無視</td></tr><tr><td>7</td><td>非表示行＋エラー値を無視</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">フィルター平均で最も安全なのはAGGREGATE関数です。ただしExcel 2010以降でないと使えません。お使いのバージョンを確認してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc12">【応用】加重平均をSUMPRODUCTで実現する</span></h2>



<h3 class="wp-block-heading"><span id="toc13">加重平均とは？単純平均との違い</span></h3>



<p class="wp-block-paragraph">単純平均は、すべてのデータを同じ重みで扱います。一方、加重平均は<strong>データごとに重み（ウェイト）を付けて計算する平均</strong>です。</p>



<p class="wp-block-paragraph">身近な例だと、大学の成績（GPA）があります。単位数が多い科目ほど成績への影響が大きいですよね。これが加重平均の考え方です。</p>



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



<pre class="wp-block-code"><code>加重平均 = (値1×重み1 + 値2×重み2 + ...) / (重み1 + 重み2 + ...)</code></pre>



<p class="wp-block-paragraph">AVERAGE関数では加重平均を直接計算できません。そこで<a href="https://mashukabu.com/excel-function-howto-use-sum/">SUM関数</a>とSUMPRODUCT関数を組み合わせます。</p>



<h3 class="wp-block-heading"><span id="toc14">SUMPRODUCT÷SUMで加重平均を計算する式</span></h3>



<p class="wp-block-paragraph">以下のような評価データがあるとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B列（スコア）</th><th>C列（重み）</th></tr></thead><tbody><tr><td>2行目</td><td>80</td><td>3</td></tr><tr><td>3行目</td><td>70</td><td>2</td></tr><tr><td>4行目</td><td>90</td><td>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>



<ul class="wp-block-list"><li>分子: 80×3 + 70×2 + 90×5 = 240 + 140 + 450 = <strong>830</strong></li><li>分母: 3 + 2 + 5 = <strong>10</strong></li><li>結果: 830 / 10 = <strong>83</strong></li></ul>



<p class="wp-block-paragraph">単純平均なら (80+70+90)/3 = 80 です。重みが5と大きい90点の影響で、加重平均は83になります。</p>



<p class="wp-block-paragraph">この違いが重要になる場面は多いです。売上の地域別加重平均や、配点が異なるテストの総合評価などで活用してみてください。</p>



<h2 class="wp-block-heading"><span id="toc15">文字列として格納された数値への対処</span></h2>



<h3 class="wp-block-heading"><span id="toc16">「数値として保存されていない数値」が原因で平均がズレる</span></h3>



<p class="wp-block-paragraph">Excelで意外と多いのが、見た目は数字なのに中身が文字列というケースです。CSVの取り込みや手入力のミスでよく発生します。</p>



<p class="wp-block-paragraph">AVERAGE関数は文字列を無視します。エラーは出ないのに、特定のセルが計算から外れるのが厄介なポイントです。</p>



<p class="wp-block-paragraph">文字列格納数値の見分け方は3つあります。</p>



<ul class="wp-block-list"><li>セル左上に<strong>緑色の小さな三角マーク</strong>が表示される</li><li>セルの数値が<strong>左寄せ</strong>になっている（数値は通常右寄せ）</li><li><code>=ISNUMBER(A1)</code> で <strong>FALSE</strong> が返される</li></ul>



<p class="wp-block-paragraph">これらに該当したら、そのセルは文字列扱いになっています。</p>



<h3 class="wp-block-heading"><span id="toc17">VALUE関数または一括変換で正しい数値に直す</span></h3>



<p class="wp-block-paragraph">文字列を数値に変換する方法は複数あります。</p>



<p class="wp-block-paragraph"><strong>方法1: エラーボタンから変換</strong></p>



<p class="wp-block-paragraph">緑三角が表示されたセルを選択します。黄色い警告アイコンをクリックし、「数値に変換」を選びましょう。複数セルを選択してから操作すれば一括変換もできます。</p>



<p class="wp-block-paragraph"><strong>方法2: <a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数</a>で変換</strong></p>



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



<p class="wp-block-paragraph">文字列の &#8220;123&#8221; を数値の 123 に変換します。別セルに変換結果を出す方法です。</p>



<p class="wp-block-paragraph"><strong>方法3: 算術演算で変換</strong></p>



<pre class="wp-block-code"><code>=A1*1</code></pre>



<p class="wp-block-paragraph">文字列に1を掛けると、Excelが自動的に数値に変換します。VALUE関数と同じ効果で、式が短くて済みます。</p>



<p class="wp-block-paragraph">大量のデータを扱うときは、方法1のエラーボタン一括変換が最も手軽です。数式で残したいならVALUE関数を使ってくださいね。</p>



<h2 class="wp-block-heading"><span id="toc18">AVERAGEIF・AVERAGEIFS・AVERAGEA・DAVERAGEとの使い分け</span></h2>



<h3 class="wp-block-heading"><span id="toc19">目的別・関数選択チャート</span></h3>



<p class="wp-block-paragraph">AVERAGE系の関数は種類が多くて迷いますよね。以下のチャートで目的に合った関数を選んでください。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使う関数</th><th>式の例</th></tr></thead><tbody><tr><td>範囲全体の平均</td><td>AVERAGE</td><td><code>=AVERAGE(B2:B100)</code></td></tr><tr><td>条件1つで平均</td><td><a href="https://mashukabu.com/excel-function-howto-use-averageif/">AVERAGEIF</a></td><td><code>=AVERAGEIF(A:A,"東京",B:B)</code></td></tr><tr><td>条件2つ以上で平均</td><td><a href="https://mashukabu.com/excel-function-howto-use-averageifs/">AVERAGEIFS</a></td><td><code>=AVERAGEIFS(C:C,A:A,"東京",B:B,">=100")</code></td></tr><tr><td>TRUE/FALSEも含めて平均</td><td><a href="https://mashukabu.com/excel-function-howto-use-averagea/">AVERAGEA</a></td><td><code>=AVERAGEA(B2:B100)</code></td></tr><tr><td>データベース形式で条件平均</td><td>DAVERAGE</td><td><code>=DAVERAGE(A1:C100,"売上",E1:E2)</code></td></tr><tr><td>フィルター対応の平均</td><td><a href="https://mashukabu.com/excel-function-howto-use-subtotal/">SUBTOTAL</a></td><td><code>=SUBTOTAL(1,B2:B100)</code></td></tr><tr><td>外れ値に強い代表値</td><td><a href="https://mashukabu.com/excel-function-howto-use-median/">MEDIAN</a></td><td><code>=MEDIAN(B2:B100)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときの判断基準はシンプルです。</p>



<ul class="wp-block-list"><li><strong>条件なし</strong> → AVERAGE</li><li><strong>条件あり</strong> → AVERAGEIF / AVERAGEIFS</li><li><strong>フィルター使用</strong> → SUBTOTAL / AGGREGATE</li><li><strong>論理値も計算に入れたい</strong> → AVERAGEA</li></ul>



<p class="wp-block-paragraph">DAVERAGEはデータベース関数の一種です。条件を別のセル範囲で指定する方式で、複雑な条件設定に向いています。ただし、多くの場面ではAVERAGEIFSで代用できます。</p>



<p class="wp-block-paragraph">関数の詳しい使い方は個別の解説記事を参考にしてください。<a href="https://mashukabu.com/excel-function/">Excel関数一覧</a>や<a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数を機能別に検索</a>からも探せますよ。</p>



<h2 class="wp-block-heading"><span id="toc20">エラー（#DIV/0!）の原因と回避方法</span></h2>



<p class="wp-block-paragraph">AVERAGE関数で最もよく見るエラーが <strong>#DIV/0!</strong> です。これは「0で割ろうとした」という意味のエラーです。</p>



<p class="wp-block-paragraph">原因はシンプルで、<strong>対象範囲に数値が1つもないとき</strong>に発生します。すべてのセルが空白、または文字列だけの場合がこれに該当します。</p>



<p class="wp-block-paragraph">まだデータが入っていないテンプレートにAVERAGE関数を仕込んでおくと、このエラーが表示されがちです。</p>



<h3 class="wp-block-heading"><span id="toc21">IFERRORで空白返しにする</span></h3>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数</a>で囲むだけで解決できます。</p>



<pre class="wp-block-code"><code>=IFERROR(AVERAGE(B2:B20), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">エラーのときは空白（&#8221;&#8221;）を返し、データが入ったら自動で平均値に切り替わります。</p>



<p class="wp-block-paragraph">表示する内容はお好みで変えられます。</p>



<pre class="wp-block-code"><code>=IFERROR(AVERAGE(B2:B20), &quot;-&quot;)
=IFERROR(AVERAGE(B2:B20), &quot;データなし&quot;)
=IFERROR(AVERAGE(B2:B20), 0)</code></pre>



<p class="wp-block-paragraph">テンプレートを作るときは、あらかじめIFERRORで囲んでおくのがおすすめです。見た目がすっきりしますよ。</p>



<p class="wp-block-paragraph">小数桁が長くなる場合は、<a href="https://mashukabu.com/excel-function-howto-use-round/">ROUND関数</a>と組み合わせましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(ROUND(AVERAGE(B2:B20), 1), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">平均値を小数第1位で丸めつつ、エラー時は空白にする式です。報告書や集計表で重宝します。</p>



<h2 class="wp-block-heading"><span id="toc22">まとめ：AVERAGE関数トラブル別 解決早見表</span></h2>



<p class="wp-block-paragraph">この記事では、ExcelのAVERAGE関数の基本から落とし穴の対処法まで解説しました。最後に、トラブル別の解決策を一覧にまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>トラブル</th><th>原因</th><th>解決策</th></tr></thead><tbody><tr><td>平均が想定より低い</td><td>0が計算に含まれている</td><td><code>=AVERAGEIF(範囲,"<>0")</code></td></tr><tr><td>フィルター後も平均が変わらない</td><td>AVERAGEは非表示行も計算する</td><td><code>=SUBTOTAL(1,範囲)</code></td></tr><tr><td>エラー値がある範囲で計算できない</td><td>AVERAGE・SUBTOTALはエラーを処理できない</td><td><code>=AGGREGATE(1,7,範囲)</code></td></tr><tr><td>#DIV/0! エラーが出る</td><td>対象範囲に数値がない</td><td><code>=IFERROR(AVERAGE(範囲),"")</code></td></tr><tr><td>特定セルが計算に含まれない</td><td>文字列として格納された数値</td><td>VALUE関数または*1で数値に変換</td></tr><tr><td>重み付きの平均を出したい</td><td>AVERAGE関数では対応できない</td><td><code>=SUMPRODUCT(値,重み)/SUM(重み)</code></td></tr></tbody></table></figure>



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



<ul class="wp-block-list"><li>AVERAGE関数は空白・文字列をスキップするが、<strong>0はスキップしない</strong></li><li>フィルター対応の平均には<strong>SUBTOTAL関数</strong>か<strong>AGGREGATE関数</strong>を使う</li><li>加重平均は<strong>SUMPRODUCT / SUM</strong>の組み合わせで計算する</li><li>文字列格納数値はエラーが出ずに無視されるため、発見が遅れやすい</li><li>テンプレートには<strong>IFERROR</strong>を仕込んでおくと安心</li></ul>



<p class="wp-block-paragraph">AVERAGE関数自体はとてもシンプルです。落とし穴のパターンさえ押さえれば、平均計算で困ることはなくなります。ぜひ今日の業務から試してみてくださいね。</p>



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



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-averageif/">AVERAGEIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-averageifs/">AVERAGEIFS関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-subtotal/">SUBTOTAL関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-averagea/">AVERAGEA関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-median/">MEDIAN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-sum/">SUM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-count/">COUNT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">IFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-round/">ROUND関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-value/">VALUE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function/">Excel関数一覧</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数を機能別に検索</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-average/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
