• ベストアンサー

エクセルの日付の計算について

いつもお世話になっています。 日付を入れれば1か月の各人あての非常勤職員の勤務時間表を作成して プリントするマクロを作っているのです。この勤務時間表の最初の日が21日 と固定されています。 現在は日付の欄に、毎月 「2014/02/21」と入力するのですが、日付まで いちいち入力するのが面倒ですので、「2014/02」と入力しただけで、自動的 に「2014/02/21」を返すようにはどうしたらよろしいでしょうか? よろしくご教示ください。

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

  • ベストアンサー
回答No.3

>最初の入力の時に「1」が出る… 「1」が出ない表示形式にします。 例えば、 〔A列に2014/02と入力すると、A列は2014/02のままでB列に2014/02/21と表示される〕 ということをしたいのであれば、 A列の表示形式:yyyy/mm B列の表示形式:yyyy/mm/dd と列ごとに設定し、B列に、=A1+20とします。 マクロを使うにしても、基本的な考え方は一緒です。

satoumasaru
質問者

お礼

早速のご教示ありがとうございます。 そうか!書式設定でそうすればよかったんだ! 眼からうろこの発想です。 ありがとうございました。

その他の回答 (2)

回答No.2

こんにちは。 数式で処理するのか、数式の処理なら、入力セルと出力セルとを別けていれるとか、それとも、書式で処理するのか、または、マクロで処理するのとか、 数式: =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 '//

satoumasaru
質問者

お礼

早々のご教示ありがとうございます。 丁重なマクロありがとうございました。 なるほど、マクロでここまでやればいいですね。 ただ使用する人が私のそばにいないので、マクロに トラブルが あるとパニックになってしまいそうで…

satoumasaru
質問者

補足

マクロありがとうございます。 これをサンプルにして、また別のシステムに使ってみます。

回答No.1

20足すだけです。 ワークシート上なら、日付入力欄と結果出力欄をわけて、出力セルに、=入力欄+20 マクロなら、当該セル=当該セル+20 要するにExcelは、2014/02と入力すると、自動的に、2014年2月1日なんだろうな、と判断するので、20足せばそれで可です。

satoumasaru
質問者

お礼

早速のご教示ありがとうございます。 確かに入力すれば2014/2/1となって、それに20足すだけでいいのは わかります。でもそうすると最初の入力の時に「1」がでますよね それを嫌がる人がいるんですよ。 で、入力欄にはできれば年/月しか表示したくないのです。

関連するQ&A