• 締切済み

エクセル 関数

エクセルで社員の現在の年齢を出し、それを元に部署ごとの平均年齢を出す為の関数式を作っています。 初心者の為、なかなか難しくて出来ません。 どのたか助けて頂けませんでしょうか?

みんなの回答

noname#204879
noname#204879
回答No.6

既出ですが、ピボットテーブル(ピボテ)に依るのが最も簡単かと。 ここでは、ピボテの結果例(範囲 F3:G8)と、その元としたデータベース(社員情報)例だけを示しておきます。    A      B      C    D  E   F    G 1  部署  社員名     生年月日 年齢 2  総務部 清原 和博   67/08/18  40 3  総務部 小野寺 麻衣  75/11/09  31   平均/年齢 4  総務部 岡田 武史   56/08/25  51   部署    合計 5  総務部 稲垣 吾郎   73/12/08  33   財務部   48.8 6  総務部 伊藤 蘭    55/01/13  52   人事部   40.8 7  人事部 今井 美樹   64/04/14  43   総務部   41.4 8  人事部 梅宮 アンナ  72/08/20  35   総計    43.1 9  人事部 小倉 優子   83/11/01  23 10 人事部 賀来 千香子  61/10/17  45 11 人事部 東 ちづる   60/06/05  47 12 人事部 明石家 さんま 55/07/01  52 13 財務部 落合 博満   53/12/09  53 14 財務部 大仁田 厚   57/10/25  49 15 財務部 有森 也実   67/12/10  39 16 財務部 稲垣 潤一   53/07/09  54 D2: =DATEDIF(C2,TODAY(),"Y") [合計]が該当部署の平均年齢で、「総計」の 43.1 は全部署の平均年齢を示しています。

ayamyu
質問者

お礼

ご回答、有難うございます! ピッポットテーブルって、使った事が無いので、実はよく解らないのですが、早速チャレンジしてみます。 またよろしくお願い致します。

noname#140971
noname#140971
回答No.5

社員名________部署名___先年月日_____年齢1___年齢2___年齢3___現在 鈴木_一郎____総務______2004/2/29________0__________1_________1___2005/2/28 <--- 不一致 田中_子_______総務______2004/3/1__________0_________0_________0___2005/2/28 木下_純_______営業______2004/2/28_________1_________1_________1___2005/2/28 鈴木_一郎____総務______2003/2/28_________1_________1_________1___2004/2/28 田中_良子____総務______2003/2/28_________1_________1_________1___2004/2/29 木下_純_______営業______2003/2/28_________0_________0_________1___2004/2/27 <--- 不一致 年齢1=DATEDIF(C2,G2,"Y") 年齢2=ROUNDDOWN((G2-C2)/365,0) 年齢3=GetAge(C2,G2) Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Integer   GetAge = DateDiff("yyyy", Birthday, Hiduke) + (Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd")) End Function 3つの計算式では、それぞれに計算結果が微妙に異なります。 一体、どれが正解かの自信は全くありません。

ayamyu
質問者

お礼

ご回答ありがとうございました。 3つの計算式・・・それぞれ、チャレンジして見ます! またよろしくお願い致します。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

年齢(?歳?ヶ月)は、A1が誕生日なら =TEXT(DATEDIF(A1,TODAY(),"Y"),"0歳;;")&TEXT(DATEDIF(A1,TODAY(),"YM"),"0ヶ月;;") 年齢の平均は =TEXT(DATEDIF(AVERAGE(A1:A100),TODAY(),"Y"),"0歳;;")&TEXT(DATEDIF(AVERAGE(A1:A100),TODAY(),"YM"),"0ヶ月;;") 部署がバラバラになっている場合は 月数=DATEDIF(SUMIF(B1:B100,"部署名",A1:A100)/COUNTIF(B1:B100,"部署名"),TODAY(),"M") 平均年齢=TEXT(INT(月数/12),"0歳;;")&TEXT(MOD(月数,12),"0ヶ月;;")

ayamyu
質問者

お礼

ご回答、ありがとうございました! 関数辞典を見ながら内容を理解出来るように頑張ります。 おかげ様で無事に処理が出来ました。 本当に、ありがとうございました!!!

  • yuuyu555
  • ベストアンサー率0% (0/0)
回答No.3

年齢を生年月日から出すのであれば↓の式で出ます。 但し、○ヶ月は切り捨てされます =ROUNDDOWN((TODAY()-A1)/365,0) A1は生年月日のセルです

ayamyu
質問者

お礼

ありがとうございます。 使ったことの無い関数だったので勉強になりました。 またよろしくお願い致します!!!

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

まずDATEDIF関数で各社員の満年齢を求めて、ピボットテーブルで部署毎の平均を求めるのが良いでしょう 仮にA列に部署、B列に氏名、C列に生年月日があるとしましょう。 1行目はタイトル行(タイトル行はピボットテーブルを使用するときに必須)で、2行目から下がデータ行になります。 D2(一番目の社員の行)に  =DATEDIF(C2,TODAY(),"Y") と入力して、下方向にコピーします。これが本日時点の満年齢です。 次に部署ごとの平均年齢を出すために、1行目のタイトル行から一番下の社員の行のA列~D列の全てを選択します 「データ」→「ピボットテーブルとピボットグラフレポート」を選択しウィザードを開きます。 1/3画面は何も変更せず「次へ」を選択します。2/3画面ではデータ範囲を選択しますが、先に範囲を選択しているので、ここも何も変更せず「次へ」を選んでください 3/3画面で「レイアウト」ボタンをクリックします。するとレイアウト画面が開きますから、画面右側にある「部署」ボタンを「行(R)」の位置にドラッグします。「部署」の実際の名称はシートの1行目に入力したタイトル名がそのまま表示されます。 次に「満年齢」を「データ(D)」の位置にドラッグすると「データの個数/満年齢」と表示が変わります。そのボタンをダブルクリックすると計算方法が「合計」「平均」…などたくさん表示されますから、「平均」を選択してください 「OK」で3/3画面に戻り、「完了」で部署毎の平均年齢が求められるはずです

ayamyu
質問者

お礼

ご回答ありがとうございます! ピッポットテーブル?と言う物を使った事が無いのですがチャレンジしてみます。 関数に関して勉強中なので1つ1つ考えながら、やってみます。 本当に、ありがとうございました。 またよろしくお願い致します。

  • bari_saku
  • ベストアンサー率17% (1827/10268)
回答No.1

A列1~100部署、B列1~100に年齢が入っているとして、総務課の人の平均年齢を出すなら =SUMIF(A1:A100,"総務課",B1;B100)/COUNTIF(A1:A100,"総務課")

ayamyu
質問者

お礼

ご回答ありがとうございました。 IFって、いろいろ使えるんですね。初心者なので関数辞典を片手に悩んでました。 またよろしくお願い致します。

関連するQ&A