• ベストアンサー

和暦から西暦へ表示変更

似たような質問はあるもののどれも上手く出来なかったので質問させて頂きます。 Excel2003を使用しております。 セル内に「昭和60年」や「平成3年」といった文字列が入っております。 これを西暦表示の「1985年」や「1991年」といった表示に変更したい場合どのようにすれば良いのでしょう? 月や日にちは必要なくただ年だけが必要なものです。 VBAの知識は全く無いので出来ればExcelの関数or表示形式等のみで解決したいのですが…。 お知恵を貸して下さいませ。 どうかよろしくお願い致します。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

別のセルで良いなら =TEXT(DATEVALUE(A1&"1月1日"),"yyyy年") で変わります。 置き換えの場合は、この数式をコピーして元のセルに 「編集」「形式を選択して貼り付け」で「値」を選択してOK その後に数式を削除してください。

Dona1d
質問者

お礼

なるほど…これなら表示形式を変えなくていいわけなんですね。 色々あるものなんですね。 有難うございました!

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

A列に文字列があるとして、B1に =DATEVALUE(A1&"1月1日") と入れて、下に複写する。 書式をユーザー定義で、yyyy年とする。 A列  B列 平成13年 2001年 昭和20年 1945年 平成1年 1989年 昭和64年 1989年 昭和39年 1964年 明治35年 1902年 明治33年 1900年 明治32年 #VALUE! 大正10年 1921年 明治32年以前はだめ。

Dona1d
質問者

お礼

ANo.4様の回答と似ているようですが関数が違うのですね。 文字列をシリアル値に変換する関数があるとは知りませんでした。 大変勉強になりました。有難う御座います!

  • moon00
  • ベストアンサー率44% (315/712)
回答No.6

シリアル値にする必要がなく、単に「年」が必要と考えると、 以下のような関数の組み合わせで、なんとかなるかも知れません。 A1に「昭和60年」と入っている場合、 =IF(LEFT(A1,2)="昭和",(RIGHT(LEFT(A1,LEN(A1)-1),LEN(A1)-1-2))*1+1925,IF(RIGHT(A1,2)="平成",(LEFT(LEFT(A1,LEN(A1)-1),LEN(A1)-1-2))*1+1988,A1)) 結果は、「1985」という数字になります。 文字列の左から2文字を判定、それぞれの数字を取り出し、 昭和なら1925を平成なら1988を足しています。 ただし、この式では昭和と平成にしか対応してません。 それと「元年」という表示もアウトです。 ifの入れ子で、それも含めて判定する関数を作るのは可能ですが。 シリアル値にしたいなら、ここからDATE関数を使用すれば変換できますが、 関数が長くなるので、やめました。

Dona1d
質問者

お礼

今回はシリアル値でもそうでなくてもどちらでも良かったので、ANo.4様、ANo5.様の回答でさせて頂きましたが、シリアル値にしたくない時も今後出てきそうなのでその時は是非参考にさせて頂きます。 丁寧な解説も有難うございました。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

こんにちは~ 「昭和60年」 が A1セルに入っているとして、 たとえば B1に =YEAR(A1&"1月1日") と入れてみてください。 上の式を入れたセルの表示形式を、ユーザー定義で 0"年" にしてください。 元の和暦が不要なら、式を入れたセルをすべて選択して、 メニュー「編集」-「コピー」 そのまま、メニュー「編集」-「形式を選択して貼り付け」 <値>を選んで 「OK」 ESCキーを押して、コピーモード解除。 そのあと、A列を削除。

Dona1d
質問者

お礼

驚きです☆ こんなに簡単な作業で出来たのですね。 お陰で無事解決。本当に有難う御座いましたヽ(´▽`)ノ

  • onntao
  • ベストアンサー率32% (108/332)
回答No.3

もずかしい→むずかしい ;^_^A

  • onntao
  • ベストアンサー率32% (108/332)
回答No.2

>もとのデータが文字列として認識されているからではないかと思うのですが…。 該当セルの表示形式を標準にしてみれば確認できるかも 簡単にはいかないかもしれませんね そもそも日付や時間データは、エクセル内においてはシリアル値で管理されていますよね。それの表示方法を書式や関数にて変換しているだけですから、文字列として入力されている"昭和60年"をシリアル値に変換するのはもずかしいです 昭和1年から昭和64年(平成1年)~平成17年まで対西暦年数の表を作り 昭和60年からSUBSTITUTE関数で"年"を取り去り さらに和暦と数字を分割して先の表から検索する 検索は 昭和の ?年 ということになるので SUMPRODUCT関数にて いかがでしょう

Dona1d
質問者

お礼

解りやすい説明有難うございました。 SUBSTITUTE関数やSUMPRODUCT関数なんて聞いたことも使ったことも無かった(^^;) 関数は奥が深そうですねぇ。。。勉強頑張ります。

  • 196352
  • ベストアンサー率54% (170/313)
回答No.1

セルの書式設定の表示形式でユーザー定義の所で yyyy"年"m"月"d"日"と言うのを m"月"d"日"の部分を削除して yyyy"年"と言う表示形式を作成して「OK」 とすれば、指定されたセルではyyyy年表示になりますよ。

Dona1d
質問者

お礼

早速のご回答有難う御座います。 しかし、この方法は既に取ってみたのですが「昭和60年」のまま何も変わってくれないのです。 多分もとのデータが文字列として認識されているからではないかと思うのですが…。(ただの憶測なので違っていたらすいません) それもふまえて何かいい案はございませんでしょうか?

関連するQ&A

専門家に質問してみよう