Excel スピルでクロス集計(データ更新が自動反映)を行う数式
この記事ではスピルでクロス集計を行う数式を紹介します。
この数式はクロス集計の元データが増えると、
クロス集計側のシートを編集しなくても、増えたデータが自動的に反映されます。
内容的にはピボットテーブルで出来ることと同様で、
そちらで十分であれば必ずしもスピルで実施する必要はありません。
この方法がピボットテーブルに比べて勝っている点は
そのため同じデータからクロス集計を複数行う場合や
データの更新し忘れが致命的な場合にはスピルの方が有利です。
注意点として最新の機能を使うためExcelのバージョンが古いと利用でない場合があります。
クロス集計のサンプル


手順(数式の説明)
クロス集計の縦方向をURLにしています。そのヘッダー行をA列に作成します。
LET関数なしの場合、A2セルに以下の数式を設定します。
=SORT(UNIQUE( FILTER(データ!B:B,(データ!B:B<>"")*(データ!B:B<>"URL")) ))

LET関数ありの場合、A2セルに以下の数式を設定します。
同じセル参照が多いため可能であればこちらが良いでしょう。
=LET( URL範囲,データ!B:B, SORT(UNIQUE( FILTER(URL範囲,(URL範囲<>"")*(URL範囲<>"URL")) )) )

FILTER関数はセル範囲から特定の条件を満たす行を抽出する関数です。
1つめの引数にセル範囲を指定し、2つめの引数に抽出条件を指定します。
条件の前半は空白セルの除外で、後半はヘッダー(項目)行の除外です
*は「かつ(AND)」の条件で両方を満たす必要があります。
(URL範囲<>"")*(URL範囲<>"URL")
これにより空白でもヘッダーでもない行を取得します。
UNIQUE関数はセル範囲の重複を除外する関数です。
SORT関数は指定範囲の並び替えを行う関数です。(並び替える必要がなければ不要です)
これにより縦方向(URL)のヘッダー列が完成します。
次に横方向の年月です。そのヘッダー行を1行めに作成します。
LET関数なしの場合、B1セルに以下の数式を設定します。
=TRANSPOSE(SORT(UNIQUE( FILTER(データ!A:A,(データ!A:A<>"")*(データ!A:A<>"月(年間)")) )))

LET関数ありの場合、B1セルに以下の数式を設定します。
=LET( 年月範囲,データ!A:A, TRANSPOSE(SORT(UNIQUE( FILTER(年月範囲,(年月範囲<>"")*(年月範囲<>"月(年間)")) ))) )

参照範囲と条件以外はURLの数式とほぼ同じですが、
最後にTRANSPOSE関数で縦方向から横方向に入れ替えています。
これにより横方向(年月)のヘッダー行が完成します。
最後に集計データの数式を作成します。B2セルに以下の数式を設定します。
=SUMIFS( データ!C:C, データ!A:A,B1#, データ!B:B,A2# )
B1#とA1#はセル単体ではなくスピル全体の範囲指定です。

これで完成です。A2、B1、B2の3セルのみの数式でクロス集計表が完成します。
もしデータシートに新しい年月やURLが追加されても
自動的にクロス集計表が拡充されます。(ただし手動集計にしていると自動ではなくなります)
SUMIFS関数で合計していますが、平均(AVERAGEIFS関数)、
最大(MAXIFS関数)、最小(MINIFS関数)、件数(COUNTIFS関数)でも同様に利用可能です。
Excelを効率的に習得したい方へ
当サイトの情報を電子書籍用に読み易く整理したコンテンツを
買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,400ページの情報量で
(実際のページ数はデバイスで変わります)
基本的な使い方、関数の解説(140種類)、
頻出テクニックと実用例(109種類)、
XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピルなど便利な新機能を紹介。
体系的に学びたい方は是非ご検討ください。
アップデートなどの更新事項があれば随時反映しています。
なお購入後に最新版をダウンロードするには
Amazonへの問い合わせが必要です。