- ベストアンサー
エクセルの日付の計算について
いつもお世話になっています。 日付を入れれば1か月の各人あての非常勤職員の勤務時間表を作成して プリントするマクロを作っているのです。この勤務時間表の最初の日が21日 と固定されています。 現在は日付の欄に、毎月 「2014/02/21」と入力するのですが、日付まで いちいち入力するのが面倒ですので、「2014/02」と入力しただけで、自動的 に「2014/02/21」を返すようにはどうしたらよろしいでしょうか? よろしくご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>最初の入力の時に「1」が出る… 「1」が出ない表示形式にします。 例えば、 〔A列に2014/02と入力すると、A列は2014/02のままでB列に2014/02/21と表示される〕 ということをしたいのであれば、 A列の表示形式:yyyy/mm B列の表示形式:yyyy/mm/dd と列ごとに設定し、B列に、=A1+20とします。 マクロを使うにしても、基本的な考え方は一緒です。
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 数式で処理するのか、数式の処理なら、入力セルと出力セルとを別けていれるとか、それとも、書式で処理するのか、または、マクロで処理するのとか、 数式: =TEXT(A1,"yyyy/mm")&"/21" 書式では、日付シリアル値としては認識されませんが、 書式: 書式のユーザー定義で、 yyyy/mm"/21" とすればよいでしょう。 >いちいち入力するのが面倒ですので、「2014/02」と入力しただけで、自動的に「2014/02/21」を返す 個人的には、「2014/02」の入力と、「2014/02/21」との差はほとんどないような気がするので、本来は、マクロで処理するなら、特定のセルに、「2」だけ入れてたら、それが、2014/02/21になるとか、もう少し条件を加えてもよいとは思います。 マクロで、20足すというのは芸がないので、こんな方法を考えました。 つまり、以下の場合は、あくまでも、2014/2 もしくは、2014/02と入れないと、日付と認識しないようにしました。言い換えれば、2014/15 なら、そのままになるということです。 以下は、ブックのいろいろなシートで使うなら、ThisWorkbook に登録 もしも、シートは特定のものなら、シート側のローカルペインで、 Private Sub Workbook_SheetChange....を、Private Sub Worksheet_Change(ByVal Target As Range)へ入れ替えてください。 '// Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim myDate As Variant If Target.Address(0, 0) <> "A1" Then Exit Sub 'セルはA1のみとする Application.EnableEvents = False With Target myDate = Format(.Value2, "yyyy/mm") If IsDate(myDate) Then .ClearFormats .NumberFormat = "yyyy/mm/dd" .Value = myDate & "/" & "21" End If End With Application.EnableEvents = True End Sub '//
お礼
早々のご教示ありがとうございます。 丁重なマクロありがとうございました。 なるほど、マクロでここまでやればいいですね。 ただ使用する人が私のそばにいないので、マクロに トラブルが あるとパニックになってしまいそうで…
補足
マクロありがとうございます。 これをサンプルにして、また別のシステムに使ってみます。
- yaritsusozai
- ベストアンサー率59% (50/84)
20足すだけです。 ワークシート上なら、日付入力欄と結果出力欄をわけて、出力セルに、=入力欄+20 マクロなら、当該セル=当該セル+20 要するにExcelは、2014/02と入力すると、自動的に、2014年2月1日なんだろうな、と判断するので、20足せばそれで可です。
お礼
早速のご教示ありがとうございます。 確かに入力すれば2014/2/1となって、それに20足すだけでいいのは わかります。でもそうすると最初の入力の時に「1」がでますよね それを嫌がる人がいるんですよ。 で、入力欄にはできれば年/月しか表示したくないのです。
お礼
早速のご教示ありがとうございます。 そうか!書式設定でそうすればよかったんだ! 眼からうろこの発想です。 ありがとうございました。