- ベストアンサー
エクセルでの日付入力
エクセル2000を使っています。 和暦で入力しても、西暦で入力しても、和暦で表示 させるようにしたいのです。 ex)入力時 表示 2003/12 → H15/12 15/12 → H15/12 4桁の数字が入力されたら和暦変換して、2桁以下の数字が入力されたらそのまま表示する…なんてことが 出来たらとてもうれしいのですが。 よろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まず、この問題は、書式だけでは、出来ないと思います。(Excel2000) あと、入力する際に、「日にち」も入力しているのですね。 例では、入っていませんが・・・。 「日付形式」は、年、月、日で構成されています。 もうお気づきと思いますが、13/10 だけ入力するとH13のつもりが、10月13日と 認識します。 日付形式を扱うには、年、月、日の入力が必須です。 どうしても、日を省略したい場合は、「文字列」で処理することになるでしょう。 (この場合も、VBAで処理することになります。その旨補足してください。) 「日にち」も入力することを条件にしてもVBAで処理するより方法はないと 思います。 下記コードは、10年以上を入力した場合に「平成年」と認識し、自動変換します。 それで宜しかったら、詳しい操作手順を書きますので、テストしてみてください。 ・使用しているシートのシート名タブを右クリックして「コードの表示」を 指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 ・コードの2行目で機能させる範囲を指定します。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 ・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を 「中」にして[OK]します。 ・以上で設定完了です。 指定範囲の書式を適宜指定します。H15/10 形式は「ユーザー定義」で ge/m に。 これで如何でしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Const Hani = "A1:A20" '<---- 機能範囲指定 Dim Rng As Range Dim R As Range Set Rng = Application.Intersect(Range(Hani), Target) If Rng Is Nothing Then Exit Sub For Each R In Rng If IsDate(R) Then If Year(R.Value) >= 2010 Then Application.EnableEvents = False R.Value = DateAdd("yyyy", -12, R.Value) Application.EnableEvents = True End If End If Next R End Sub
その他の回答 (3)
- ja7awu
- ベストアンサー率62% (292/464)
> 実は、10年以下を入力した場合も「平成」と認識して欲しいのです。 幾らかは、下げられますが、限度があります。 現Win-OSでは、西暦で入力する場合、西暦の下2桁だけを入力すると、上2桁が 20 と認識されることは、ご存知ですよね。 例えば、03/11/1 と入力すると 西暦2003年と認識されます。 それで、今、平成3年と入力する場合に、03/11/1 または 3/11/1 と 入力するとして、一方、西暦2003年を入力する際も 03/11/1 と入力します。 ということは、2003/1/1 も 3/1/1 も結果(セルの値)は、同じです。 この2つの同じ入力値をパソコンに西暦か和暦かを判断させることは、 酷というものです。 ということで、下記コードの 2010 を少なくすると和暦に変換する範囲は、 下に広がりますが、しかし、限度があります。上の理由で西暦年か和暦年か区別出来なく なってしまいます。 現時点では、2004 まで下げてテストしてみてください。 これで 04/01/01 入力で H4/1 と表示されます。 しかし、この状態では、来年になると、西暦で入力すると、そのままの数値で 和暦で表示されることになります。 If Year(R.Value) >= 2010 Then ちなみに 03/01/01 と入力して平成3年1月 と表示させるのであれば、 書式を文字列形式にした上で、VBAで処理する必要があります。
お礼
過去10年まで入力できれば良いので、教えていただいた方法で完璧です! 貴重なお時間を割いて答えてくださって本当にありがとうございました(^^)
こんにちは。 セルの書式設定で分類「ユーザー定義」の種類を「$-411ggge"年”m"月”d"日”;@」と書きOKにしてみてください。
補足
ありがとうございます! しかし…入力した形式が正しくないと拒否されてしまいました(+_+) 「ユーザー定義」のルールに詳しくないので…(@や$-411はどんな意味なのでしょう??) アドバイスを生かしきれなくてごめんなさい。 もう一声、お教え願います。
- kotoko
- ベストアンサー率33% (1142/3362)
こんにちは。 セルの書式設定で分類「ユーザー定義」の種類を「ge/m」と書きOKにしてみてください。
補足
さっそくのお答えありがとうございます! しかし…西暦で入力したときには、和暦に変換してくれるのですが、和暦で入力するとなぜか「H15」になってしまうのです。("13"と入力しても"15"!なんてガンコな…) 何がいけないのかしら?
補足
ほんとうに詳しい解説ありがとうございます >もうお気づきと思いますが、13/10 だけ入力するとH13のつもりが、10月13日と >認識します そうでしたか…が、日付まで入力すると教えていただいた方法で出来ました!うれしいです(^^) 実は、10年以下を入力した場合も「平成」と認識して欲しいのです。 もしよろしければ、ご負担にならない範囲で教えていただければと思います。 甘えすぎてごめんなさいっ!