• ベストアンサー

Excel 前年月日の入力

こんにちは Excelで日付を入力する際、月日だけをキーインすれば本年の月日で入力されます。 例えば"1/4"とキーインすれば2013年1月4日で入力されたことになります。 普通はこれで便利なのですが、例えば、本日(1月4日)に"12/31"とキーインすれば2013年12月31日になります。 2012年12月31日を入力したいときは"2012/12/31"とか"12/12/31"としています。 もっと便利に(キータッチを少なく)前年など本年以外の年月日を入力する方法はないでしょうか? Excel2010ですが、おそらくどのバージョンでも共通かと思います。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

具体的な状況によっても,いろんな手を使い分けるのが実際です。 たとえば基本的に今年(今月)の日付を記入する中に,たまに先月(去年)の日付が混じっているとかだと,どれは今年でどれが去年なのかは,数字を見ているあなたの方でしか判断つきませんよね。 先月の記入がたまになら,やっぱり12/12/15みたいにしてちゃちゃっとその場その場で入れてしまうのが一番簡単と思います。 一方,先月の日付をまとめて多数連続記入したいみたいな状況ですと,たとえば ○パソコンの日付を去年の日付に一時的に変更しておいて記入する ○セルに数字の「1」「2」「3」で「日付」だけ記入,その後どこかのセル1個に「2012/11/30」のように記入,コピーして1,2,3のセルに形式を選んで貼り付けの「加算」で貼り付ける ○とりあえず「12/31」で2013年の日付で記入させておき,Ctrl+Hで置換のダイアログを出して2013を2012に置換してしまう(必要に応じて置換対象セル範囲を選択しておいて実施) なんて手もあります。 特定のシートに限って不特定に去年の日付が紛れてくるみたいなお話だと,「どこからどこまでは今年」で「どこからどこの日付は去年」みたいな仕分けを考えてマクロに自動修正させるのも一つの方法です。たとえば「来月以降の日付が記入されたら問答無用で去年」とか,「今日から半年先以降の日付なら去年」とか。

AkiraHari
質問者

お礼

ありがとうございます。 マシンクロックの変更は他のAPに影響しないように気を付けないといけないのであまりしたくないですね。

その他の回答 (6)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.7

最少は「12/12/31」でしょう。 > もっと便利に(キータッチを少なく)前年など本年以外の年月日を入力する方法はないでしょうか? 一言。 「無い」 ですね。 ここから先は戯言ですから、興味が無かったらスルーなさってくださいね。 仮に有ったとして、入力された「12/31」と言う日付が 「昨年なのか今年なのか、どうやって判断しましょう?」 と言う新たな問題が発生しますよね? この機能が動いている時に、 “今年の”12月の日付を本当に入力したかったらどうします? やはり「13/12/31」と打たなきゃならないんじゃないですか? 結局、あっても無駄な機能だと思いますけどね。 そもそも、今年なのか昨年なのか、 エクセルにコレを自動で判断させようと言うのが酷な話です。 この辺は、入力する人間の判断が一番正確です。 マクロで自動置換は便利かもしれませんが、 使い方を間違ったり、解除を忘れたら厄介です。 ズラっと入力して、あとでまとめて置換も良いですが、 余計なものまで置き換えてしまう可能性は残ります。 どちらの手段も、間違うと余計な手間がかかります。 VBAでキータッチが増えるとおっしゃる方にはオススメできません。 素直に6~8回キーボードのボタンを押すのが一番早い。 「12/12/31」「12/1/1」などのように。 と言うのが結論でしょう。 一つだけ、可能性があるとしたら、こんな手段。 カレンダーコントロールを組み込んだユーザーフォームを作成、 これをショートカットキーに割り当てておく。 日付を入力したいセルにフォーカスを当て、 ショートカットキーでユーザーフォームを呼び出す。 日付をダブルクリックすると、セルに日付が入る。 この仕組みを作っておけば、ダブルクリックを含めても操作は最低3~4回で終わります。 無論「この仕組みを作る」手間はあります。 VBAのコードを記述するキータッチはかなり多いですが、 一回作ってしまえばずっと使えますから、“長い目で見ると”かなりの省力化を図れます。 あ、VBAはキータッチが増えるから却下でしたね。 失礼しました。

AkiraHari
質問者

お礼

ありがとうございます。 やはり「最少は"12/12/31"で」すか。 会計年度というのがあるので結構需要はあると思うのですが。

回答No.6

(1) やはり、No.4 さんのおっしゃるように後でまとめて置換するとか、No.2 さんなどのマクロとかがラクかと思います。 (2) それ以外では、参考 URL にて、オートコレクトを使って「..」などの特定の記号を「2012/」などの特定の「年/」に自動変換させる技が紹介されています。気持ち、入力がラクになるかもしれません。 (3) 「2012/12/31」のシリアル値をキーボードから入力するには、「12/12/31」の他に、「h24.12.31」または「h24/12/31」でも、できます。元号のほうが分かりやすい場合は、どうぞ。 ただ、こちらの手元の Windows 環境では、次のように設定した場合に、元号での入力で不具合が生じました。コントロールパネルの「地域と言語のオプション」のカスタマイズで、日付の「短い形式」の記号に含まれる「/」(スラッシュ)を「.」(ドット)に書き換えると、Excel2007 での元号による入力値がシリアル値には変換されず、文字列となりました。括弧付きの曜日を付け加えた書式などは問題ないのですが、「.」は相性が良くないようです。 また、「12/12/31」での入力の場合、年が 29 以下は 2029 などに変換されますが、30 以上だと 1930 などに変換されたりするので、ご注意。ただし、このようになる数値の範囲は、同じく「地域と言語のオプション」のカスタマイズの、「カレンダー」の欄で変更できます。 (4) 大した案でもないですが、次式は、A 列に月を、B 列に日を入力すると、A 列が 11 より大きい場合は 2012 年のシリアル値に、11 以下の場合は 2013 年のシリアル値にしてくれます。Tab キーあるいは十字キーで右方向のセルに移動しながら入力すれば、一応「12/12/31」よりはタイプ回数が減っています。 =date(2013-(a1>11),a1,b1) >少ないキーインで行いたいので、VBAでは余計掛かってしまいます。 なぜ??? Worksheet_Change なんですから、年が異なっても、キー操作の増加量はゼロのような。 もっとも、入力すべき日付データの量が少ない場合は、コードも何も用意しないまま、いきなり入力してしまったほうが早いでしょうけど。

参考URL:
http://www.relief.jp/itnote/archives/003781.php
AkiraHari
質問者

お礼

ありがとうございます。 和暦入力は"H"が付く分、西暦下2桁より多くなります。 VBAはコーディングのキーイン分が多いという意味です。 それよりは「=date(2013-(a1>11),a1,b1)」のようにします

  • jacky-ts
  • ベストアンサー率47% (17/36)
回答No.5

私が知る限りでは、"12/12/31"とタイプするのが最小タイプ数です。

AkiraHari
質問者

お礼

ありがとうございます

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

簡単にはないですね。 多数の日付を入力するなら、いちど 12/xx で入力してから、まとめて 365 を引けばいいと思います。 どこかのセルに365を入力してコピーして、貼り付け先の範囲選択して、形式を選択して貼り付けの減算。

AkiraHari
質問者

お礼

ありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! VBAになってしまいますが、一例です。 A列に日付を入力するとします。 表示するシリアル値が必ず前年と決まっているのであれば・・・ 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA列に日付データを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim tmp As Date If Application.Intersect(Target, Columns(1)) Is Nothing Or Target.Count <> 1 Then Exit Sub On Error Resume Next If Target <> "" Then tmp = Target Application.EnableEvents = False Target = DateAdd("yyyy", -1, tmp) Application.EnableEvents = True End If End Sub 'この行まで ※ コード内の >DateAdd("yyyy", -1, tmp) の部分が「1年前」になります。 「-1」の部分で表示したい年を調整してみてください。m(_ _)m

AkiraHari
質問者

お礼

ありがとうございます。 少ないキーインで行いたいので、VBAでは余計掛かってしまいます。

noname#178987
noname#178987
回答No.1

=TODEY で、作成してるその日がでます。 そして、選択で、表示方法を変えれば、 文書作成時に勝手にその日の表示をしてくれます。 試してください。 オートSAMにも入ってますよ。

AkiraHari
質問者

お礼

質問内容を勘違いされているようですね。

関連するQ&A

専門家に質問してみよう