エクセル関数についての質問

このQ&Aのポイント
  • エクセルの関数を使って、指定の表に年数や年齢を計算する方法を教えてください。
  • 具体的には、入社日からの年数を計算し、10年以下の場合は10、10年超20年以下の場合は20、20年超30年以下の場合は30と表示する関数を作成したいです。
  • また、現在の日付から生年月日を差し引いて、年齢を計算する関数も教えてください。
回答を見る
  • ベストアンサー

エクセルの関数について質問

次のような表を考えているのですが関数をどうすれば良いか教えてください エクセルのバージョンは2003です。 ・下記の4列目に2013年3月31日時点におけるに入社してからの年数を関数で計算させたい ・下記の5列目に4列目が10年以下の人は10、10年超20年以下の人には20、20年超30年以下の人には30と表示される関数を組みたい ・下記の6列目に2013年3月31日時点における年齢を関数で表示させたい 氏名 入社日付 生年月日  入社年数 区分 年齢 A 1999/4/1 1975/11/9  B 1988/4/1 1962/8/1 C 2007/6/3 D E F G ・ ・ ・ ・ 以上お手数をおかけしますが、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • WDY
  • ベストアンサー率28% (121/431)
回答No.1

氏名のセルをA1とした場合 2Dセルに =DATEDIF(B2,"2013/3/31","Y") 2Eセルに =IF(D2>20,30,IF(AND(D2>10,D2<=20),20,10)) 2Fセルに =DATEDIF(C2,"2013/3/31","Y") 後は引き伸ばしていただければ計算されます。

naohana_2005
質問者

お礼

ありがとうございます。 質問に一つ訂正があります。 2Eセルに =IF(D2>20,30,IF(AND(D2>10,D2<=20),20,10))の部分ですが 下記の5列目に4列目が10年以下の人は10、10年超20年以下の人には20、20年超30年以下の人には30、 30年超40年以下の人には40、40年超の人にはNGと表示したいのですが、再度教えていただけないでしょうか。 たびたびですみません。

その他の回答 (5)

回答No.6

No.3・4です。まだご質問が締め切られていないようだから。E2セルに入力するのは次の数式でもいいです。こちらのほうが少し短くて済みますね。 E2 =if(d2=0,"",if(d2>40,"NG",10*(int(d2/10)+(mod(d2,10)>0))))   あるいは   =if(d2=0,"",if(d2>40,"NG",floor(d2,10)+10*(mod(d2,10)>0)))

naohana_2005
質問者

お礼

ありがとうございました。

  • WDY
  • ベストアンサー率28% (121/431)
回答No.5

WDYです 確認が遅れて申し訳ございません >2Eセルに =IF(D2>20,30,IF(AND(D2>10,D2<=20),20,10))の部分ですが >下記の5列目に4列目が10年以下の人は10、10年超20年以下の人には20、20年超30年以下の人には30、 >30年超40年以下の人には40、40年超の人にはNGと表示したいのですが、再度教えていただけないでしょうか。 の件ですが =IF(D2>40,"NG",IF(AND(D2>30,D2<=40),40,IF(AND(D2>20,D2<=30),30,IF(AND(D2>10,D2<=20),20,10)))) とすれば出来ますよ。 がんば!

naohana_2005
質問者

お礼

ありがとうございました。

回答No.4

>…5列目に4列目が10年以下の人は10、10年超20年以下の人には20、20年超30年以下の人には30、30年超40年以下の人には40、40年超の人にはNGと表示したい… …年寄りはNG(笑)  ならこんなふうに式を差し替えればいいのではありませんか? E2 =choose(sum(d2=0,d2<=10,d2<=20,d2<=30,d2<=40,d2<=999),"NG",40,30,20,10,"") ところで、D2セルの式で四捨五入する場合について補足を。0.1年≒36.5日、0.01年≒3.65日、0.01年≒0.365日=8.76時間であることを考えると、小数点第2位で四捨五入するのでは、計算結果の変化しない時間が長くなる(36.5日÷2=18日程度の前後の期間で、計算結果が変化しない)ので、第3位が丁度良いケースが多いかもしれませんね。第4位だと、365日=0.999年みたいに、丁度1年であるにも関らず整数にならないので、それはそれで愉快でないかもしれません。第3位にするなら、式は次のとおり。 D2 =round((date(2013,3,31)+1-b2)/365.25,2)  ……概数を小数値で求めた後、小数点第3位を四捨五入

naohana_2005
質問者

お礼

ありがとうございました。

回答No.3

年数、年齢の計算式は、定義によるので、下に示したものは一例。なおDATEDIF関数は、年や月の計算に限れば大丈夫とも言われていますが、バグが気持ち悪いので、使わない方向で回答。 1.次の数式を入力 D2 =2013-year(b2)-((month(b2)=4)*(day(b2)>1)+(month(b2)>4))  ……整数値(満年数)で算出   =(date(2013,3,31)+1-b2)/365.25  ……概数を小数値で算出   =round((date(2013,3,31)+1-b2)/365.25,1)  ……概数を小数値で求めた後、小数点第2位を四捨五入 E2 =choose(sum(d2=0,d2<=10,d2<=20,d2<=30,d2<=999),"長老",30,20,10,"") F2 D2の式中の「b2」を「c2」に書き換えた式 2.D~F列に対して、「セルの書式設定」の「表示形式」タブで次のとおり操作  ●D列   「数値」に設定し、「小数点以下の桁数」を「1」とする  ●E~F列 「数値」などに設定  ※1.での入力をしているうちにセルの書式が「日付」になってしまう場合があります。   2.の操作をしないと正しく結果を表示しません。

naohana_2005
質問者

お礼

ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.2

入社年数:=DATEDIF(B2,TODAY(),"y") 区分   :=IF(D2<=10,10,IF(D2<=20,20,30)) 年齢   :=DATEDIF(C2,TODAY(),"y")

naohana_2005
質問者

お礼

ありがとうございました。

関連するQ&A

  • エクセル DATEDIF関数

    色々調べたのですがよくわかりません。 DATEDIF関数で年齢計算させたいと思います。 適当なセルに本日の年月日を表示させ、 A列に生年月日、B列に年齢を出そうと思います。 そのため、B1にDATEDIF関数を入れ、B2から下の行に、この関数をコピーしました。 この結果、A列に生年月日を入れれば隣のB列に年齢は出るのですが、A列に生年月日を入れなくても、B列には生年月日を1900年とした年齢が表示されます。 (今年なら118歳が表示されます。) 生年月日を入れていない行には年齢を表示させたくないのです。 入力した人だけの平均年齢を出したいのですが、この118歳が邪魔になります。 どうすればいいのでしょうか。

  • Excelで質問です。

    エクセルを使って、勤続年数を計算したいのですが、 どんな関数を使えばいいのでしょうか? 何年何月入社と入力すれば、横に今日時点での勤続年数が 何年何ヶ月と表示されるようにしたいのですが、アドバイスをお願いします!

  • Excelや、ややこしい関数について教えて下さい。

    Excelや関数にお詳しい方、教えて下さい。 製造日から賞味期限までの期間の3分の1の時点や3分の2の時点、2分の1の時点を割り出す関数を教えて下さい。 (例) (1)製造日:2011年4月15日で、 賞味期限は9ヶ月、なので来年の 1/15となる。 この場合で、3分の1の時点の月日を出すには、どのような関数を作ればいいのでしょうか? (2)上記の日にちで、3分の2の時と、2分の1の時は、どこを直せばいいでしょうか? 例えば、ExcelのA列に、製造年月日の日にちを入れて、B列に賞味期限の日数、9ヵ月とか12ヶ月と入力すると、C列には、1/3の日にちが出て、D列には1/2の日にちが出るような表を作りたいと思っています。 説明が下手ですみません。意味が不明など質問して下さい。 関数やExcel、納入期限設定などにお詳しい方、どうぞよろしくお願い致します。

  • エクセル 関数のあわせ技 

    お世話になります。 最終目的は年齢表示です。 生年月日の元データは他システムからCSVカンマ形式で出力されたものをエクセルで表示しているため、問題箇所があります。 ・年月日のいずれかが一桁の場合、「空白」+「半角数字」+「年月日」となっています。   例えば、昭和20年5月1日   の場合は         昭和20年 5月 1日 となっています。(数字は半角です) ・元データのほとんどはテキスト形式なのですが、一部日付データ形式があります。   セル表示は「元号+年月日形式」ですが、数式バーは西暦表示です   例えば、昭和24年12月11日 とセル上は表示されますが、         1949/12/11   と数式バーでは表示されます。 まず、生年月日データに混じっている空白を消すため、SUBSTITUTE関数を使って別の列に書き出しました。 =IF($J3="","空白行",SUBSTITUTE(AM3," ","")) これで、昭和20年 5月 1日は昭和20年5月1日になりました。 その後、DATEDIF関数で年齢を表示させました。 =IF(ISERROR(DATEDIF(AJ3,today(),"Y"))=TRUE,"",DATEDIF(AJ3,today(),"Y")) ただし、日付データの 1949/12/11 のセルは、18243 になってしまいました。 これでも年齢計算はできるのですが、生年月日確認用に使いますし、後で印刷時に利用するデータですので、「テキスト形式」として、昭和24年12月11日 と表示させたいのです。 上記の関数式に別の関数を組み合わせればいいのだろうと思いましたが、うまくいきません。 どうか、よろしくご教示ください。  

  • excelの関数で勤続年数が条件以上ならAO列にALの数値を表示

    オフィス2007のエクセル関数をどうしたらよいか教えてください 1)D列に入社年月日を入力するとAN列に勤続年数が出る 2)AO列にAN列で求められた勤続年数が3年以上の場合のみAL列と同じ数値を表示する AN列とAO列にはどんな関数を入力したらよろしいでしょうか? ちなみにAL列にはROUNDDOWNで数値を出す関数が入力されています よろしくお願いします

  • エクセルの関数についての質問です。

    DATEDIF関数を使って生年月日から年齢を求める式を作り、それにIF関数を組み合わせたいと思って試したのですが、うまくいきませんでした。何か良い方法があったら教えて下さい。 A1に生年月日を入力し、B1に、 =DATEDIF(A1,TODAY(),"Y") で年齢を求め、オートフィルで複写すると、A列に生年月日を入力していない場合、B列にある数値が 出てしまうので、A列が空白の時は、B列も空白にしたいのです。そこで =IF(A1="",B1="",DATEDIF(A1,TODAY(),"Y")) としてみたところ 循環参照 している。と言うエラーメッセージがでてしまいます。 よろしくお願いします。

  • 関数のDATEDIFに替わるものについて教えてください。

    関数のDATEDIFに替わるものについて教えてください。 入社年月日から今現在の勤続年数を『何年何ヶ月』と表示したいのですが、 エクセル2000にDATEDIF関数がありませんでした。 関数が苦手なので分かりやすく教えてください。 よろしくお願いします。

  • エクセルで社員名簿の作成をするには・・・

    A列に氏名、B列にフリガナ、C列に生年月日、D列に年齢、E列に性別、F列に採用年月日、G列に勤続年数があるものを作成します。そこでいくつか質問させて下さい。 1.A列に氏名をいれてPHONETIC関数を使ってフリガナをいれたのですが全角で表示されました。半角にするにはどうすればいいですか? 2.性別を関数を使って表示させるにはどうすればいいですか? 3.勤続年数をDATEDIF関数を使って表示させたのですが、○年という年数でしか表示されません。○年○ヶ月と表示させるにはどうすればいいですか? 4.平均年齢、平均勤続年数はどうやったらでますか? エクセルが初心者で練習のため課題をやっています。一つでも構いませんので教えて頂けたら幸いです。お願いします。 例を一つあげると A列に佐藤花子、B列にサトウハナコ、C列にS60.1.1、D列に19、E列に女、F列にH15.4.1、G列に1年3ヶ月(H16.7.25日まで)と表示させたい場合はどうすればいいですか?

  • Excelで入社・退社年月日を入力して、勤続年数表示したい

    Excelで入社年月日と退社年月日を入力すると、 勤続年数が表示できるようにしたいのですが、 方法が分かりません。 DateDifという関数があると過去の質問を検索してみたらでてきましたが、どのように使ったらよいのかが分かりません。 入社年月日⇒14年4月1日 退社年月日⇒16年4月20日 勤続年数⇒2年1ヶ月 という具合に、一ヶ月未満の日数がある場合は1ヶ月に繰上げて表示したいです。 そして、休業期間がある場合は同様に休業期間を表示して、勤続年数からマイナスして結果的に 勤続年数-休業期間=在職期間 と表示できるようにしたいです。 ご存知のかた教えてください!よろしくお願いいたします。

  • エクセル 年齢を計算するような関数はありますか?

    エクセル2003です。初心者です。 現在名簿を作成しています。 更新日 2012/5/24 名前     生年月日       年齢 鈴木・・・   昭和60年5月1日       ↑のような名簿を作っています。 生年月日はすでに入力されているのですが、更新日を入力すると、 その更新日現在の年齢を表示できるような関数はないでしょうか? たとえば、今日なら2012/5/24のようにあるセルに入力したら 名簿の人の2012/5/24現在の年齢がでるようなものです。 よろしくお願いいたします。

専門家に質問してみよう