[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『生年月日について』(ヨッシー)
平成9年4月11日生まれを4090411 と表しています。 最初の4は 明治が1で、大正が2、昭和が3で、平成の4ということです。 9年を09 4月を04 そして11日となっているそうですが、 これをもとの平成9年4月11日になおす方法はありますか?お願いします。
A1に4090411 B1に =DATE(CHOOSE(LEFT(A1,1),1867,1911,1925,1988)+MID(A1,2,2),MID(A1,4,2),RIGHT(A1,2)) の式をコピーして貼り付けます。 B1で右クリックメニュー「セルの書式設定・表示形式・日付」の種類で平成○年○月○日を選択します。 試しにA2:A7に以下の数値を入力し、B1のフィルハンドルをダブルクリックして下さい。(シニア) 1450729 2010730 2151225 3640107 3640108 4010108
A1セルに元の数字をいれておきます。
=DATEVALUE(IF(MIDB(A1,1,1)="4",MIDB(A1,2,2)+1988,IF(MIDB(A1,1,1)="3",MIDB(A1,2,2)+1925,IF(MIDB(A1,1,1)="2",MIDB(A1,2,2)+1911,IF(MIDB(A1,1,1)="1",MIDB(A1,2,2)+1867,0))))&"/"&MIDB(A1,4,2)&"/"&MIDB(A1,6,2))
しかし問題が発生しました。西暦1900年以前の場合はエラーになります。
なぜなんでしょうか? どなたかご指導お願いします。
(SS)
エクセル上での日付は1900年1月1日を整数「1」とする「シリアル値」という 数値で管理しています。(小数部分は時間として認識) したがって、マイナス値になる1899年12月31日以前の値は計算のできる数値とし ては認識してくれません。どうしても必要な場合はTEXT関数などで文字列へ変換 する必要があります。 詳しくはヘルプで「日付と日付システムについて」を参照してください。 (KAMIYA)
=IF(A1,JIS(TEXT(MID("mtsh",LEFT(A1),1)&TEXT(RIGHT(A1,6),"0!.00!.00"),"ggge年m月d日")),"") というのはどうでしょう? (LOOKUP)
元の数値が表す日付が正確であることを前提にすれば、こんなのでもいけそうです。 =IF(A1,INDEX({"明治","大正","昭和","平成"},LEFT(A1))&TEXT(RIGHT(A1,6),"00年00月00日"),"") (KAMIYA)
このようなことになってしまいませんか?
A B C 1 4010105 平成01年01月05日 昭和64年1月5日
=IF(A2,--(INDEX({"明治","大正","昭和","平成"},LEFT(A2))&TEXT(RIGHT(A2,6),"00年00月00日")),"")
として、セルの表示形式を日付にされれば、勿論、昭和64年1月5日になります。 (LOOKUP)
元の数値の表現する日付が正確であることを期待して組み立てました。 昭和64年1月5日の場合、4010105ではなく、3640105と表現している場合です。 もともとが1900年より前の日付の処理では#VALUE!になるのをどうしようかと考えた ものです。1900年より前の日付と元号年数の自動修正を有効にすることを両立するなら、
=IF(A1,IF(A1>1330100,TEXT(DATE(CHOOSE(LEFT(A1,1),1867,1911,1925,1988)+MID(A1,2,2),MID(A1,4,2),RIGHT(A1,2)),"gggee年mm月dd日"),"明治"&TEXT(RIGHT(A1,6),"00年00月00日")),"")
いいとこ取りになっちゃいますが、こんな感じではないでしょうか。 これでも、実在しない日付(例:1300229=明治30年[1897年]2月29日)の場合はそのまま 表示してしまいますが。 (KAMIYA) INDEX関数は1900年より前の処理なので不要ですね、削除しました。
>昭和64年1月5日の場合、4010105ではなく、3640105と表現している場合です。 そういうことでしたら、大変申し訳ありませんでした。 (LOOKUP)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.