ピボットテーブルが更新されない。配られた集計が古いかを式で見つける

2026-09-21Excelの使い方
ピボットの検算つきブック(Excel)をダウンロード

無料・登録不要 / 24KB / 版 1.0 / Excel 2010以降

ピボットテーブルは、元データを直しても自動では変わらない。更新するまで前の数字が残る。しかも更新ボタンを押しても、足した行が入らないことがある。

300行で作ったピボットに50行足して、更新ボタンを押した。総計は13,608,200円のままだった。元データの合計は15,678,700円で、2,070,500円が落ちている。

50行足して更新ボタンを押したあと。元データの合計は15,678,700円、ピボットの総計は13,608,200円で2,070,500円少ない

以下の操作は、2026年9月21日にMicrosoft 365のExcel(バージョン16)で実際に動かして確かめた。データは式を確かめるために作った架空の売上だ。

更新ボタンを押しても、足した50行は入らなかった

原因はデータソースの範囲にある。ピボットを作ったとき、元データの範囲が売上!$A$1:$C$301のように固定で記録される。あとから302行目以降に足しても、その範囲の外なので見ない。

更新ボタンは「いま記録されている範囲を読み直す」だけだ。範囲そのものは広げない。だから何度押しても同じ数字が出る。ここが分かりにくい。動いていないのではなく、正しく動いた結果として古い数字が出ている。

範囲を広げるには、ピボットを選んで分析タブのデータソースの変更から、新しい範囲を指定し直す。実際に売上!$A$1:$C$351に変えて更新したら、総計は15,678,700円になった。

毎月これをやるのは忘れる。行が増えるたびに範囲を指定し直す作業が、更新のたびに1つ増えるからだ。

テーブルにすると、行が増えても追いかける

元データを選んでCtrl+Tでテーブルにしてから、そのテーブル名をデータソースに指定する。テーブルは行を足すと自動で伸びるので、範囲を指定し直さなくていい。

実際に試した。350行をテーブルにしてピボットのソースを差し替え、さらに20行足して更新ボタンを押すと、総計は16,835,200円になった。足した20行がそのまま入っている。

テーブルにするときの注意は2つある。見出し行が1行であること、見出しが空のままの列がないこと。見出しが空だと「列1」のような名前が勝手に付いて、ピボットの項目名がそれになる。

配っているブックは、元データをテーブル(売上表)にしてある。行を足して更新するだけで済む。

ファイルを開くときに更新する設定は、既定で外れている

ピボットを右クリックしてピボットテーブルオプションを開き、データのタブを見ると「ファイルを開くときにデータを更新する」がある。ここが入っていれば、受け取った人が開いた時点で最新になる。

このブックで既定値を読んだら、オフだった。何も設定していないピボットは、開いても更新されない。作った人が最後に更新した時点の数字が、そのまま画面に出る。

配る側はここを入れておく。ただし入れてあっても、元データが同じブックの中にあることが前提だ。外部ファイルを参照しているなら、そのファイルが開ける場所にないと更新できない。

配られる側は、この設定が入っているかどうかを開いて確かめるしかない。入っていない前提で検算したほうが早い。

総計が合っているのに、金額が合わないことがある

更新の話とは別に、もっと見つけにくい形がある。金額の列に、数字が文字列として入っている行だ。

200行のうち10行だけ、金額を文字列で入れて試した。本来の合計は8,447,400円で、文字列の10行は330,800円。本来の3.9%にあたる。

結果はこうなった。ピボットの総計は8,116,600円。元データのSUMも8,116,600円。差はゼロで一致するSUMもピボットの合計も、文字列は飛ばして足すからだ。総計を突き合わせる検算だけでは見つからない。

見つかるのは件数のほうだ。COUNTは190、COUNTAは200。数値として数えられるのが190行しかない。ピボットに「データの個数」を置くと200と出る。文字列も1件として数えるからだ。

数値の件数   =COUNT(売上!$D:$D)
空でない件数  =COUNTA(売上!$D:$D)-1
文字列の行数  =空でない件数-数値の件数

この差が0でなければ、金額の列に文字列が混ざっている。他のブックから貼ったときや、CSVを読み込んだときに出る。名簿の突き合わせが一致しない話と同じで、見た目は同じでも中身の型が違う。

空白行を1つ入れたら、範囲が50行目までに切れた

200行のデータの51行目に空白行を1つ入れて、自動で取れる範囲を読んだ。$A$1:$C$50だった。見出しを除くと49行しか入っていない。下にある151行は範囲の外になる。

ピボットを作るときに範囲を選ばずに「挿入」から作ると、Excelは連続した範囲を自分で判断する。その判断が空白行で止まる。小計の行を入れたり、月の区切りに1行空けたりすると、そこで切れる。

これは式で見つけられる。データが入っている最後の行の行番号と、件数から出る最後の行を比べればいい。

最終行の行番号  =SUMPRODUCT(MAX((売上!$A$1:$A$5000<>"")*ROW(売上!$A$1:$A$5000)))
件数から出る行  =COUNTA(売上!$A:$A)

途中に空白行がなければ、この2つは一致する。空白行が3つあれば3つずれる。SUMPRODUCTMAXの組み合わせはCtrl+Shift+Enterが要らないので、配ったブックでも壊れない。

件数が少ないなら、ピボットをやめて式にする

ピボットには「更新する」という手順が要る。手順があるかぎり、いつか飛ぶ。SUMIFSで組めば、元データを直した瞬間に集計も変わる。更新という言葉が出てこない。

店舗ごとの合計なら、こう書ける。

=SUMIFS(売上!$D:$D,売上!$B:$B,$A3)

列全体を指定しておけば、行が増えても範囲を直さなくていい。ピボットの範囲を毎月広げるより手数が少ない。

ピボットが効くのは、見る軸をその場で変えたいときだ。店舗別で見て、次に品名別で見て、月でも切る。この動きを式でやるのは面倒だし、式が増えるほど読めなくなる。

うちは、毎月同じ形で出すものはSUMIFS、その場で掘るものはピボット、という分け方にしている。在庫のSUMIFSが22個ずれた話のように式のほうにも落とし穴はあるが、更新を忘れて古い数字が出るという事故は起きない。

いつ更新したかを記録したいとも思ったが、ワークシート関数でピボットの更新日時を取る方法は見つけられなかった。TODAYは開くたびに今日になるので、更新した証拠にはならない。更新した人が手で日付を書く欄を作るのが、いまのところの落としどころだ。

受け取った側が3分で確かめる式

配られたブックのピボットを信じていいかは、3つ見れば分かる。

ピボットの数字を見る前に、総計と元データの合計、COUNTとCOUNTA、最終行と件数の3つを順に見る

1つ目は総計と元データの合計。GETPIVOTDATAでピボットの総計を取って、元データのSUMと引き算する。

ピボットの総計 =GETPIVOTDATA("金額の合計",集計!$A$3)
元データの合計 =SUM(売上!$D:$D)
差         =元データの合計-ピボットの総計

GETPIVOTDATAは、フィールドの指定を省くと総計を返す。ピボットの左上のセルを2つ目の引数に渡す。ピボットの形を変えても式が壊れないので、総計のセルを直接参照するより安全だ。

2つ目がCOUNTCOUNTAの差、3つ目が最終行の差になる。この3つが全部0なら、いま見ている数字は元データと一致している。

ピボットの検算シート。総計と合計の差、文字列で入っている行数、空白行の数が並び、3つとも0なら一致と出る

配るブックには、この検算を入れたシートを足しておく。自分が更新を忘れたときにも気づける。数字が合っているかを人の記憶に任せない、という点ではAIが書いた文書を照合する話と同じ考え方だ。

作っていて気づいたのは、範囲が古いピボットほど数字が「それらしく」見えることだった。300行分の集計は形が整っていて、どこもおかしくない。50行足りないことは、元データの合計と並べるまで誰にも分からない。合っているように見える数字ほど、一度は引き算しておく。

動作確認: Microsoft 365のExcel(バージョン16) / Windows 11 / 2026-09-21確認

ピボットテーブルExcel検算集計テンプレート