
こんにちは
Excelで日付を入力する際、月日だけをキーインすれば本年の月日で入力されます。
例えば"1/4"とキーインすれば2013年1月4日で入力されたことになります。
普通はこれで便利なのですが、例えば、本日(1月4日)に"12/31"とキーインすれば2013年12月31日になります。
2012年12月31日を入力したいときは"2012/12/31"とか"12/12/31"としています。
もっと便利に(キータッチを少なく)前年など本年以外の年月日を入力する方法はないでしょうか?
Excel2010ですが、おそらくどのバージョンでも共通かと思います。
No.4ベストアンサー
- 回答日時:
具体的な状況によっても,いろんな手を使い分けるのが実際です。
たとえば基本的に今年(今月)の日付を記入する中に,たまに先月(去年)の日付が混じっているとかだと,どれは今年でどれが去年なのかは,数字を見ているあなたの方でしか判断つきませんよね。
先月の記入がたまになら,やっぱり12/12/15みたいにしてちゃちゃっとその場その場で入れてしまうのが一番簡単と思います。
一方,先月の日付をまとめて多数連続記入したいみたいな状況ですと,たとえば
○パソコンの日付を去年の日付に一時的に変更しておいて記入する
○セルに数字の「1」「2」「3」で「日付」だけ記入,その後どこかのセル1個に「2012/11/30」のように記入,コピーして1,2,3のセルに形式を選んで貼り付けの「加算」で貼り付ける
○とりあえず「12/31」で2013年の日付で記入させておき,Ctrl+Hで置換のダイアログを出して2013を2012に置換してしまう(必要に応じて置換対象セル範囲を選択しておいて実施)
なんて手もあります。
特定のシートに限って不特定に去年の日付が紛れてくるみたいなお話だと,「どこからどこまでは今年」で「どこからどこの日付は去年」みたいな仕分けを考えてマクロに自動修正させるのも一つの方法です。たとえば「来月以降の日付が記入されたら問答無用で去年」とか,「今日から半年先以降の日付なら去年」とか。
No.7
- 回答日時:
最少は「12/12/31」でしょう。
> もっと便利に(キータッチを少なく)前年など本年以外の年月日を入力する方法はないでしょうか?
一言。
「無い」
ですね。
ここから先は戯言ですから、興味が無かったらスルーなさってくださいね。
仮に有ったとして、入力された「12/31」と言う日付が
「昨年なのか今年なのか、どうやって判断しましょう?」
と言う新たな問題が発生しますよね?
この機能が動いている時に、
“今年の”12月の日付を本当に入力したかったらどうします?
やはり「13/12/31」と打たなきゃならないんじゃないですか?
結局、あっても無駄な機能だと思いますけどね。
そもそも、今年なのか昨年なのか、
エクセルにコレを自動で判断させようと言うのが酷な話です。
この辺は、入力する人間の判断が一番正確です。
マクロで自動置換は便利かもしれませんが、
使い方を間違ったり、解除を忘れたら厄介です。
ズラっと入力して、あとでまとめて置換も良いですが、
余計なものまで置き換えてしまう可能性は残ります。
どちらの手段も、間違うと余計な手間がかかります。
VBAでキータッチが増えるとおっしゃる方にはオススメできません。
素直に6~8回キーボードのボタンを押すのが一番早い。
「12/12/31」「12/1/1」などのように。
と言うのが結論でしょう。
一つだけ、可能性があるとしたら、こんな手段。
カレンダーコントロールを組み込んだユーザーフォームを作成、
これをショートカットキーに割り当てておく。
日付を入力したいセルにフォーカスを当て、
ショートカットキーでユーザーフォームを呼び出す。
日付をダブルクリックすると、セルに日付が入る。
この仕組みを作っておけば、ダブルクリックを含めても操作は最低3~4回で終わります。
無論「この仕組みを作る」手間はあります。
VBAのコードを記述するキータッチはかなり多いですが、
一回作ってしまえばずっと使えますから、“長い目で見ると”かなりの省力化を図れます。
あ、VBAはキータッチが増えるから却下でしたね。
失礼しました。
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
ありがとうございます。
和暦入力は"H"が付く分、西暦下2桁より多くなります。
VBAはコーディングのキーイン分が多いという意味です。
それよりは「=date(2013-(a1>11),a1,b1)」のようにします
No.5
- 回答日時:
私が知る限りでは、"12/12/31"とタイプするのが最小タイプ数です。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 過去日付、年の切り替え 6 2022/05/26 12:41
- Excel(エクセル) 表の中を『年』で検索し、値を得たい。 4 2023/01/31 22:37
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- 簿記検定・漢字検定・秘書検定 簿記2級 表作成時の仕訳の問題 2 2022/07/07 18:15
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) エクセルについて教えてください。 1 2022/12/26 09:01
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) DATEVALUE関数がエラーになる 2 2022/07/12 19:30
- 教育・ドキュメンタリー 北海道コンサドーレ札幌の話 2 2022/11/13 06:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelに入力した個々の日付の数...
-
31:30:00が1900/1/1 7:30:0
-
日付だけを変更して印刷(Excel)
-
Excelで半年後の日付を計算したい
-
ファイルのオープン時に今日の...
-
日付を入力したセルをファイル...
-
エクセルで数字列の間に『/』を...
-
エクセルでENTERを押すと数式が...
-
Excelで8/26等の日付を全てその...
-
エクセル関数で日付かどうかの...
-
入力後に日付順になるように自...
-
エクセル 当番表の作り方 エク...
-
☆Excelエクセルで入力した日の...
-
参照先は空白なのに、なぜ年月...
-
エクセルで○歳到達日を出したい
-
日付入力→指定のセルの色を塗り...
-
WORDで翌日や翌々日の日付を表...
-
EXCELで直近の日付を抽出する関数
-
エクセル セルに109と入力する...
-
ワード差込について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】A列にある、日付(本...
-
Excelに入力した個々の日付の数...
-
日付だけを変更して印刷(Excel)
-
Excelで半年後の日付を計算したい
-
エクセルでENTERを押すと数式が...
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
Excelで8/26等の日付を全てその...
-
エクセルで数字列の間に『/』を...
-
エクセル 当番表の作り方 エク...
-
エクセルで日付入力欄を作成し...
-
ファイルのオープン時に今日の...
-
エクセル関数で日付かどうかの...
-
エクセルで1年後の月末を表示さ...
-
EXCELで直近の日付を抽出する関数
-
エクセル グラフ 軸の日付表記...
-
excelで月末日を判定したい
-
WORDで翌日や翌々日の日付を表...
-
ワード差込について
-
日付の照合でFALSEになります。
おすすめ情報