• ベストアンサー

値が未入力時に式の結果を空欄(非表示)にしたい。

EXCEL2003を使っています。 満年齢の表示リストを作っています。 A1のセルに生年月日を入れ、B1のセルに「=DATEDIF(A1,TODAY(),"y")」の式を入れました。 最終セルがB10としてBのすべてのセルには式を入れ、AのセルにはA5までしか値を入れなかった場合、B5までは数字(年齢)が表示されたのですがB6~B10まではなぜか【108】という表示がされます。 式を残したままこれを空白もしくは、非表示にする方法を教えてください。

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

  • ベストアンサー
  • outerlimit
  • ベストアンサー率26% (993/3718)
回答No.2

A1セルが空欄の場合 1900年と見なされますので 108年になりますね A1セルが 1910(年)以下ならば空欄にするように =IF(A1>1910,DATEDIF(A1,TODAY(),"y"),"") 1910は適当に変えてください

wc_bb
質問者

お礼

即答の回答ありがとうございました。 1900年とみなされるのは知りませんでした。 ありがとうございました。

その他の回答 (3)

回答No.4

こんなのもあります。 =IF(ISBLANK(A1),"",DATEDIF(A1,TODAY(),"y")) B2からはコピーして下さい

wc_bb
質問者

お礼

きれいに表示されました。 ありがとうございました。

noname#140971
noname#140971
回答No.3

2004/2/29___0 <--- =DATEDIF(A1, "2005/02/28","y") 2004/2/29___1 <--- =GetAge(A2, "2005/02/28") Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Integer   If Birthday = CDate("0:00:00") Then     GetAge = 0   Else     GetAge = DateDiff("yyyy", Birthday, Hiduke) + _            (Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd"))   End If End Function このように、少し年齢計算の結果に差が出ています。 ここんとこをどう考えるかで多少式も変わると思います。

wc_bb
質問者

お礼

貴重な意見をありがとうございました。 うるう年の問題ですね。 そこまで難しく考えていませんでした。 細かい説明、ありがとうございました。

  • newbranch
  • ベストアンサー率30% (319/1053)
回答No.1

=if(A1="","",DATEDIF(A1,TODAY(),"y")という式をB1にいれて、B2~B10にコピーすれば、Aの欄が空白なら、何も表示されません。

wc_bb
質問者

お礼

即答の回答ありがとうございました。 教えていただいた式で解決できたのですが、同時にエラーも出てしまいました。 エラーを無視することで解決でき、問題はなかったですが(苦笑)。 ありがとうございました。

関連するQ&A