メインコンテンツへスキップ
見出し画像

[EXCEL] 生年月日一覧から年代別集計を出す ~公務員に必要なエクセルのスキル 集計実践編~


    ▶目次 > 集計 > 集計実践

    生年月日のデータを元に、年代別人数を集計します。(「こんなの、生成AIで出来るよ」って言われるかもしれませんが)
    以下、常体にて失礼。
    *2026/2/2 PDF版を掲載しました

    [想定]

    「あ」~「え」の5団体の一覧表(Copilotにて作成)から、「団体別」の「年代構成」を集計する。
    *データは団体順に並んでいる必要はない。
    *個人情報取得の取得の是非は置いておく。

    画像

    [手順]

    ① 年齢を出す(DATEDIF関数)
    ② 年代を出す(INT関数)
    ③ 団体×年代別に集計する(COUNTIFS関数)

    [手順1] 事前準備

    データを集計できる数値になおしておく、

    ① 基準日欄の作成

    冒頭に空白行を2行作る。
    A列選択 ⇒ 右クリック ⇒ 挿入
    又は A列選択 ⇒ Ctrl + Shift + ; 等

    ②「基準日」を入れる

    生年月日の上に「基準日」を入れる欄を作り、基準日を入れる。
     右図の場合 R8年3月31日
    *基準年はこの場所以外も可。

    画像
    基準日は4/1より、年度末日(3/31)がよい
    (2026/1/13追記)3/31の理由はこちら

    ③ 満年齢を出す

     (上図参照)
    E列を「年齢」として、E4セルに次の数式を入れる。
    =DATEDIF(D4-1,$D$1,"Y") 
    *D1をクリックしたら、F4を押し「絶対参照」にしておく。
    数式の意味: D4(生年月日)の前日(D4-1)を起算日とし、D1(基準日)までの満年数(“Y”)を出す。
    ★重要★満年齢は誕生日前日に到達するので、生年月日-1とする(生年月日を起算日とするため)
    参考記事:[Excel]誕生日の前日に年を取るのはなんで?、と思った方へ(WEB記事やエクセル本は不正確なものが多いので注意)

    ④ 数式のコピー

    E3セルの右下にカーソルを当て、「+」が出たらダブルクリック
    ⇒ 下のセル全てに数式が入る
    (フラッシュフィル機能による)

    ⑤ コピーした数式の確認

    E5セルを選択 ⇒ Alt ⇒ M ⇒ P で
    「参照元のトレース」を表示する
    ⇒ 下図のように出れば問題ない
    ⇒ ならなければE4の数式を修正
    ⑥ OKなら Alt ⇒ A ⇒ Aで矢印を消す。

    画像
    ↑矢印の発点がD1(基準日の日付セル)でなければ、
    E4セルの数式がおかしいので修正する。
    (D1に「$」が付いていない)

    ⑦ 年代を出す

    F列を「年代」として、F4に次の式を入れる。 =INT(E4/10)*10
    *数式の説明: 満年齢(E4)を10で割り、INT関数で小数点以下を切り捨て、10を掛けて年代を出す。
    *四捨五入だと、46歳は50代になるので切り捨てる。
     例:46歳なら、46÷10で4.6、INTで4になり(少数点以下切り捨て)、10を掛けて40になる。
    *=LEFT(E4,1)*10では10歳未満が計算できない。

    ⑧ 数式のコピー

    F4セルの右下にカーソルを合わせ、「+」が出たらダブルクリック
    ⑨ 下のセルに数式がコピーされ、年代が表示される。

    画像

    [手順2] 集計する

    ① 集計表作成

    団体名×年代の集計表を作る(本来は別シートに作る。下例では説明用に同一シート上に作成)
    *年代は数値だけにする(「20代」としない。後で「セルの書式設定」で「代」を付ける)。

    画像

    ② 数式入力

    J4欄に次の数式を入れる  =COUNTIFS($B:$B,$I4,$F:$F,J$3)
    数式の意味:B列(団体)にI4セル(「あ」)と同じデータがあり、かつ、F列(年代)にJ3セル(20代)と同じデータがあるものの数を数えて表示する(=結果を返す)。

    画像

     
    【COUTIFS関数】
    特定の条件に合致するセルの数を数える
    =COUNTIFS(検索条件範囲①,検索条件①,検索条件範囲②,検索条件②・・・)
    *対象範囲を選択したら「, 」を入れて、検索条件のセルをクリック。「,」を入れて次の検索条件範囲を選択・・・を繰り返す(最後のカッコは不要。Enter押下で自動で付く)
    *検索条件範囲は列全体を選択できる(データ数が多い場合は不適。動作が重くなる)
    *検索条件は1つでも構わない(従って、COUNTIF関数を使う必要はない)。

    注意:他セルへコピーしても変わらないよう、B列(団体)、F列(年代)には「$」が付く「絶対参照」にする。
    *I4セルは列番号が変わらないよう、I (アイ)のみ「$」を付ける(行番号は変わるように「$」を付けない)。
    *J3セルは行番号は変わらないよう、 3 のみ「$」を付ける(列番号は変わるように「$」を付けない)。

    【絶対参照と相対参照】
    ・行または列に「$」が付くと、コピーしても変わらない(行・列ともについているとセル番地は変わらない
    ・「$」はF4を押すことで付き方が変わる。例 A1セルの場合:A1 ⇒ $ A $ 1 ⇒ A$1 ⇒ $A1 ⇒ A1 ⇒ 繰り返し

    ③ 数式のコピー

    J3セルをコピー(Ctrl+C)し、他のセルを範囲指定(Shift+↓→)⇒貼り付け(Ctrl+V)

    画像

    ④ 合計を出す

    上の③から続けて、計の行・列を選択(Shift+↓→)し、Altl + Shift + =(同時押し)で縦横計が出る。

    画像

    画像
    Alt + Shift + = (同時押し)
    画像

    画像

    ⑤ 数式の確認

    J3セル以外(下図では、O8)を選択し、Alt ⇒ M ⇒ P で「参照元のトレース」を表示する。
    *下図のように出ていれば問題ない。誤っていたらJ3セルを修正して再度コピーする。

    画像

    ⑥ 検算

    データに欠損や不備があると正しい集計にならない。
    「団体」「年代」それぞれで集計を出し、集計表の計と合っているか確認する。 
    *データが多い場合は =計のセル=検算のセル 等を使う(結果が「TURE」なら合致、「FALSE」なら相違)。

    「団体」の計を出す数式(「あ」の場合) =COUNTIFS(B:B,I4)
    *縦にコピーするので絶対参照は不要

    「年代」の計を出す数式(「20」の場合) =COUNTIFS($F:$F,J3) 
    *横にコピーうするので絶対参照は必要

    画像

    [手順3]集計表を整える

    ① 項目の「年代」の数値に「代」を付ける

    「セルの書式設定」(Ctlr+1) ⇒「表示形式」⇒「ユーザー定義」⇒「種類」欄 ⇒ #代 と入れ、OK押下
    *「#」に年代の数値が入る。
    *必須ではないが「代」があった方が分かりやすい。
    *セル内データは数値のまま、表示は「20代」となる。
    *セルに「20代」等と入れると、一覧表の「年代」との突合が出来なくなる。

    画像
    画像
    画像
    項目には「20代」で表示されいてるが、
    上の数式バーには「20」と出ており、
    セル内のデータは「20」と分かる。

    ②「0」を表示しない場合

    表内(合計欄を除く)を選択し、「セルの書式設定」(Ctrl+1)を開く。
    「表示形式」⇒「ユーザー定義」⇒「種類」欄に [#,###」と入力⇒OK⇒「0」が表示されない。
    *個別のセルは「0」を表示せず、合計欄のみ「0」を表示させる。合計欄にも「0」が入っていないと、データが入っていない(未入力/入力漏れ)と取られる場合があるため「計」「合計」欄は「0」であることを示すため「0」を表示する。ただし、「0」が多数となる場合は見づらいので表示しないことも一案。

    画像
    画像


    画像
    70代の「0」が消えている。


    以上

    ・2026/2/2 PDF版を掲載しました
    ・2026/1/13追記)基準日は3/31がいい理由を掲載しました


    あなたへのおすすめ