• ベストアンサー

ExcelのDATEDIF関数で月日のスペース

Excel2003です。 DATEDIF関数で年令表をつくるとき 昭和25年12月12日と 昭和25年8月8日の年月日の位置をそろえるために 昭和25年 8月 8日 と 8月 8日の前にスペースをいれたらエラーになってしまいました。 (スペースを入れた方が見映えがよいので) スペースをいれても有効になる方法がありましたら 教えてください。

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

  • ベストアンサー
  • chonami
  • ベストアンサー率43% (448/1036)
回答No.5

>ggg_0e"年"_0m"月"_0d"日" だと、二桁でも前にスペースが入りませんか? 一桁と二桁の時に場所を調整したいんですよね? 日付の表示をスペースで調節したいという要望はたまにあるのですが2003までですと表示形式だけではまず不可能です。 別セルでTEXT関数を使い年や月や日が一桁の場合をそれぞれ場合分けして表示するなどの方法が必要になります。 2007以降ですと条件付き書式で表示形式が変えられますので同セルでできないこともないですがやはり同様に場合分けが必要です。 要は年齢が間違いなければいいことですのでそこまで見た目にこだわる&手間をかける必要性は内容に思いますが… どうしてもというなら表示用に文字列で日付を入力し、計算用には別セルで日付をいれて計算させては?

Kuma2000
質問者

お礼

回答ありがとうございます。 >だと、二桁でも前にスペースが入りませんか? >一桁と二桁の時に場所を調整したいんですよね? そのとうりです。 とりあえず、年月日の位置が揃えばよいので #1さんの方式にしました。

その他の回答 (4)

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.4

見かけだけの問題であれば、既に他の方が回答されている通り、セルの表示形式で変えるのがいいと思いますが、別解として実際にスペースが入ってしまっている場合にどういう式になるかを回答してみます。 例えば、A1セルに生年月日が入っていて、DATEDIF関数の式が =DATEDIF(A1,TODAY(),"y") である場合、「A1」の部分を「SUBSTITUTE(ASC(A1)," ","")」と変えればいいです。 =DATEDIF(SUBSTITUTE(ASC(A1)," ",""),TODAY(),"y") ASC関数は、全角文字を半角に置き換える(全角しかない文字はそのまま)関数です。 SUBSTITUTE関数は、文字列の中から特定の文字(文字列)を探して置き換える関数です。 " "(半角スペース)を""(空文字列)に置き換えることで、半角スペースを取り除くことができます。 人が手入力する場合、スペースに全角スペースと半角スペースが混在してしまう可能性が多々ありますので、いったんASC関数で文字列全体を半角文字に置き換えた後、半角スペースを除くようにしています。

Kuma2000
質問者

お礼

回答ありがとうございます。

noname#186860
noname#186860
回答No.3

ANo.2です。 元号の部分の一桁に対応していませんでした。 ggg_0e"年"_0m"月"_0d"日" としてみてください。 あとですね、やってみたら [$-411]gggee"年"mm"月"dd"日";@ ではできませんでしたね。ゼロが表示されますから。

Kuma2000
質問者

お礼

回答ありがとうございます。

noname#186860
noname#186860
回答No.2

ユーザー定義なら 月や日にちが一桁の場合に数字の前にスペースを空けるには 「ggge"年"_0m"月"_0d"日"」 で十分。 ただし、平成元年の1月7日前後を正しく表示させるならもう一工夫が必要になります。

参考URL:
http://soft1.jp/trouble/o/o095.html
Kuma2000
質問者

お礼

回答ありがとうございます。

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

スペースをいれても有効になる方法もありますが、あまりにも複雑な式になるので、 昭和25年8月8日の年月日の位置をそろえるには、セルの書式設定を、ユーザー定義で、以下のようにすることをお勧めします。 [$-411]gggee"年"mm"月"dd"日";@

Kuma2000
質問者

お礼

回答ありがとうございます。

関連するQ&A