dポイントプレゼントキャンペーン実施中!

表題の通り質問です。

社員の年齢をDATE関数で求めて、それを年齢別で集計したいと思っています。
その場合どのように関数を使えばうまく集計できますか?

=DATEDIF(F3,TODAY(),"Y")&"才"&DATEDIF(F3,TODAY(),"YM")&"ヶ月"
なお年齢を求めるのに使用したDATE関数はこちらです。
求めたいのは、45歳以下は何人か、45歳以上は何人かです。

COUNTIFを使用してカウントしようと思ったのですが、うまくカウントできませんでした。

質問者からの補足コメント

  • うーん・・・

    色々やってる間に、上司から
    さらに45才~49歳の人の集計と、更にそこから女性が何人いるのかも集計しておいてという後出し指示がでてまいりました。
    D列に性別の記載が、男、女とある場合はCOUNTIF関数がベストかな?と思って、先ほど回答いただいたものを参考にやってみたところなんだかうまくいきません。。。明らかに人数が増えてます。。。

    先ほど同様、G列に年齢、D列に男、女の記載がある場合って=COUNTIFS($D$3:$D$40,"女",$G$3:$G$40,"<45才")-COUNTIFS($D$3:$D$40,"女",$G$3:$G$40,">=50才")
    こちらの関数だとなんか色々加算されてしまって正しい数が集計できません…

      補足日時:2024/06/25 15:18
  • HAPPY

    すみません。上記補足自己解決しました!
    単純に数式が間違ってました…

    回答していただいた皆様ありがとうございました!!

      補足日時:2024/06/25 15:22
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (4件)

No2です。



計算の意味を理解せずにいろいろ撫でまわしたところで、「当たり」が出る確率はほとんどありません。
算出内容も変わっているようですが、内容に応じてそれを算出する方法も変わってきます。

No2にも書きましたが、「○才◇ヶ月」のような表示から年齢範囲を判別するのは面倒なだけです。(できないことはないですが・・)
似た様なものを表示したからといって、それを利用するのが最適かと言えば、この場合は、元データの誕生日から算出する方が遥かに簡単にできるという事です。

まずは、「求める算出結果」、「表示したい内容」を整理して、それぞれに応じた算出方法を考えるのが良いでしょう。
一気に結果を求める計算式は式が複雑になりがちですので、他の方の回答にもあるように、作業列などに一時結果を算出して、順次結果を求めるような仕組みにすればわかりやすくなるでしょう。
    • good
    • 0

一つの複合関数で一気に求めようとすると、なかなかできないので、


手順通りに個々に求めていくと、すんなり求まります。

1) 年齢を求める基準日のセルを用意する。
2) 人数を求める閾値年齢のセルも用意する。
2) 各人の満年齢を求める。 =DATEDIF(誕生日,基準日,"Y")
3) 年齢ごとの人数を求める。
 =COUNTIF(満年齢の範囲、"<=(閾値年齢)") …閾値年齢以下
 =COUNTIF(満年齢の範囲、">(閾値年齢)")  …閾値年齢超
    • good
    • 0

こんにちは



>求めたいのは、45歳以下は何人か、45歳以上は何人かです。
であるなら、年齢だけわかれば良いので、
 DATEDIF(F3,TODAY(),"Y")
だけを参照することで計算できるはずです。

レイアウトがどうなっているのかわかりませんけれど・・
仮に、F3:F50 の範囲にシリアル値で誕生日が入力されているとして、45歳以下の人数を求めるのなら、
 =SUMPRODUCT((DATEDIF(F3:F50,TODAY(),"Y")<=45)*1)
の式を入力することで、今日時点での該当人数を算出できます。


>COUNTIFを使用してカウントしようと思ったのですが、
>うまくカウントできませんでした。
ご提示の式で、一旦年齢を求めて、それを元に人数をカウントしたいのであれば、年齢算出式を
 =DATEDIF(F3,TODAY(),"Y")
のようにして、COUNTIFでカウントすれば可能です。
"才"の単位を表示したければ、書式設定で行えばよいでしょう。

ご提示の式では、年齢を文字列化して「○才◇ヶ月」という結果にしていますが、COUNTIFなどで範囲を算出しようとするにはわざわざ面倒な形式にしています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
書類を提出するにあたり、何才何か月なのかまでの資料が必要とのことでそのような面倒な形式になっています。書式設定で〇才〇か月と表示しようとするとうまくいかなかったので…

参照用の行を非表示で作ればいいのかな?とは思いましたが、もしこのままできるなら参照行を作成する手間が省けるかと思い質問をしました。

お礼日時:2024/06/25 15:16

できたどおおおおおおおお!



社員の年齢を計算して、それを年齢別に集計する方法について説明します。年齢の計算には `DATEDIF` 関数を使用し、その結果を基に `COUNTIF` 関数を使って年齢別にカウントします。

以下に手順を示します:

1. **年齢を計算する**:
まず、各社員の生年月日が入力されているセル (例えば F3) から年齢を計算します。例えば、セル G3 に年齢を表示する場合、次のように入力します。

```excel
=DATEDIF(F3, TODAY(), "Y")
```

これで、セル G3 に社員の年齢が表示されます。

2. **年齢の範囲を設定する**:
次に、年齢が計算された列 (例: G列) に対して、年齢別にカウントするための範囲を設定します。

3. **年齢を45歳以下と45歳以上にカウントする**:
COUNTIF関数を使用して、45歳以下と45歳以上の社員数をカウントします。例えば、年齢データが G3 から G100 までにあると仮定します。

- 45歳以下のカウント:
```excel
=COUNTIF(G3:G100, "<=45")
```

- 45歳以上のカウント:
```excel
=COUNTIF(G3:G100, ">45")
```

これで、指定した年齢別の社員数を集計できます。全体の手順をまとめると以下のようになります。

1. **生年月日から年齢を計算**(例えば、G列に年齢を表示):
```excel
=DATEDIF(F3, TODAY(), "Y")
```

2. **45歳以下のカウント**(年齢が G3:G100 にあると仮定):
```excel
=COUNTIF(G3:G100, "<=45")
```

3. **45歳以上のカウント**(年齢が G3:G100 にあると仮定):
```excel
=COUNTIF(G3:G100, ">45")
```

これで、45歳以下および45歳以上の社員数を正確に集計できます。
    • good
    • 0
この回答へのお礼

できました!ありがとうございます!

と色々やってる間に、上司から
さらに45才~49歳の人の集計と、更にそこから女性が何人いるのかも集計しておいてという後出し指示がでてまいりました。
D列に性別の記載が、男、女とある場合はCOUNTIF関数がベストかな?と思って、先ほど回答いただいたものを参考にやってみたところなんだかうまくいきません。。。明らかに人数が増えてます。。。

先ほど同様、G列に年齢、D列に男、女の記載がある場合って=COUNTIFS($D$3:$D$40,"女",$G$3:$G$40,"<45才")-COUNTIFS($D$3:$D$40,"女",$G$3:$G$40,">=50才")
こちらの関数でよいのでしょうか?

お礼日時:2024/06/25 14:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A