Googleスプレッドシートで年代別の集計を行う方法:ピボットテーブル or 数式

「顧客の年代分布を分析したい」「アンケート結果を年代別に整理したい」
など、年齢データから 「10代」「20代」などの年代ごとの集計 をしたいと思うことはありませんか?
ですが、手作業で一つ一つカウントするとなると時間もかかりますし、ミスも起きやすくなります。
そんなとき、以下の方法で効率よく集計することが可能です。
- ピボットテーブルを使う方法
- 数式(FLOOR関数+QUERY関数 )を使う方法
本記事では、この 2つの方法 をご紹介します。

ピボットテーブルで年代別に集計

- ピボットテーブルならカンタンに集計が可能
- 年齢をグループ化して年代別に集計
ピボットテーブルを使うと、主にクリック操作で年代別にデータを整理できるためカンタンです。
ピボットテーブルを使った集計手順

集計したいデータを選択します。

上部メニューから「挿入」ー「ピボットテーブル」を選択します。

データ範囲と、ピボットテーブルの挿入先を指定して、「作成」をクリックします。

画面右側に表示されるピボットエディタで設定をします。
- 行:「年齢」をドラッグ&ドロップで配置します。
- 値:「年齢」をドラッグ&ドロップで配置します。
- 値の集計:集計方法を「COUNTA」に設定します。

この時点では年代別ではなく、各年齢ごとの数がカウントされています。
ここから、年代別にグループ化をします。

年齢の列にある任意のセルを右クリックします。
「ピボットグループのルールを作成」を選択します。

0~100歳までを対象として、年代別にする場合は以下に設定します。
- 最小値:0
- 最大値:100
- 間隔のサイズ:10
年齢を5歳ごとに分ける場合は、間隔のサイズを「5」にします。

これで 各年代ごとにグループ化され、その人数がカウントされます。
数式で年代別に集計

- FLOOR関数で年代ごとに分類(例:C列)
- QUERY関数で年代別に集計(例:F,G列)
ピボットテーブルを使った方法の方がシンプルですが、数式を使って年代別に集計することも可能です。
QUERY関数を使った集計では、複数の条件を組み合わせたり、別ファイルからデータを参照して集計したい時などに便利です。
(例では集計のみのシンプルな数式としています。)
数式で年代ごとに集計する手順

年齢の列(B列)を参照して、その横の列に以下の数式を入力します。
今回の例ではC2セルに数式を入力し、各年齢を年代に分類しています。
年代ごとに分類する数式(B列の年齢を参照する場合)
=ARRAYFORMULA(IF(B2:B="", "", IF(B2:B<10, "その他", FLOOR(B2:B,10) & "代")))
数式の説明
ARRAYFORMULA(…)
:列全体に数式を適用します。IF(B2:B="", "", …)
:B列(年齢)が空欄なら、そのまま空欄にします。IF(B2:B<10, "その他", …)
:年齢が10歳未満なら「その他」と表示します。FLOOR(B2:B,10) & "代"
:10の倍数で切り捨てた数値に「代」をつけます。(例: 23 → 20代, 35 → 30代)

任意のセルに、以下の数式を入力します。
年代ごとの人数を集計する数式
=QUERY(C:C, "SELECT C, COUNT(C) WHERE C IS NOT NULL GROUP BY C ORDER BY C ASC", 1)
数式の説明
QUERY(C:C, "…", 1)
:C列のデータを使って集計表を作成します。SELECT C, COUNT(C)
:C列の同じ値(年代)ごとに、データの数を数えます。WHERE C IS NOT NULL
:空白のセルを除外し、データがある行だけを集計対象にします。GROUP BY C
:同じ年代ごとにグループ分けして、人数を集計します。ORDER BY C ASC
:年代を小さい順(10代 → 20代 → 30代)に並べます。

今回の例では、C列にFLOOR関数を使って年代ごとに分類した結果 を表示し、F列とG列にはQUERY関数で年代別の集計結果 を表示しています。
まとめ
今回は年代ごとの集計を行う方法を2つご紹介しました。
- ピボットテーブルを使う方法はクリック操作で集計できるためカンタン
- 数式を使う方法はより柔軟な集計をしたい時に便利
どちらも最初の設定は必要ですが、一度設定すれば手作業での集計が不要になり、効率よくデータを管理できます。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント