- ベストアンサー
エクセル 関数のあわせ技
お世話になります。 最終目的は年齢表示です。 生年月日の元データは他システムから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日 と表示させたいのです。 上記の関数式に別の関数を組み合わせればいいのだろうと思いましたが、うまくいきません。 どうか、よろしくご教示ください。
- みんなの回答 (5)
- 専門家の回答
補足
うまくいきました。 なるほど、ここにtextを混ぜるのでしたか。 ありがとうございました。 補足でお伺いしたいのは、 =IF($J3="","空白行",TEXT(SUBSTITUTE(M3," ","")*1,"ggge年m月d日")) の途中の *1 はどのような意味なのでしょうか? この *1 は省略しても、同じ結果が得られます。 しかし、何かの意味があるのですよね? 教えていただけるでしょうか よろしくお願いいたします。