ピボットテーブルで月次の集計表は作れるようになったのに、その値を別シートのレポートに引っ張ってこようとした瞬間、#REF! や謎の値ズレに悩まされていませんか。
ピボットのセルを =A5 のように直接参照すると、レイアウトが少し変わっただけで参照が崩れてしまいます。この「ピボットの値を安全に取り出す」ために用意されているのが GETPIVOTDATA 関数です。
この記事では、Googleスプレッドシートの GETPIVOTDATA 関数について、基本構文から別シート参照、#REF! などのエラー対処、自動挿入の挙動まで、実務でそのまま使える形で整理していきます。
GETPIVOTDATA関数とは?ピボットのセルをそのまま参照するとどうなるか
まずは、なぜ GETPIVOTDATA がわざわざ用意されているのかを確認しておきましょう。ピボットテーブルの集計値を別セルで使いたい場合、多くの方は最初 =シート1!B5 のような直接参照を試みます。しかしこの方法には落とし穴があります。
直接参照の3つの問題(#REF!・値ズレ・集計条件ズレ)
ピボットのセルを直接参照した場合、典型的には次の3つの問題が発生します。
- レイアウト変更で参照がズレる: 行や列の並び順を変えただけで、同じ
B5が別の集計値を指してしまう。 - ピボットが縮小されて
#REF!: フィルターやグループ化でピボットの行数が減ると、参照セルが範囲外になってエラーになる。 - 集計条件のズレ: フィルター変更で表示内容が変わっても数式は同じセルを見続けるため、気づかないうちに別の値を参照してしまう。
つまり直接参照は「今たまたまその位置にある値」を取りに行っているだけで、意味のある参照にはなっていません。
GETPIVOTDATA関数が解決すること
GETPIVOTDATA は、セルの位置ではなく「エリア=東、カテゴリ=文具の売上合計」というように意味で値を取りに行く関数です。そのためピボットのレイアウトが変わっても、対象の集計が残っている限り数式は壊れません。月次レポートや別シートのダッシュボードを作るときに効果を発揮します。
GETPIVOTDATA関数の基本的な書き方
構文と引数の意味
構文は次の通りです。
=GETPIVOTDATA(値の名前, ピボットテーブルのセル, [元の列, ...], [ピボットのアイテム, ...])
| 引数 | 必須 | 内容 |
|---|---|---|
| 値の名前 | 必須 | ピボット上の値フィールドの表示名(例:"売上の合計"、"SUM of 売上")を二重引用符で囲む |
| ピボットテーブルのセル | 必須 | ピボット内の任意のセル参照。左上セル(例:A1)を指定するのが安全 |
| 元の列 | 任意 | ソースデータ側のヘッダー名(ピボットの表示名ではなく元データの列名) |
| ピボットのアイテム | 任意 | その列に対する絞り込み値(例:"東"、"文具") |
第3引数以降は「元の列」と「ピボットのアイテム」が必ずペアになります。条件を増やすときは、このペアを繰り返すイメージです。
自動挿入の挙動を理解する
ExcelではピボットのセルをクリックしてEnterすると、自動的に GETPIVOTDATA(...) が入力される挙動があります。一方、Googleスプレッドシートではこの自動挿入は起きません。=A5 と書けばそのままセル参照になります。
このため、スプレッドシートでは「GETPIVOTDATA を使いたいときは自分で書く」のが基本です。
具体的な使い方:1条件でデータを取り出す
サンプルデータで試してみる
次のような売上データから、「エリア」を行、「売上」を値にしたピボットテーブルを A1 に作ったとします。
| 日付 | エリア | カテゴリ | 売上 |
|---|---|---|---|
| 2026/04/01 | 東 | 文具 | 12,000 |
| 2026/04/01 | 西 | 家電 | 45,000 |
| 2026/04/02 | 東 | 家電 | 30,000 |
| … | … | … | … |
!_images/spreadsheet-getpivotdata-function/01_data_pivot-table-example.png
このピボットから「エリア=東の売上合計」を取り出すには、次のように書きます。
=GETPIVOTDATA("売上の合計", A1, "エリア", "東")
ポイントは次の2点です。
- 第1引数の
"売上の合計"はピボットに表示されている値フィールドの見出し名と一致させる。 - 第2引数の
A1はピボットの左上セル。ピボット内ならどのセルでも動きますが、左上を指定しておくのが事故は少ないです。
フィールド名・値名の指定のコツ
第3引数の "エリア" は、ピボットの行見出しの表示名ではなく、元データのヘッダー名を指定します。「ソースの列名」と覚えておきましょう。
また、値フィールドが複数ある場合は "SUM of 売上" のように集計方法込みの表示名が必要になるケースがあります。ピボット上部に表示されている見出し文字列をそのままコピーして貼り付けるのが確実です。
複数条件でデータを絞り込む方法
条件ペアを追加する書き方
複数条件で絞り込みたい場合は、「元の列」と「ピボットのアイテム」のペアを追加していきます。
=GETPIVOTDATA("売上の合計", A1, "エリア", "東", "カテゴリ", "文具")
これで「エリア=東 かつ カテゴリ=文具」の売上合計だけを取り出せます。条件はいくつでも追加できます。
複数条件の実例
月次レポートでよくあるパターンを紹介します。セル C2 にエリア、C3 にカテゴリを入力しておき、動的に集計値を切り替えたい場合です。
=GETPIVOTDATA("売上の合計", ピボット!A1, "エリア", C2, "カテゴリ", C3)
引数にセル参照を直接使えるのがスプレッドシート版 GETPIVOTDATA の便利なところです。Excel版ではセル参照が使えないため文字列連結が必要ですが、スプレッドシートではこのように素直に書けます。
別シートのピボットを参照する書き方
実務では、ピボットは別シートに置いて、レポートシートで値だけ参照するケースが多いはずです。
シート名を含む参照の構文
別シートの A1 にピボットがある場合は、シート名を ' で囲んで ! でつなぎます。
=GETPIVOTDATA("売上の合計", 'ピボット'!A1, "エリア", "東")
シート名に半角スペースや日本語、記号が含まれる場合は、必ずシングルクォートで囲むのが安全です。'売上ピボット 2026'!A1 のような書き方になります。
別ファイル(別スプレッドシート)への対応
GETPIVOTDATA は IMPORTRANGE と直接組み合わせることはできません。別スプレッドシートのピボットを参照したい場合は、まず IMPORTRANGE でデータを取り込み、取り込み先のシートでピボットを作り直してから GETPIVOTDATA を使う、という二段構えにします。
よくあるエラーと原因・対処法
#REF!エラーの原因と解決策
#REF! が出る主な原因は、ピボットが縮小されて参照セルが範囲外になったケースです。たとえばフィルターで全データが絞り込まれ、ピボットが A1 しか残らない状態で B5 を参照していると #REF! になります。
対処は、第2引数をピボットの左上セル(A1)に固定すること。左上セルはピボットがある限り必ず存在するため、安定して参照できます。
#N/Aエラーの原因と解決策
#N/A は、指定した条件に合致するデータがピボットに存在しない場合に出ます。IFERROR でラップして表示を整えるのが定番です。
=IFERROR(GETPIVOTDATA("売上の合計", A1, "エリア", "東"), "データなし")
条件に合致しない月でも、レポートが汚くなりません。
エラー一覧表(フィールド名の表記ゆれ・値名不一致・ピボット削除)
| エラー/症状 | 主な原因 | 対処法 |
|---|---|---|
#REF! | ピボットが縮小され参照セルが範囲外 | 第2引数を A1(左上)に固定 |
#REF! | ピボット自体が削除された | ピボットを復元、または数式側を修正 |
#N/A | 条件に合致するデータがない | IFERROR で代替値を返す |
#N/A | フィールド名/値名の表記ゆれ(スペース・全半角) | ピボット上の表示文字列をコピーして貼り付け |
| 値が違う | 値フィールド名が "SUM of 売上" のような集計表示名 | 正確な表示名に修正 |
| 値が違う | 「元の列」にピボット見出しを指定してしまった | 元データのヘッダー名に修正 |
エラーの大半はこの表のどれかに当てはまります。怪しい数式は、まず表示名を1文字ずつ見比べてみてください。
GETPIVOTDATA関数が自動入力されるのを止めたい場合
自動挿入を無効化する手順
Googleスプレッドシートには、そもそも GETPIVOTDATA の自動挿入機能がありません。ピボットのセルを = で参照すれば、普通のセル参照(例:=A5)になります。
そのため、自動挿入を解除する設定メニューも存在しません。Excelでは = でピボットのセルをクリックすると自動的に GETPIVOTDATA が挿入されますが、スプレッドシートでは発生しません。
Excelとスプレッドシートの違い
Excel版との違いを整理しておきます。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
= 参照時の自動挿入 | あり(設定で無効化可) | なし |
| 引数名 | field / item | original_column / pivot_item |
| 引数へのセル参照 | 不可(文字列連結が必要) | 可能(そのままセル参照OK) |
| 配列スピル | Excel 365で可能 | 不可(単一セル値のみ返す) |
Excel版の詳しい挙動や自動挿入の止め方については、ExcelのGETPIVOTDATA関数|自動挿入の消し方と使いこなし術 で別途まとめています。
GETPIVOTDATA関数とVLOOKUP・QUERY関数の使い分け
VLOOKUP・QUERYとの比較表
「ピボットの値を取るだけなら VLOOKUP や QUERY でもいいのでは?」という疑問に答えておきます。
| 関数 | 得意な場面 | 注意点 |
|---|---|---|
GETPIVOTDATA | 既にあるピボットから集計値を取り出す | ピボット必須・レイアウト変更に強い |
VLOOKUP | 一覧表から1つの値を横方向に引く | 集計には不向き・列位置変更で壊れやすい |
QUERY | 生データから条件で集計・抽出 | ピボット不要・学習コストやや高め |
SUMIFS | 生データから条件付き合計のみ | 合計以外の集計が必要なら不向き |
どのケースでGETPIVOTDATAを選ぶべきか
選定の目安は次の通りです。
- すでにピボットがある/作る予定で、そこから複数の値をレポートに取り出したい →
GETPIVOTDATA - ピボットを作らずに集計したい → QUERY関数 か SUMIFS関数
- 集計ではなく一覧引き →
VLOOKUP/XLOOKUP
ピボットテーブルそのものの作り方がまだあいまいな方は、Excelピボットテーブルの使い方|関数なしで集計・分析する完全ガイド を先に読んでおくと、この関数の便利さがよりクリアに感じられるはずです。
まとめ:ピボット集計値を安全に使い回す方法
GETPIVOTDATA 関数のポイントを振り返ります。
- ピボットのセルを直接
=で参照するとレイアウト変更や縮小で壊れる。GETPIVOTDATAは「意味で参照する」ため壊れにくい。 - 基本構文は
=GETPIVOTDATA(値の名前, ピボットのセル, 元の列, アイテム, ...)。第2引数は左上セル(A1)に固定するのが安全。 - 別シート参照は
'シート名'!A1の形。シート名にスペースや記号があるときはシングルクォートが必須。 - エラーは
#REF!(範囲外)と#N/A(条件不一致)が大半。IFERRORで代替値を返すとレポートがきれいにまとまる。 - スプレッドシートでは自動挿入がないため、Excel的な「勝手に入る問題」は発生しない。
月次レポートや経営ダッシュボードでピボットの値を何度も参照する場面では、この関数を知っているかどうかで作業時間もメンテナンス性もまったく違ってきます。まずは手元のピボットで、=GETPIVOTDATA("売上の合計", A1, "エリア", "東") を1行だけ試すところから始めてみてください。
