要点 —
PIVOTBY(行フィールド, 列フィールド, 値, 関数)は、2つ目の次元を加えたGROUPBYです。行にするフィールド、列にする フィールド、集計する値、そして集計方法を渡すと——=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM)——完全なクロス集計をスピルします:地域が 左端に縦、月が上端に横、グリッドに合計、両端に総計。これは数式としてのピボット テーブルです——更新不要でライブ再計算し、他の数式から参照できます。関数は名前で 渡します(SUM()ではなくSUM)。Excel 365(2024〜2025年に展開)が必要です。
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM) ' 地域(行)× 月(列)を合計
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, AVERAGE) ' 同じグリッドを平均
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, COUNT) ' 各セルの注文件数
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 1, , 1) ' 両軸に総計
誰もがピボットテーブルを知っています——挿入し、サイドパネルで設定し、データが動くたびに
更新する、ドラッグ操作のオブジェクトです。PIVOTBY は同じ行×列のグリッドを与えます——
ただしシートに生き、自分で更新する1つの数式として。GROUPBY
が「1つの軸で集計」に答えるなら、PIVOTBY は「1つの軸を、もう1つの軸にわたって集計」に
答えます:地域別かつ月別の売上、部門別かつ等級別の人数——おなじみの
マトリクスレポートです。
この記事でわかること
- 考え方の軸:
PIVOTBY= GROUPBY に列の次元を足したもの - 4つの必須引数、そして行と列が入れ替え可能でない理由
- 2つの
合計の深さ引数で両軸に合計を加える PIVOTBYが勝つ場面——そしてピボットテーブルがなお勝つ場面- 罠:フィールドの順序、
SUM()とSUM、そして#SPILL!
考え方の軸:2つ目の次元を持つ GROUPBY
GROUPBY はデータを1つの軸に沿って畳みます——グループの一覧と、その横に数字が1つずつ。
PIVOTBY は2つ目の軸を足し、その一覧をマトリクスに変えます。同じ集計が走りますが、
いまや一度に2方向へ分割されます。
=GROUPBY(C2:C1000, D2:D1000, SUM) ' 地域 -> 合計の1列
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM) ' 地域 × 月 -> 合計のグリッド
' └ 行 └ 列 └ 値 └ 方法
その追加の引数——列フィールド——が違いのすべてです。GROUPBY で知っていること(関数を
名前で渡す、スピルする、ライブ再計算する、引数で並べ替え・合計する)はそのまま引き継がれ
ます。PIVOTBY は新しく学ぶ概念ではありません。上端に何を走らせるかを言う、もう1つの
フィールドを足した GROUPBY です。
4つの必須引数
=PIVOTBY( 行フィールド , 列フィールド , 値 , 関数 )
' 左端に縦 上端に横 集計する値 集計方法
行フィールド— 左端を縦に並ぶもの(地域)。列フィールド— 上端を横に並ぶもの(月)。値— グリッドを埋める数値(売上)。関数— 集計方法、名前で(SUM)。
結果は、両軸が重複排除・並べ替え済みで、既定で総計の付いたラベル付きマトリクスです。4つの 引数で、「ピボットテーブルの挿入 → ドラッグ → 設定」の流れ全体を置き換えました。
行と列は入れ替え可能ではない
最もよくある PIVOTBY の間違いは、最初の2つの引数を入れ替えて、技術的には正しいが読めない
グリッドを作ってしまうことです——40個の月が縦に、4つの地域が横に、あるいはもっと悪いことに、
同じフィールドが両方に。
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM) ' 地域4つが縦、月12個が横 — 読める
=PIVOTBY(B2:B1000, C2:C1000, D2:D1000, SUM) ' 月12個が縦、地域4つが横 — 転置されている
レポートを読みやすく保つ経験則:重複の少ないフィールドを 列フィールド(上端に横)に、
多い方を 行フィールド(左端に縦)に置く。ページは下へは快適にスクロールしますが、横には
数列しか見えないからです。地域(少ない)を横に、日付や顧客(多い)を縦に。この2つを逆にしても
グリッドは計算されます——ただ間違った向きにスピルし、画面からはみ出します。
両軸の合計
ピボットテーブルは行の合計と列の合計を出します。PIVOTBY も同じで、2つの別々の
合計の深さ 引数を通じて——1つは行用、1つは列用です。
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 1, , 1) ' 総計の行 と 総計の列
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 0, , 0) ' どちらの軸にも合計なし
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 1, , 0) ' 行の合計のみ(合計列はあり、合計行はなし)
引数の順序は フィールドヘッダー、次に 行の合計の深さ、行の並べ替え順序、
列の合計の深さ——だから、あなたが気にする2つの合計は6番目と8番目に位置し、それがスキップの
カンマが見える理由です。1 は「総計を表示」、0 は「隠す」。片方の軸だけ合計するのは、
本物のピボットテーブルでは面倒ですが、PIVOTBY なら1桁の数字で済みます。
PIVOTBY が勝つ場面 — そしてピボットテーブルがなお勝つ場面
これは置き換えではなく、本物のトレードオフで、選び間違えるとどちらにしても時間を無駄に します。
PIVOTBY が勝つのは、レポートが生きて、つながり続けなければならないとき。 データが
変わった瞬間に再計算します——更新も、古びたキャッシュもなし——だから、数字が着くたびに
更新されるダッシュボードにうってつけの道具です。数式なので、他の数式がそのセルを参照でき、
バージョン管理に載り、テキストと同じように差分が取れます。設定を誤るパネルもありません。
*従来のピボットテーブルがなお勝つのは、探索したいとき。* 行と列のあいだでフィールドを
その場でドラッグし、スライサーやタイムラインを落とし込み、セルをダブルクリックして元の行に
ドリルスルーし、右クリックで日付を四半期にグループ化し、データモデルから数千万行を
ピボットする——どれも PIVOTBY の役割ではありません。PIVOTBY は、あなたがすでに決めた
1つのレポートを描きます。ピボットテーブルは、レポートがどうあるべきかを決めるための対話的な
道具です。
率直に言えば:レポートには PIVOTBY、探索にはピボットテーブル。レイアウトが固まっていて
最新であり続ける必要があるなら、数式を使う。何が重要かを見るためにまだデータをつついて
いるなら、オブジェクトを使う。
罠をまとめて
「動かない」PIVOTBY のほぼすべては、3つの失敗で説明できます。
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM()) ' 誤り — SUM() ではなく SUM を渡す
=PIVOTBY(C2:C1000, C2:C1000, D2:D1000, SUM) ' 誤り — 行と列に同じフィールド = 斜めの散らかり
=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM) ' グリッドの落ち先が埋まっていると #SPILL!
1つ目、関数 は裸の名前です——GROUPBY と同じ「SUM() ではなく SUM」ルール。2つ目、
行フィールド と 列フィールド は別のフィールドでなければなりません。同じものを渡すと
意味のない対角線になります。3つ目、PIVOTBY は長方形全体をスピルするので、グリッドの落ち先に
何かがあると #SPILL! になります——下と右の空間を空け、新しい月や地域がデータに現れると
グリッドが育つことを忘れずに。
判断
クロス集計が最新であり続け、シートの他の部分に供給される必要が生じた瞬間、PIVOTBY に
手を伸ばします——ダッシュボードの生きたマトリクス、他の数式がそのセルを読むグリッド。
ピボットテーブルは、手を動かす探索のために残します:スライサー、ドリルスルー、
ドラッグ操作、巨大なデータモデルのソース。いつもの失敗を防ぐ機械的なルール:カテゴリの少ない
方を横(列フィールド)に、多い方を縦(行フィールド)に。関数 は裸の名前。
そして2つの 合計の深さ 引数(行は6番目、列は8番目)が軸ごとに総計をオン・オフします。
引数の文法を一度覚えれば——列フィールドを足した GROUPBY に
すぎません——マトリクスレポートは作り直すオブジェクトではなく、自分を正しく保つ数式に
なります。
ExcelMaster の使いどころ
PIVOTBY の力は、位置指定でスキップのカンマだらけの引数の壁の向こうにあります——欲しい合計は
6番目と8番目にあり、違う方を設定しやすいのです。ExcelMaster に「地域別・月わたりの売上を、
両側の合計付きで」と伝えれば、=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 1, , 1) を
カンマまですべて置いて書きます。「行と列を入れ替えて」や「売上の合計ではなく注文の件数を
数えて」と頼めば、正しい引数を編集します。そしてグリッドが #SPILL! を投げたり、転置されて
出てきたりしても、どの引数を変えるべきかを説明します——11個ある位置のどれを外したか、推測する
必要はありません。
よくある質問
Excel の PIVOTBY は何をする関数ですか?
PIVOTBY(行フィールド, 列フィールド, 値, 関数) はクロス集計を作ります:1つのフィールドで
行方向に、もう1つのフィールドで列方向にデータをグループ化し、各セルの値を 関数 で集計し、
総計付きのラベル付きグリッドをスピルします。1つの数式で表したピボットテーブルで、データが
変わると自動で再計算します。
PIVOTBY は通常のピボットテーブルと何が違いますか?
PIVOTBY は生きた数式です——更新なしで即座に更新され、そのセルは他の数式から参照でき、
設定パネルもありません。従来のピボットテーブルは対話的なオブジェクトです:フィールドを
ドラッグし、スライサーを足し、元の行にドリルスルーし、数千万行のデータモデルのソースを
ピボットできます。最新であり続けなければならないレポートには PIVOTBY を、探索には
ピボットテーブルを使います。
PIVOTBY がエラーや変な対角線を返すのはなぜですか?
よくある原因は2つ。#CALC! のようなエラーが出るなら、おそらく SUM ではなく SUM() と
書いています——関数 引数は裸の名前です。結果が意味のない対角線に見えるなら、行フィールド
と 列フィールド に同じフィールドを渡しています。両者は別のフィールドでなければなりません。
#SPILL! は、何かがグリッドをふさいでいる合図です——下と右のセルを空けてください。
PIVOTBY で行と列の合計を加えるには?
2つの合計の深さ引数を使います:=PIVOTBY(C2:C1000, B2:B1000, D2:D1000, SUM, , 1, , 1)。1つ目の
1(6番目)は行に総計の列を、2つ目の 1(8番目)は列に総計の行を加えます。どちらかを 0 に
すると、その合計を隠します。空のカンマは フィールドヘッダー と2つの並べ替え引数を飛ばします。
PIVOTBY はどの Excel バージョンで使えますか?
PIVOTBY は Microsoft 365 の関数で、GROUPBY とともに
2024〜2025年に現在のチャネルへリリースされました。Excel 2021、2019、2016 にはありません。
=PIVOTBY(...) が #NAME? を返すなら、お使いのビルドにはまだ含まれていません。従来の
ピボットテーブルが代替策です。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-18。
関連ガイド: ExcelのGROUPBY関数 · GROUPBY・PIVOTBY 応用編 · ExcelのSUMIFS関数 · ExcelのFILTER関数 · ExcelのUNIQUE関数
