ピボットテーブルで月次の集計表までは作れた。ところが、その値を別シートのレポートへ転記した途端、数字がズレたりエラーが出たりしていませんか。
Googleスプレッドシートでピボットのセルを直接参照すると、レイアウトが変わっただけで参照先が崩れます。原因に気づかないまま、違う数字を報告してしまうことも少なくありません。
そこで使いたいのが GETPIVOTDATA 関数です。この記事では、基本構文から複数条件・動的な切り替え・別シート参照・エラー対処までを整理しました。どれもコピペで試せる数式つきなので、手元のピボットで確かめながら読み進めてくださいね。
対象環境: Googleスプレッドシート(Web版)。Excelとは仕様が一部異なります(下記の比較表を参照)。
スプレッドシートのGETPIVOTDATA関数とは|直接参照との違い
GETPIVOTDATA(読み方:ゲット・ピボット・データ)は、ピボットテーブルから集計値を取り出す関数です。名前も「GET(取得する)+PIVOT DATA(ピボットのデータ)」という組み立て。まずは、なぜ普通のセル参照ではいけないのかを確認しておきましょう。
直接参照で起きる3つの問題(値ズレ・範囲外・条件ズレ)
ピボットの集計値を別シートで使うとき、最初は =ピボット!B5 のような直接参照を試す方が多いはず。しかし、この方法には次の3つの落とし穴があります。
- 値ズレ: 行や列の並び順を変えると、同じ
B5が別の集計値を指してしまう - 範囲外: フィルターで行が減ると、参照先がピボットの外に出て空欄になる
- 条件ズレ: フィルターを変えても数式は同じセルを見続け、別の値を拾ってしまう
直接参照は「いまたまたまその位置にある値」を取りに行っているだけです。意味のある参照になっていない、というのが根本的な問題なんですね。
GETPIVOTDATA関数が解決すること
GETPIVOTDATA は、セルの位置ではなく条件で値を取りに行く関数です。「エリアが東、カテゴリが文具の売上合計」のように、意味を指定して集計値を探します。
ピボットのレイアウトを変えても、対象の集計値がピボット内に残っていれば同じ値を返します。月次レポートや別シートのダッシュボードのように、同じ集計値を何度も参照する場面で力を発揮しますよ。
スプレッドシートには自動挿入機能がない
Excelでは、= を入力してピボットのセルをクリックすると GETPIVOTDATA が自動で入力されます。一方、Googleスプレッドシートにはこの自動挿入の機能がありません。ピボットのセルを = で参照すれば、そのまま =B5 のような普通のセル参照になります。
そのため「自動挿入をオフにする設定」も、スプレッドシートには存在しません。使いたいときは自分で数式を書く、と覚えておきましょう。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
= 参照時の自動挿入 | あり | なし |
| 自動挿入のオン・オフ設定 | あり(オプションで無効化) | なし(機能自体がない) |
| 引数の英語名 | data_field / pivot_table / field / item | value_name / any_pivot_table_cell / original_column / pivot_item |
| 条件ペアの上限 | 126組(公式ヘルプに記載) | 公式ヘルプに記載なし |
Excel版で自動挿入を止める方法は、ExcelのGETPIVOTDATA関数の使い方 で詳しく解説しています。Excelから移ってきた方は、あわせて読んでみてください。
GETPIVOTDATA関数の基本構文と使い方(1条件・複数条件)
ここからは書き方を見ていきます。引数は4種類ありますが、必須なのは最初の2つだけです。
構文と4つの引数の役割
=GETPIVOTDATA(値の名前, ピボットテーブルのセル, [元の列, ...], [ピボットのアイテム, ...])
| 引数 | 必須 | 内容 |
|---|---|---|
| 値の名前(value_name) | 必須 | ピボットに表示されている値フィールドの名前。二重引用符で囲むか、名前が入ったセルを指定 |
| ピボットテーブルのセル(any_pivot_table_cell) | 必須 | ピボット内の任意のセル。左上セル(例:A1)の指定が安全 |
| 元の列(original_column) | 任意 | 絞り込みに使う列名。ピボットの表示名ではなく、ソースデータの列見出しを書く |
| ピボットのアイテム(pivot_item) | 任意 | その列で絞り込む値(例:"東"、"文具") |
第3引数以降は「元の列」と「ピボットのアイテム」が必ずペアになります。条件を増やすときは、このペアを後ろに付け足していくイメージです。
第2引数は、ピボット内ならどのセルでも動きます。ただ、ピボットが縮むと端のセルは範囲外になりがち。ピボットの起点になる左上セルを指定しておくのが、いちばん事故の少ない書き方ですよ。
値フィールド名はピボットの表示どおりに書く
第1引数でつまずく人が多いのが、値フィールド名の書き方です。公式ヘルプでは、値フィールドが複数ある場合、ピボットに表示されている正確な名前を使うよう案内されています。
表示名は、表示言語や集計方法によって変わるのが厄介なところ。この記事では、値の見出しが「SUM of 売上」と表示されている前提で進めます。お使いの環境で表示が違う場合は、その文字列に置き換えてください。
確実なのは、ピボットの見出しセルの文字列をそのままコピーして貼り付ける方法。スペースの有無や全角・半角の違いがあると、正しく値を返しません。
TIP:見出しを分かりやすい名前に変えたとき
見出しを「合計売上」のような分かりやすい名前に変えた場合も、考え方は同じです。ピボットにいま表示されている文字列を第1引数へコピーし、値が返るかを必ず確かめましょう。返らないときは、元の「SUM of 売上」の表記でも試すと原因を切り分けやすいですよ。
サンプルデータとピボットの準備
ここでは、次の売上データを「売上データ」シートの A1:E9 に入力した状態で説明します。
| 日付 | エリア | カテゴリ | 売上 | 利益 |
|---|---|---|---|---|
| 2026/04/01 | 東 | 文具 | 12,000 | 3,000 |
| 2026/04/01 | 西 | 家電 | 45,000 | 9,000 |
| 2026/04/02 | 東 | 家電 | 30,000 | 6,000 |
| 2026/04/02 | 西 | 文具 | 8,000 | 2,000 |
| 2026/04/03 | 東 | 文具 | 15,000 | 4,000 |
| 2026/04/03 | 西 | 家電 | 25,000 | 5,000 |
| 2026/04/04 | 東 | 家電 | 20,000 | 4,000 |
| 2026/04/04 | 西 | 文具 | 10,000 | 3,000 |
このデータから、「行」にエリア、「値」に売上の合計を設定したピボットテーブルを作ります。置き場所は、「ピボット」という名前のシートの A1 です。
| エリア | SUM of 売上 |
|---|---|
| 東 | 77,000 |
| 西 | 88,000 |
| 総計 | 165,000 |
ピボットテーブル自体の作り方は、スプレッドシートのピボットテーブルの作り方 で手順を追って解説しています。まだ作ったことがない方は、先に準備しておくとスムーズですよ。
1条件の基本例
このピボットから「エリアが東の売上合計」を取り出してみます。
=GETPIVOTDATA("SUM of 売上", 'ピボット'!A1, "エリア", "東")
結果は 77,000 です。第3引数の "エリア" はソースデータの列見出しで、第4引数の "東" がその列で絞り込む値にあたります。
条件のペアを省略した場合に返るのは、ピボット全体の総計。
=GETPIVOTDATA("SUM of 売上", 'ピボット'!A1)
この例なら結果は 165,000 になります。レポートの「全体合計」欄に使うと便利ですよ。
条件ペアを追加して複数条件で絞り込む
次に、ピボットテーブル エディタで「列」にカテゴリを追加してみましょう。エリア×カテゴリのクロス集計表に変わります。
| エリア | 家電 | 文具 | 総計 |
|---|---|---|---|
| 東 | 50,000 | 27,000 | 77,000 |
| 西 | 70,000 | 18,000 | 88,000 |
| 総計 | 120,000 | 45,000 | 165,000 |
「エリアが東、かつカテゴリが文具」の売上を取り出すには、条件ペアを1組追加します。
=GETPIVOTDATA("SUM of 売上", 'ピボット'!A1, "エリア", "東", "カテゴリ", "文具")
結果は 27,000 です。サンプルデータの東×文具の行(12,000と15,000)を足した値と一致しますね。
行と列を入れ替えるなどレイアウトを変えても、この数式は同じ 27,000 を返します。位置ではなく、条件で値を探しているからです。
条件をさらに増やす場合も、「列名, 値」のペアを後ろに足すだけ。なお、条件に使う列はピボットの行か列に追加しておくのが前提なので、そこだけ気をつけてくださいね。
応用:セル参照での動的切替と別シート・別ファイルの参照
ここからが、実務でいちばん役立つ応用編です。条件や指標を数式に直接書かず、セルから読み込むようにしてみましょう。
条件をセル参照にする基本パターン
「レポート」シートの C2 にエリア、C3 にカテゴリを入力しておきます。数式側では、条件の値を文字列ではなくセル参照で渡すのがポイント。
=GETPIVOTDATA("SUM of 売上", 'ピボット'!A1, "エリア", C2, "カテゴリ", C3)
C2 に「西」、C3 に「家電」と入れると、結果は 70,000 に変わります。数式を書き換えずに、入力セルだけで集計値を切り替えられるわけです。
入力ミスを防ぐなら、C2 と C3 をプルダウンにしておくと安心。「データ」メニューの「データの入力規則」から、「東」「西」などの選択肢を設定できます。
値フィールド名までセル参照にする応用(簡易ダッシュボード)
第1引数の値フィールド名も、セル参照で指定できることが公式ヘルプに明記されています。これを使えば、「売上を見るか利益を見るか」までセルで切り替えられます。
準備として、ピボットテーブル エディタの「値」に利益も追加しましょう。値の見出しは「SUM of 売上」と「SUM of 利益」の2つになります。レポートシートの入力セルは、次のように配置します。
| セル | 役割 | 入力例 |
|---|---|---|
| B1 | 指標(値フィールド名) | SUM of 利益 |
| C2 | エリア | 西 |
| C3 | カテゴリ | 家電 |
=GETPIVOTDATA(B1, 'ピボット'!A1, "エリア", C2, "カテゴリ", C3)
この例の結果は 14,000 です。西×家電の利益(9,000と5,000)の合計ですね。B1 を「SUM of 売上」に切り替えれば、同じ数式が 70,000 を返します。
B1 を「SUM of 売上」「SUM of 利益」のプルダウンにしましょう。指標と条件を選ぶだけの簡易ダッシュボードが完成します。
見出しが「SUM of ○○」の形でそろっているなら、文字列を連結する手もあります。& は文字列をつなげる演算子です。
=GETPIVOTDATA("SUM of "&B1, 'ピボット'!A1, "エリア", C2, "カテゴリ", C3)
この書き方なら、B1 には「利益」とだけ入れれば済みます。プルダウンの選択肢が短くなり、見た目もすっきりしますよ。
一覧表にまとめる書き方
エリア×カテゴリの表を丸ごと作りたいときは、絶対参照を組み合わせます。絶対参照とは、$ を付けてコピーしても行や列がずれないように固定する書き方です。
A5:A6 にエリア(東・西)、B4:C4 にカテゴリ(家電・文具)を並べます。B5 に次の数式を入れて、C6 までコピーしてください。
=GETPIVOTDATA($B$1, 'ピボット'!$A$1, "エリア", $A5, "カテゴリ", B$4)
B1 が「SUM of 売上」なら、次のような表になります。
| 家電 | 文具 | |
|---|---|---|
| 東 | 50,000 | 27,000 |
| 西 | 70,000 | 18,000 |
B1 を「SUM of 利益」に変えると、表全体が利益の数字に切り替わります。会議中に「利益ベースだとどう?」と聞かれても、すぐに見せられますよ。
別シートのピボットをシート名付きで参照する
別シートのピボットを指定するときは、第2引数を「シート名!セル」の形で書きます。ここまでの例の 'ピボット'!A1 がこの形で、シート名はシングルクォート(')で囲むのが安全です。
特に、シート名に半角スペースや記号が含まれる場合はクォートが必須。ピボットを新しいシートに作ると、「ピボット テーブル 1」のようなスペース入りの名前になることがあります。
=GETPIVOTDATA("SUM of 売上", 'ピボット テーブル 1'!A1, "エリア", "東")
日本語だけのシート名でも、クォートを付けておけば書き分けに迷いません。迷ったらクォートを付ける、と覚えておいてください。
別スプレッドシートはIMPORTRANGEとの二段構えで
別ファイル(別のスプレッドシート)にあるピボットは、GETPIVOTDATA から直接指定できない前提で組むのが確実です。そこで使うのが IMPORTRANGE との二段構え。IMPORTRANGE は、別のスプレッドシートから範囲を読み込む関数です。
手順は次の4ステップです。
- レポート側のファイルに、取り込み用のシートを作る
IMPORTRANGEで、元ファイルの売上データを読み込む- 取り込んだ範囲から、ピボットテーブルを作り直す
- 作り直したピボットを
GETPIVOTDATAで参照する
=IMPORTRANGE("元ファイルのURL", "売上データ!A1:E9")
初めて接続するときは、セルに表示される「アクセスを許可」を押す必要があります。許可するまでデータは読み込まれません。
データが増えていくなら、IMPORTRANGE とピボットの範囲を A1:E のように行番号なしで指定しましょう。追加された行も自動で集計に入ります。ひと手間かかりますが、ファイルをまたいだレポートでも安定して集計値を取り出せますよ。
GETPIVOTDATA関数のよくあるエラーと対処法
エラーの表示コードは、状況によって変わることがあります。ここでは表示よりも「原因」で分けて整理していきます。
ピボットの範囲外・削除によるエラー(#REF! など)
公式ヘルプによると、ピボットが縮小されて第2引数のセルが範囲から外れると、エラーが返ります。実務でよく見かけるのは #REF! の表示でしょう。
たとえば、行にエリアだけを置いたピボットで、第2引数に 'ピボット'!B4 を指定していたとします。フィルターで東だけに絞ると行が減り、B4 がピボットの外に出てエラーになります。
対処は、第2引数をピボットの左上セル(A1)にすること。ピボットそのものを削除した場合もエラーになるので、作り直すか参照先を修正しましょう。
条件に合うデータがないエラー(#N/A など)はIFERRORで
指定した条件に一致するデータがピボット内にないと、エラーになります。解説記事では #N/A として紹介されることが多いエラーです。原因として多いのは、次の4つ。
- その条件のデータが、元データに本当に存在しない
- 条件の値に余計なスペースや、全角・半角の違いがある
- 「元の列」にピボット側の表示名を書いている(正しくはソースデータの列見出し)
- 第1引数の値フィールド名が、ピボットの表示と一致していない
データが存在しないケースは、IFERROR で表示を整えるのが定番です。IFERROR は、数式がエラーになったときに代わりの値を返す関数です。
=IFERROR(GETPIVOTDATA("SUM of 売上", 'ピボット'!A1, "エリア", C2, "カテゴリ", C3), 0)
データのない組み合わせでは 0 が表示され、レポートの合計計算も止まりません。「データなし」と文字で出したい場合は、最後の 0 を "データなし" に変えてください。
ただし IFERROR は、スペルミスによるエラーまで隠してしまいます。作った直後は外した状態で動作を確かめ、正しい値が出てから包むのがおすすめですよ。
条件ペアの数が合わないときのエラー
第3引数以降は、「元の列」と「アイテム」のペアで指定するルールです。片方だけが余ると引数の数が合わず、数式はエラーになります。
=GETPIVOTDATA("SUM of 売上", 'ピボット'!A1, "エリア", "東", "カテゴリ")
この例では、最後の "カテゴリ" に対応するアイテムがありません。条件を足した直後にエラーが出たら、表示されたコードにかかわらず、第3引数以降の数が偶数かを数えてみてください。
セル参照で条件を渡している場合は、参照先のセルが空欄になっていないかも確認しましょう。プルダウンの選択前に数式が動いていると、意図しない結果になりやすいですよ。
エラー・症状の一覧表
| 症状 | 主な原因 | 対処法 |
|---|---|---|
| エラー(#REF! など) | 第2引数のセルがピボットの範囲外 | 第2引数をピボットの左上セルにする |
| エラー(#REF! など) | ピボット自体を削除した | ピボットを作り直す・参照先を修正する |
| エラー(#N/A など) | 条件に合うデータが存在しない | IFERROR で0や「データなし」を表示 |
| エラー | 値フィールド名が表示と一致しない | ピボットの見出し文字列をコピーして貼る |
| エラー | 「元の列」にピボット側の表示名を指定 | ソースデータの列見出しに直す |
| エラー | 条件の値にスペースや全角・半角のゆれ | 元データと表記をそろえる |
| エラー | 条件ペアの片方が足りない | 列名とアイテムを必ずペアにする |
エラーの多くは、この表のどれかに当てはまります。怪しい数式は、まず名前を1文字ずつ見比べてみてくださいね。
GETPIVOTDATA関数とVLOOKUP・QUERY・SUMIFSの使い分け
「ピボットの値を取るだけなら、ほかの関数でもいいのでは?」と感じた方もいるでしょう。よく比べられる関数との違いを整理しておきます。
比較表(得意な場面・注意点)
| 関数 | 得意な場面 | 注意点 |
|---|---|---|
GETPIVOTDATA | 既存のピボットから集計値を取り出す | ピボットテーブルが必要 |
VLOOKUP | 一覧表から1つの値を引く | 集計はできない。列番号で指定するため列の追加でズレやすい |
QUERY | 生データから条件で集計・抽出する | SQLに似た書き方を覚える必要がある |
SUMIFS | 生データから条件付きの合計を出す | 平均や件数は別の関数が必要 |
たとえば「東×文具の売上」は、SUMIFS でも同じ値を出せます。売上データシートのB列がエリア、C列がカテゴリ、D列が売上です。
=SUMIFS('売上データ'!D:D, '売上データ'!B:B, "東", '売上データ'!C:C, "文具")
結果は GETPIVOTDATA の例と同じ 27,000 になります。ピボットが要らない反面、条件の列を1つずつ範囲で指定する手間はかかります。
どのケースでGETPIVOTDATAを選ぶべきか
選び方の目安は、次のとおり。
- すでにピボットがあり、複数の値をレポートへ取り出したい →
GETPIVOTDATA - ピボットを作らずに、条件付きで合計したい → SUMIFS関数
- ピボットを作らずに、集計表ごと作りたい → QUERY関数
- 集計ではなく、一覧表から値を引きたい →
VLOOKUP
ピボットで集計を確認している表なら、GETPIVOTDATA が自然な選択です。表示と同じ集計値を参照できるので、「どっちの数字が正しいの?」という確認の手間も減らせますよ。
よくある質問とまとめ
Q. GETPIVOTDATAとVLOOKUPはどう使い分けますか?
GETPIVOTDATAは、既存のピボットテーブルから集計値を条件で取り出す関数です。VLOOKUPは一覧表から値を探す関数で、集計はできません。ピボットの数字を転記するならGETPIVOTDATA、明細表から値を引くならVLOOKUPを選びましょう。
Q. GETPIVOTDATAで#REF!エラーが出ます
第2引数のセルが、ピボットの範囲外になっている可能性があります。ピボットの縮小やフィルターの変更で起きやすい現象です。第2引数をピボットの左上セル(例:A1)に変えてみてください。
Q. 別シートのピボットはどう参照しますか?
第2引数を「’シート名’!A1」のように、シングルクォートで囲んだシート名つきで書きます。別ファイルの場合は、IMPORTRANGEで取り込んでからピボットを作り直しましょう。
Q. 第1引数の値フィールド名には何を書けばいいですか?
ピボットの値の見出しに表示されている文字列を、そのままコピーして使うのが確実です。「SUM of 売上」のように、集計方法を含む名前になっていることがあります。見出しの名前を変えた場合も、表示中の文字列で値が返るかを確かめてください。
Q. 条件を追加したらエラーになりました
表示されたエラーの種類にかかわらず、まず第3引数以降が「列名, アイテム」のペアになっているかを数えてください。ペアの片方が足りないと、引数の数が合わずにエラーになります。ペアがそろっているなら、列名やアイテムの表記ゆれを疑いましょう。
まとめ
GETPIVOTDATA 関数のポイントを振り返ります。
- ピボットのセルを直接参照すると、レイアウト変更やフィルターで値がズレやすい
GETPIVOTDATAは位置ではなく条件で値を探すため、レイアウトを変えても崩れにくい- 第2引数はピボットの左上セル、第1引数はピボットに表示中の値フィールド名を使う
- 条件も第1引数もセル参照にでき、プルダウンと組み合わせれば簡易ダッシュボードになる
- 別シートは
'シート名'!A1の形で書き、別ファイルはIMPORTRANGEで取り込んでから作り直す - エラーの主な原因は、範囲外・条件の不一致・ペアの数の不足。表示は
IFERRORで整えられる
月次レポートでピボットの値を何度も参照するなら、この関数を知っているかどうかでメンテナンスの手間が大きく変わります。まずは手元のピボットで、1条件の数式を1行書くところから試してみてください。
