プロが教える店舗&オフィスのセキュリティ対策術

Excel2007で西暦1900年以前の関数は?
Excel自身は1901年以降に関しては日付関数で表現されています。
例えば明治40年は1907年に直ぐ置き換わります。
このように西暦と元号を置き換えることができる仕組みか関数はありませんか?

年号表はあります。従って目で見ながら置き換えるのは出来ます。
そうではなく、一方を入力すると片方が表示される仕組を探しています。

A 回答 (4件)

つかえるかな?


和暦←→西暦の変換
http://www.vector.co.jp/soft/win95/business/se45 …
    • good
    • 0
この回答へのお礼

私がイメージしていたのはこれでした。ありがとうございました。

早速ダウンロードしましたが、マクロ、セキュリティ、無効等の語句が出てきて
まだうまく行っておりません。

お礼日時:2010/09/13 22:41

1900年1月0日以降はエクセルではシリアル値としてすなわち数値として取り扱われており、西暦と元号を置き換えることは簡単にできますが、1900年以前を例えば1989/12/31と入力してもシリアル値としては理解されずに単なる文字列として理解されます。

したがってセルの表示形式などの操作で元号に置き換えることもできません。
A1セルに1989/12/31と入力したものを式を使って明治31年12月31日と表示させることはできますが日数の計算などに使えるものではありません。
なお、参考までに、A1セルに1989/12/31などと入力してB1セルに2010/9/13と入力したときの年齢の計算は次のような式になります。

=DATEDIF(DATE(LEFT(A1,FIND("/",A1)-1)+200,MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1),RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("/",A1)+1))),IF(ISNUMBER(B1)=TRUE,DATE(YEAR(B1)+200,MONTH(B1),DAY(B1)),DATE(LEFT(B1,FIND("/",B1)-1)+200,MID(B1,FIND("/",B1)+1,FIND("/",B1,FIND("/",B1)+1)-FIND("/",B1)-1),RIGHT(B1,LEN(B1)-FIND("/",B1,FIND("/",B1)+1)))),"Y")
    • good
    • 3

ロジックが明確なわけですから、


VBAで自作関数として準備したらと思います。
(西暦渡して元号を返す関数<FUNCTION>とか。)

いろんな場面で使うとなると数式よりはこの方が便利ではないでしょうか?。
何やっているかもコメントできます。
    • good
    • 0

こんばんは!



1900年1月1日より前の日付は文字列(明治31年○月○日)としての表示は可能ですが、シリアル値でなないので、かなり強引な方法でやってみました。

↓の画像でA列は手入力しているとします。
B2セルに
=IF(A2="","",IF(LEFT(A2,2)="明治",IF(RIGHT(LEFT(A2,4),2)*1<33,1867+RIGHT(LEFT(A2,4),2)*1&MID(A2,FIND("年",A2),LEN(A2)-FIND("年",A2)+1),TEXT(A2,"yyyy年m月d日")),TEXT(A2,"yyyy年m月d日")))

明治の二桁での数式ですので、もし明治一桁も対応したいのであれば数式も少し変わってきます。

という数式を入れ、オートフィルで下へコピーしています。

明治33年1月1日以降であればシリアル値ですので、計算等に利用できますが、
それ以前は単なる文字列ですので、見た目だけの表示になります。

以上、参考になればよいのですが・・・m(__)m
「Excel2007で西暦1900年以前の」の回答画像4
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!