- ベストアンサー
Excel2010で元号(西暦)月日を表示する方法
- Excel2010で古いバージョンのExcelファイル内のセルに書式設定された元号(西暦)月日が正しく表示されない問題についての質問です。
- 過去の質問を検索したところ、Excel2010では特定の書式設定を行うことで元号(西暦)月日を表示することができます。
- 具体的な書式設定方法については試行錯誤中ですが、他のユーザーに有効な方法があるのか教えていただけないでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
手元にはExcel2007しかありませんが、2007では一応、次のとおり記入すれば、成功するようです。 "平成"[$-411]e"("yyyy")年"m"月"d"日" あるいは "平成"[$-411]e"年("yyyy"年)"m"月"d"日" [$-411]を付けておいたほうが不具合が起こりにくいかどうかは、何とも言えません。西暦の不具合を避けるためには、ないほうがかえっていい可能性もあるかもしれません。申し訳ありませんが、ご自分で判断ください。 なお「昭和」の日付であっても「平成」と表示してしまうので、ご注意ください。また、和歴と西暦を組み合わせるか否かとは関係なく、「元年」が「1年」と、おかしな表示になってしまうので、その点にもご注意ください。
その他の回答 (8)
- nicotinism
- ベストアンサー率70% (1019/1452)
IsDateだけでは余計なものも変換してしまいますので、 以下に差し替えてください。 数字とスラッシュだけを対象に加えました。 今までの例、 1.2.3 → 明治32年(1899年)12月30日[土] 1-2-3 →平成13年(2001年)2月3日[土] 1-2 →平成24年(2012年)1月2日[月] Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If IsDate(Target.Value) And Not Target.Value Like "*[!/-9]*" Then Target.Value = Format(Target.Value, "ggge\年(yyyy\年)m\月d\日\[aaa\]") End If Application.EnableEvents = True End Sub
お礼
御礼が遅れてしまい、申し訳御座いません。 三度の御回答有難う御座います。 更に使い易くなるよう工夫して頂き感謝致します。
- KURUMITO
- ベストアンサー率42% (1835/4283)
別の列を用意できないというのであればマクロで対応することになるでしょう。 例えばA列に日付が入力されているとします。 セルには1997/8/1のように入力されているとします。仮に表示形式で平成9年のように表示されている場合には反応しませんので注意が必要です。 例えばシート見出しで該当のシート名を右クリックして「コードの表示」を選択します。 表示の画面には次のコードを入力します。 Sub 日付表示変更() i = 0 Do i = i + 1 If IsDate(Cells(i, 1).Value) Then myDate = Cells(i, 1) If Year(myDate) >= 1926 And Year(myDate) <= 1988 Then myYear = "昭和" & Year(myDate) - 1925 & "年" ElseIf Year(myDate) >= 1989 Then myYear = "平成" & Year(myDate) - 1988 & "年" End If myWeekday = Weekday(Date:=myDate) myWeek = WeekdayName(Weekday:=myWeekday, abbreviate:=True) Cells(i, 1).Value = myYear & " (" & Year(myDate) & "年) " & Month(myDate) & "月" & Day(myDate) & "日[" & myWeek & "]" End If Loop Until Cells(i, 1) = "" End Sub マクロを実行するためには「開発」タブの「マクロ」をクリックし、該当のマクロを選択して「実行」をクリックします。 A列に入力された日付のデータがお望みのような表示に変わります。
お礼
御回答頂き有難う御座います。 御教え頂いた方法を試してみましたが、「マクロ」ダイアログボックスの[実行]ボタンをクリックしましても、何故かA列に入力した日付データとその表示には変化が御座いませんでした。 尚、Visual Basicや、「マクロ」ダイアログボックスの[編集]で、マクロの内容を確認致しましたが、正常に記録されている様です。 マクロは御回答文をコピー&ペーストしたものですので、私の打ち間違いとも思えず、試しに、御回答文のマクロ部分と、記録されているマクロのそれぞれを、Excelの2つのセルにコピー&ペーストし、その2つのセルの値が等しいかどうかをExcelに判定させてみましたが、結果はTRUEでした。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
色々経緯があって現状ではできないらしい?ので、 日付がA1セルにあるとして、無理やり合成する! =TEXT(A1,"ggge""年(""")&TEXT(A1,"yyyy""年)""m""月""d""日[""aaa""]""") ============================== 2007年08月16日(木) 16時29分 「元号の後に西暦を表示できない-ggge"年("[$-1033]yyyy"年)"」 http://www.relief.jp/itnote/archives/002748.php 「ggge"年("yyyy"年)"」と指定すれば「平成19年(2007年)」と表示されそうなものですが、Excel 2002・2003・2007では、「平成19年(19年)」と表示されてしまいます。 これはOffice XPから多言語対応したことによる仕様のようです。元号を表示するための書式記号「ggg」が指定されていることで、そのセル内では日本の日付表示を行うという認識が行われ、続く「yyyy」に和暦年が表示されてしまうのです。ちなみに、 Excel 97・2000では「ggge"年("yyyy"年)"」と指定すれば、「平成19年(2007年)」と表示されますが、 Excel 2002以降のバージョンでは書式設定に工夫が必要です。 [種類]欄に「ggge"年("[$-1033]yyyy"年)"」と入力 ポイントは「[$-1033]」です。 ロケールIDを指定することで正しく表示されるようになるのです。「1033」というのは、言語コード:en-us・ロケール名:英語(U.S.)を意味する10進表記のロケールIDです。「[$-1033]」が指定されることで、それに続く「yyyy」が、英語(U.S.)圏の年表示をするという認識が行われるわけです。 ※このネタを公開した2007年8月16日時点では、Excel 2007でも「ggge"年("[$-1033]yyyy"年)"」の設定で、和暦の後に西暦を表示できていたように記憶しているのですが、2007 Microsoft Office system Service Pack 1 (SP1)適用後は、「ggge"年("[$-1033]yyyy"年)"」を指定しても「2008年(2008年)」という表示になってしまうことがあるようです。(2008年6月26日追記)
お礼
御回答頂き有難う御座います。 >色々経緯があって現状ではできないらしい? そうだったのですか、残念です。 おそらく同じ表示形式を望んでいるユーザーも多いのではないかと思われますので、Microsoft社様には早目に対応策を見つけて貰い、対応するパッチを配布して頂きたい処です。
- nicotinism
- ベストアンサー率70% (1019/1452)
自己解決されたようなのですが一応前回の説明を。 そこではなくて、VBEに記述します。 Alt+F11 キーか、リボンの開発タブのVisual Basicを押します。 画面がVBEに切り替わります。 プロジェクトウィンドウの Sheet1(Sheet1) をダブルクリックします。 プロジェクトウィンドウが出てなければ Ctrl+R または表示→プロジェクトエクスプローラで。 コードウィンドウが現れます。 そこのGeneral▽ となっているプルダウンメニューからWorkSheetを選択。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub がポコッと現れます。 この・・Worksheet_SelectionChange・・を・・Worksheet_Change・・に書き換えます。 またはSelectionChange▽になっているプルダウンメニューから Changeを選択します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub は不要なので消します。 残っている Private Sub Worksheet_Change(ByVal Target As Range) End Sub の間に先ほどの回答の中身をコピペします 結果は Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If IsDate(Target.Value) Then Target.Value = Format(Target.Value, "ggge\年(yyyy\年)m\月d\日\[aaa\]") End If Application.EnableEvents = True End Sub になります。 メニューのデバッグ→VBAProjectのコンパイルをクリックしエラーが出ないのを確認。 Alt+F11でExcelの画面に戻ります。 このコードはSheet1に変更があった時に発生しますので Sheet1上で任意のセルで日付を入力します(8/19とか・・) 日付が、平成24年(2012年)8月19日[日] に替わります。 最後にファイルをxlsm形式で保存します。 ここまで読み進んでもらって今更言えない事なのですが データは日付型からテキスト型に変更されていますので計算には使えません。 また日付と判断される場合(IsDate)は全て変更されます。 月日だけを表示したいセルが他に有ったりする場合は、 If ~ End Ifの部分を修正する必要が有ります。 あとは書籍などで・・・。
お礼
丁寧に御説明頂き感謝致します。 御教え頂いた方法で、無事、変換する事が出来ました。 入力した値がシリアル値ではなく、文字列になってしまう事が難点ですが、今回の書類のみに関してはシリアル値ではなくとも、必ずしも問題にはならないと思います。 御教え頂き、有難う御座いました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
ggge"年("[$-1033]yyyy"年)"m"月"d"日"
お礼
御回答頂き有難う御座います。 折角御回答頂いた処、申し訳御座いませんが、御教え頂いた表示形式は、質問文中で上手く行かなかった事を述べております「QNo.1493844 エクセルで和暦と西暦の表示形式を併用できますか。」に対して寄せられた回答の方法と同じものです。
- nicotinism
- ベストアンサー率70% (1019/1452)
なかなか言うことを聞いてくれませんね。 英語ロケールの[$-409]と組み合わせれば・・と考えましたが惨敗。 早々と妥協案です (^^ゞ ワークシートの Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If IsDate(Target.Value) Then Target.Value = Format(Target.Value, "ggge\年(yyyy\年)m\月d\日\[aaa\]") End If Application.EnableEvents = True End Sub ではダメですかね。
お礼
御回答頂き有難う御座います。 折角御回答頂いた処、申し訳御座いませんが、御教え頂いたマクロをコピーして、「マクロの記録」ダイアログボックスの「説明」欄に貼り付けてから、[OK}ボタンをクリックし、「コード」グループのマクロボタンをクリックすると現れる、「マクロの記録」ダイアログボックスの[実行]ボタンをクリックしてみましたが、何故か日付表示に変化が御座いませんでした。
- KURUMITO
- ベストアンサー率42% (1835/4283)
表示形式で対応することはできないでしょう。 A1セルに日付のデータが1997/8/1のように有るとしてらB1セルに次の式を入力してはどうでしょう。 =TEXT(A1,"ggge年")&TEXT(A1,"(yyyy年) m月d日")&SUBSTITUTE(SUBSTITUTE(TEXT(A1,"(aaa)"),"(","["),")","]") (金)のように表示することは容易なのですが[金]は工夫が必要ですね。
お礼
御回答頂き有難う御座います。 折角御回答頂いた処、申し訳御座いませんが、日付を入力する欄は、数行を挟んで飛び飛びの行に存在していて、間に挟まる行数は、入力する文章の量によって変わって来るというもので、行の挿入や行の削除が行われる場合の方が多いため、他のセルに元データを入力する方法では、入力するセルを間違える恐れが高くなるかと思われましたので、今回は関数による方法は避けたいと考えております。
- since_1968
- ベストアンサー率24% (254/1053)
ggge"年("yyyy"年)"m"月"d"日"で表示されるのでは
お礼
御回答頂き有難う御座います。 その設定は、質問投稿前に既に試みていたのですが、 平成9年(9年)8月1日[金] と表示されるだけでした。
お礼
御回答頂き有難う御座います。 成程! 元号を表示させるのではなく、"平成"という文字列を表示させるとは、コロンブスの卵的な発想に頭が下がる思いです。 それにしても、[$-411]ggge"年("yyyy"年)"m"月"d"日"が駄目で、"平成"[$-411]e"年("yyyy"年)"m"月"d"日"が意図した通りに表示されるのは何故なのか不思議に思います。 >また、和歴と西暦を組み合わせるか否かとは関係なく、「元年」が「1年」と、おかしな表示になってしまうので、その点にもご注意ください。 その点は、[$-411]ggge"年"m"月"d"日"であっても同様ですので、構わないのですが、 >なお「昭和」の日付であっても「平成」と表示してしまうので、ご注意ください。 の方は多少引っ掛かりを覚えます。 今回の作成する書類に関しては、幸いな事に平成に入ってからの日付しか入力しませんので、MarcoRossiItaly様の方法でも構わないのですが、その内、昭和の日付を入力しなければならない場面も出て来ると思われますので、何とかしたい処です。
補足
補足欄にて失礼致します。 御教え頂いた表示形式を基にさせて頂いて、「大正」、「昭和」、「平成」の3つの元号にのみ対応する表示形式を見つける事が出来ました。(明治の場合は大正と表示されてしまいますが) [<9856]"大正"[$-411]e"年("yyyy"年)"m"月"d"日["aaa"]";[<32516]"昭和"[$-411]e"年("yyyy"年)"m"月"d"日["aaa"]";"平成"[$-411]e"年("yyyy"年)"m"月"d"日["aaa"]"