昨日まで合っていた集計が、今日は合わない。行を追加したのにピボットテーブルの合計が増えない。誰かが触った覚えもないのに、数字だけが古いまま止まっている——。ピボットテーブルが更新されないという症状は、原因が1つではありません。見た目が同じなので、思いついた対処を順に試すと、直ったのか直っていないのか分からないまま時間だけが過ぎます。
先に大事なことを書きます。Google公式ヘルプには「ピボット テーブルで参照しているデータのセルを変更すると、ピボット テーブルが更新されます」と明記されています。つまり「セルの中身を書き換えた」場合は自動で反映されるのが正常な動作です。それでも反映されないなら、書き換えたセルがそもそもピボットテーブルの参照範囲に入っていないか、表示の側で隠されているか、参照元のデータがまだ届いていないか、のいずれかに絞られます。
この記事では、Google公式ヘルプで確認できる仕様だけを使って、原因を5系統に分け、1手順ずつ「ここで直らないなら原因はこれではない」と切り分けながら潰していきます。最後に、そもそも毎月作り直さなくて済む形にする恒久対策も置きました。
結論:更新されない原因は「範囲」「元データ」「表示」「参照元」「権限」の5系統
ピボットテーブルが更新されない原因は、次の5つのどれかに入ります。上から順に、発生頻度が高く、確認が簡単な順です。
- ①データ範囲が固定行数で、追加した行が範囲外になっている(最も多い。追加した分だけが消える)
- ②元データに空白行・見出しの重複がある(途中から集計が切れる、項目名が「空白」で出る)
- ③フィルタやスライサーが効いたまま(数字は新しいのに、一部の行だけ出てこない)
- ④参照元が別シート・IMPORTRANGEで、まだ再計算が走っていない(元シートは正しいのにこちらだけ古い)
- ⑤権限が閲覧者で、自分の操作が保存されていない(自分だけ直らない・共有相手だけ直らない)
逆に言えば、「ピボットテーブルを再読み込みするボタン」を探しても見つからないのが正解です。Googleスプレッドシートのピボットテーブルには、Excelのような明示的な「更新」ボタンがありません。セルの変更は自動で反映される設計なので、押すボタンが無いこと自体は異常ではありません。
まず1分で確認する3点
触り始める前に、データを壊さないための確認を3つだけしてください。ここを飛ばして範囲を触ると、元に戻すのが面倒になります。
- ピボットテーブルを消さない。作り直したくなりますが、その前に原因を特定したほうが速く終わります。作り直すと、どの設定が悪かったのかが永久に分からなくなります。
- 元データの最終行の行番号をメモする。たとえば「データは2行目から847行目まで」と控えておきます。この数字が、次章の切り分けで効きます。
- ブラウザを1回だけ再読み込みする。共同編集中の反映遅れなら、これだけで直ります。直ったらこの記事の残りは不要です。再読み込みで直らないなら、原因はブラウザ側ではありません。
なお、シート全体が重くて操作そのものが遅れている場合は、更新されていないのではなく「まだ計算が終わっていない」だけのことがあります。心当たりがあれば先にスプレッドシートが重い・開かないときの対処を確認してください。
原因別の対処5手順
手順1:データ範囲が「固定行数」になっていないか見る
ピボットテーブルをクリックし、右側のエディタ上部にある「ソース」または「データ範囲」の表記を見てください。ここが シート1!A1:F500 のように終わりの行番号で止まっていたら、それが原因です。501行目以降に追加したデータは、ピボットテーブルから見えていません。
直し方は、公式ヘルプの手順どおりです。ピボットテーブルのエディタで「データ範囲を選択」アイコンをクリックし、範囲を指定し直します。このとき行番号で指定し直すのではなく、シート1!A:F のように列全体で指定するのが要点です。列全体にしておけば、何行追加されても範囲から外れません。
範囲を広げても数字が変わらなかった場合、追加した行は元々範囲内だったということなので、原因は範囲ではありません。手順2へ進んでください。
手順2:元データの空白行と見出しの重複を潰す
Google公式ヘルプは、ピボットテーブルを作る前提として「列ごとに見出しを付ける必要があります」と書いています。この前提が崩れていると、範囲が正しくても集計が期待どおりになりません。典型的なのは次の2つです。
- 見出し行の下に空白行が1行入っている。この場合、ピボットテーブルの項目に「空白」という行が現れます。集計から消えたわけではなく、名前のないグループとして集計されています。
- 同じ見出し名が2つ以上ある。「金額」が2列あると、エディタのフィールド一覧でどちらを選んだのか分からなくなり、片方だけを集計してしまいます。
対処は、元データ側で見出しを一意の名前に直し、データの途中にある完全な空白行を削除することです。列全体で範囲指定している場合、表の下に残った古いメモ書きや小計行も集計に混ざるので、あわせて別シートへ移してください。
ここで「空白」の行が消え、見出しの重複も無いのに数字が合わないなら、原因は元データの形ではありません。手順3へ進みます。
手順3:フィルタとスライサーを疑う
「新しい行は入っているのに、画面には出てこない」という症状は、たいていフィルタです。確認する場所は3つあります。
- ピボットテーブル自身のフィルタ。エディタの「フィルタ」欄に条件が残っていないか。公式ヘルプでは、フィルタは「テーブル内に表示したくないデータを非表示にできます」機能と説明されています。非表示にしているだけで、データは消えていません。
- シートに置かれたスライサー。公式ヘルプによると、スライサーは「同じデータセットを使用するシート内のすべてのグラフとピボット テーブルに適用されます」。1つのスライサーが、離れた場所にある別のピボットテーブルまで同時に絞り込んでいることがあります。
- 元データ側のフィルタ。公式ヘルプは「フィルタを追加すると、スプレッドシートにアクセスできるすべてのユーザーに同じフィルタが適用されます」と明記しています。自分が絞り込むと、同時に開いている全員の画面も変わります。
やっかいなのは、スライサーの選択を「デフォルトのフィルタ」として保存できる点です。保存すると、公式ヘルプの記述どおり「スプレッドシートを他のユーザーと共有すると、デフォルトのフィルタが表示されます」。自分は何も触っていないのに、開いた瞬間から絞り込まれている状態がこれです。フィルタが他の人にまで波及する問題はフィルタが他の人にも影響するときの対処に詳しくまとめています。
すべてのフィルタとスライサーを解除しても行が出てこないなら、原因は表示の絞り込みではありません。手順4へ進みます。
手順4:参照元が別シート・IMPORTRANGEなら再計算の遅れを疑う
集計元が別のスプレッドシートで、IMPORTRANGEで引っ張っている場合は、そもそも手元にデータが届いていない可能性があります。公式ヘルプに書かれている仕様は次のとおりです。
- ドキュメントを開いている間、1時間ごとに自動的に更新を確認する。
- ドキュメントを閉じて再度開いた場合、この更新はトリガーされない。
- 1回のリクエストで最大10MBまで。
- 参照先へ明示的にアクセスを許可する必要がある。
つまり、元シートを更新した直後にこちらを見ても、最大1時間は古いままということが起こり得ます。急ぐときは、IMPORTRANGEの数式が入ったセルを一度削除して貼り直すか、参照範囲をわずかに変えて再入力すると再取得が走ります。元シートの数字と手元のインポート結果を並べて見比べて、そこが一致しているなら、原因はIMPORTRANGEではありません。ピボットテーブルの範囲(手順1)に戻ってください。
手順5:自分の権限が「閲覧者」でないか確認する
意外と見落とされるのが権限です。編集権限が無いと、操作はできたように見えても保存されません。公式ヘルプは「スプレッドシートの閲覧権限しかない場合は、自分だけが使用できる一時的なフィルタ表示を作成できます。その場合、フィルタ表示は保存されません」と説明しています。スライサーについても「新しいスライサーを追加、削除するには、編集権限が必要です」とあります。
症状の見分け方はシンプルです。自分の画面では直っているのに他の人には反映されない場合は自分の権限、逆に自分だけ古い場合は相手が保存していないか、キャッシュの残った古いタブを見ています。共有まわりで詰まっているなら「権限がありません」で共有できないときの対処を先に読んでください。複数人で同時に触って壊れる話は複数人で使うスプレッドシートが壊れる原因にまとめてあります。
ここまでの5手順で直らない場合、残る可能性はシートそのものの容量です。Google公式ヘルプは、スプレッドシートの上限を「1,000 万セルまたは 18,278 列(列 ZZZ)まで」と定めています。上限に近づくと、計算の反映が目に見えて遅くなります。
恒久対策:毎回範囲を直さなくていい形にする
手順1で範囲を広げても、翌月また同じことが起きます。その場でしのぐのではなく、増えても壊れない形に一度だけ作り替えるほうが結果的に早く終わります。やることは3つです。
- データ範囲を列全体(
A:F)で指定する。行番号を書かないだけで、行の追加で壊れる事故はほぼ無くなります。ただし列全体にすると空行も範囲に含まれるため、表の下に別の表やメモを置かないことがセットの条件です。 - 元データに「テーブル」を使う。Googleスプレッドシートのテーブルは、列ごとに型(数値・日付・プルダウン・チェックボックスなど)を設定できます。型を決めておくと、日付が文字列で入るような入力ミスが入口で止まり、ピボットテーブル側で日付としてグループ化できない事故を防げます。
- 入力用シートと集計用シートを分ける。1枚のシートに入力と集計とメモが同居していると、空白行と見出し重複が必ず再発します。入力は1枚、集計のピボットテーブルは別シート、と分けるだけで原因の半分が消えます。
この3つをやっておけば、「今月も範囲を直す」という作業自体が無くなります。作り替えは一度きりの作業なので、毎月の手直しを続けるより早く終わります。
毎月のように作り直しているなら、シートの使い方が限界に来ている
ここまでの手順で今回の症状は直ります。ただ、毎月ピボットテーブルを作り直しているとしたら、それはピボットテーブルの不具合ではなく、集計の仕組みを人の手で支えている状態です。範囲を直す人、空白行を消す人、フィルタを戻す人が必要で、その人が休むと数字が止まります。
症状の出方も変わっていきます。行が増えるほど再計算は遅くなり、フィルタは全員に波及し、誰がいつ何を絞り込んだのかは記録に残りません。「直し方を知っている人がいるから回っている」は、仕組みとしては回っていないのと同じです。この段階の判断材料はスプレッドシート管理の限界に整理しました。
正直に言えば、月に1〜2回の集計で、触る人が2〜3人までなら、上の恒久対策で十分足ります。作り替えを考えたほうがいいのは、入力する人が増えて範囲やフィルタの事故が毎月起きている場合です。Mihataでは、いまのスプレッドシートをそのまま活かして、入力と集計だけをアプリの形に切り出す作り方をご案内しています。
よくある質問
ピボットテーブルに「更新」ボタンが見当たりません。
Googleスプレッドシートのピボットテーブルには明示的な更新ボタンがありません。Google公式ヘルプには「ピボット テーブルで参照しているデータのセルを変更すると、ピボット テーブルが更新されます」と記載されており、セルの中身の変更は自動で反映される仕様です。反映されない場合は、データ範囲・空白行・フィルタ・参照元・権限のどれかを疑ってください。
行を追加したのに合計が増えません。
データ範囲が A1:F500 のように行番号で固定されている可能性が高いです。ピボットテーブルのエディタで「データ範囲を選択」アイコンから範囲を指定し直し、A:F のように列全体で指定しておくと、行が増えても範囲から外れなくなります。
ピボットテーブルに「空白」という行が出ます。
元データの途中に空白行があるか、見出しのない列を集計に含めている状態です。Google公式ヘルプはピボットテーブルの前提として「列ごとに見出しを付ける必要があります」と書いています。見出しを一意の名前に直し、表の途中の空白行と表の下のメモ書きを別シートへ移してください。
自分は何も絞り込んでいないのに、一部の行が表示されません。
スライサーのデフォルトのフィルタが疑われます。公式ヘルプによると、スライサーは同じデータセットを使うシート内のすべてのグラフとピボットテーブルに適用され、デフォルトとして保存したフィルタは共有相手の画面にも表示されます。シート上のスライサーをすべて確認してください。
元のスプレッドシートを直したのに、IMPORTRANGE で引いた側が古いままです。
公式ヘルプによると、IMPORTRANGE はドキュメントを開いている間、1時間ごとに自動的に更新を確認する仕様です。閉じて再度開いた場合は更新がトリガーされません。急ぐ場合は数式を削除して貼り直すか、参照範囲を少し変えて再入力すると再取得されます。