• ベストアンサー

エクセルで年齢を計算させようと

セルA1には生年月日B2に次の式を入れて =DATEDIF(DATEVALUE(A1),TRUNC(NOW()),"Y") 年齢の計算をさせていましたが、そのファイルでは正確に計算されていました。 別に新しく作ったファイルで#VALUE!となります。 全く同じ条件で新しく作ったファイルなのに 何故なんでしょうか? よろしくお願いします。

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

  • ベストアンサー
回答No.5

datevalue関数に与える引数は、日付のように見える文字列でなくて はなりません。ちゃんとした日付シリアル値を与えると#value!エ ラーになります。おそらくそれが原因。datedif関数でドジったとし たら#num!エラーになるはずですからね。 「日付のように見える文字列」をタイプすると自動的に日付シリア ル値に変換されますし、「日付のように見える文字列」を四則演算 に使っても日付シリアル値に変換して使用されます。datevalue関数 は使わず、もしも文字列の混入があり得るのならdatedif(A1*1,... のように変換してしまうのが安全でしょう。 ついでにいうとdatedif関数は日付シリアル値の時刻相当部分を無視 するので、trunc関数も不要です。

kyon0512
質問者

補足

回答ありがとう御座います そうなんですね。自動的に日付になりますね。 でも最初に作ったファイルはいけてるんですよ? truncもなくてもいけますね。 結論 =DATEDIF((H3),(NOW()),"Y") でいけました、これでいいわけですね?

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No2です。エラーの原因は先に行っていたシートでは文字列として日付が入力されていましたが、新しいシートでは生年月日がシリアル数、すなわち数値として入力されていることによるものです。 シリアル数になっているデータにDATEVALUE関数を使った場合にはエラー表示されます。

kyon0512
質問者

補足

わかりました、了解です。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

正しく表示できた時はA1の日付を文字列で入れてあり、駄目な時はシリアル値になっていると思われます。 シリアル値の時はDATEVALUE(A1)ではなく、単にA1 でいけるかと。

kyon0512
質問者

補足

皆さん回答ありがとう御座います。 そうですね、単にA1でいけました。 でも最初のファイルは何故シリアルなのに表示されるのでしょうか?

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.3

DATEVALUE()  関数は、 日付を表現している "文字列" を基に シリアル値 を求める機能があります。 #VALUE!となっているファイルの セルA1 が 文字列ではなく、 既に日付形式(シリアル値)になっていると思われます。 もし、セルA1が 日付形式になっているのであれば、 先頭に アポストロフィ を付加してみてください。 例. 2010/04/09   が入力されているならば、 '2010/04/09   としてみる。 ※DATEDIF関数 http://kokoro.kir.jp/excel/datedif.html

kyon0512
質問者

補足

回答ありがとうございます。 あれれ、そうなんですか? でも最初に作ったファイル(年齢表示されるファイル)は文字列で入れてないのに認識してるんですよ。 で、今回の質問のファイルにアポストロフィーを付けたら表示されました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

DATEVALUE関数は文字列として生年月日が入力さてている場合に日付に直す関数です。通常は生年月日が1980/4/9と入力すれば日付の数値として認識され文字列とは認識されません。また、TRUNC関数も正常な使い方ではないでしょう。 次のような式にしてはいかがでしょう。 =DATEDIF(A1,TODAY(),"Y")

kyon0512
質問者

補足

早速にありがとうございます。 そうなんですか? TRUNC関数は正常な使い方ではないんですか? やはり=DATEDIF(A1,TODAY(),"Y")が正解なんですね。

回答No.1

DATEDIF って なんですか? 私の環境(ex2007)には含まれてませんけど??

関連するQ&A

  • エクセルで年齢の計算の仕方

    エクセルで年齢を計算するのにDATEDIF(A1,today(),"Y")が良く使われますが、 法律上正確に考えるとDATEDIF(A1,today()+1,"Y")が正しいのではないでしょうか。 このようなことを解説したもの(サイト)が見つからないので質問しました。 ちなみに、年齢加算は法律上、誕生日の前日となっています。 それに基づくとDATEDIF(A1,today()+1,"Y")だと思いますが、この書き方だと計算結果に何か問題が発生するでしょうか。

  • エクセルで年齢式がコピーできない

    エクセルで名簿を作っています。 最初の一人の生年月日と今日の日付から満年齢を出せたまではいいのですが、全員分の満年齢を出そうとして式をドラッグしてコピーしようとしたところ、#VALUE!と#NUM!が交互に出て、年齢が表示されません。 E2セルに今日の日付(=TODAY())、C4に最初の人の生年月日を入力しています。 最初の人の年齢は=DATEDIF(C4,E2,"Y")の式で正常に表示されているのですが、この式をドラッグでコピーすると、以下、#VALUE!と#NUM!が交互に表示されます。コピーされた式をひとつずつ調べると、 =DATEDIF(C4,E2,"Y") ←正常に表示 =DATEDIF(C5,E3,"Y") ←#VALUE!と表示 =DATEDIF(C6,E4,"Y") ←#NUM!と表示 =DATEDIF(C7,E5,"Y") ←#VALUE!と表示 =DATEDIF(C8,E6,"Y") ←#NUM!と表示 … といった感じで続いていて、要は今日の日付を入力しているE2セルを正しく参照していないようです。これを、 =DATEDIF(C4,E2,"Y")  =DATEDIF(C5,E2,"Y")  =DATEDIF(C6,E2,"Y")  =DATEDIF(C7,E2,"Y")  =DATEDIF(C8,E2,"Y")  のように、常にE2を参照させる方法があるはずだと思うのですが、どうすればいいでしょうか? よろしくお願いします。

  • EXCELで年令計算するDATEDIF関数

    EXCELで年令計算する関数DATEDIFを使って、生年月日の記入をすると年令を表示しますが、 記入がないと 111才 になってしまいます。生年月日の記入がないときには 0才 にしたいのですが、わかりません。   たとえば、生年月日のセルを         B12         基準日(関数TODAY()を使用 )を E3         年令表示セルを           B11 にして、セルB11に次の関数を入力します。     =DATEDIF(B12,E3,"Y") & "才" すると、生年月日がセルB12に入っていれば、年令を表示しますが、生年月日の記入がない(空欄)と111才と表示されてしまいます。空欄では0才などにしたいのですが、ご教示をお願いします。 セルの西暦・和暦やTODAY関数が影響するのかわかりません。

  • エクセルの年齢の計算方法について

    エクセルで、A1に「現在の日付」、A2に「生年月日」を入れ、 A3のセルで次のとおり計算式、 =DATEDIF(A2,$A$1,"Y")&"年"&DATEDIF(A2,$A$1,"YM")+1&"ヶ月" を入力し、「○○年○○ヶ月」と表示させました。 このA2「生年月日」と、A3「○○年○○ヶ月」のデータがいくつかあるのですが、「○○年○○ヶ月」の平均値を求めることは可能でしょうか? その場合の、計算式等をお教えていただけないでしょうか? 分かりにくい説明で申し訳ありません。 よろしくお願いいたします。

  • エクセルの年齢計算ができない(VBA)

    VBAでエクセル関数のDATEDIF関数を入力したいのですがうまくいきません。なにかいい方法はありませんか? 例)年齢基準値セルA1、終了期間B1でC1で年齢計算 Private Sub CommandButton1_Click() Range("C1").Value = "=DATEDIF(A1,B1,"y")" End Sub この記述でうまくいきません。 ようは、コマンドボタンクリックで、C1にDATEIF関数を入力したいのですが・・・

  • Excelの年齢関数を教えて下さい

    Lotus 1-2-3には @DATEDIF(@DATE(“y”,”m”,”d”),@NOW,”y”)という関数があって、@DATEに生年月日を入力すると現在の年齢がそのセルに表示され、重宝しています。 Excelを使う機会もあって、同じような関数を探しているのですが、分かりません。どなたか教えていただけませんか。

  • EXCEL エクセル 年齢 DATEDIF関数 空白の場合

    EXCEL2007 年齢を計算するのに A1セルに 生年月日を入力、 B1セルに年齢  =DATEDIF(A1,TODAY(),"y")で  満年齢がでると思うのですが A1セルが空白の場合 109となります。 A1セルが空白の場合 B1セルも空白になる関数を教えてください。 本を見ながらの初心者です。よろしくお願いします。

  • Excelの年齢計算について教えて

    生年月日の入力したExcelシートでそのセルを「A1」とすると、下記の(1)や(2)では上手く計算できませんが、どのように計算すればいいのでしょうか? だれか、教えてください。 (1)+today()-A1 (2)+now()-A1

  • エクセルでの年齢計算についてですが…

    いつもお世話になります。 今回はエクセルで年齢計算をしたいのですが、ちょっとした問題があるのです。 と申しますのは、生年月日がA1に年号、A2に年、A3に月、A4に日とそれぞれ数字を入れ、A5に現時点での年齢を表示したいのです。  作成例)  A1  A2  A3  A4  A5  昭和  49   3   3  30 一般的な「DATEDIF関数」だと、セルが上記のようにバラバラでは対応してくれないので、困っているのです。 どうしたらよいのでしょうか。 ご回答の程、宜しくお願い致します。  

  • エクセル生年月日から満年齢を出したい

    一難去ってまた一難… E2セルに今日の日付、C4セルに生年月日で、 =DATEDIF(C4,$E$2,"Y") の式で今日現在の年齢を出すことはできたのですが、今日現在の年齢ではなく満年齢を出す方法はあるでしょうか? よろしくお願いします。

専門家に質問してみよう