• ベストアンサー

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

いつもお世話になっています。 日付を入れれば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

  • エクセルの日付の計算(という表現でいいのかな?)

    エクセルの初心者です。よろしくお願いいたします。 エクセルで月単位の集計表を作ろうとしています。毎月25日から翌月の24日までの間のある値を表に書き込むというものです。 いままでたまったデータは十年分くらいあります。月にすると120ヶ月分となるのですが、いちいち日付を打ち込むのが大変なので、エクセルの関数やマクロなどを使って効率よくできないものでしょうか。 具体的には・・・      A       B     DATA 1  1994/01/25  1994/02/24  1000 2  1994/02/25  1994/03/24  2000 3    ・       ・     ・ 4    ・       ・     ・ 5  2003/01/25  2003/02/24  3000 というような表で、A1は初期値なので入力するとして、あとのB1、A2、B2・・・は自動的に表示させるようにしたいのです。 よろしくお願いいたします。

  • エクセルで日付けの挿入

    表をエクセルで管理しています。A列は日付け欄、B列は商品名です。 B欄に商品名を入力した時、隣のA欄にB欄の入力日を標示したいのですが、マクロ(?)の記述をご教授下さい。

  • エクセルの日付

    シート1に表を作り日付の欄に入力すると、シート2の日付の欄にも自動的に同じ日付が入力されるようにするにはどうしたらよいのでしょうか?教えてください。よろしくお願いします。

  • エクセルマクロ 日付を検索し入力

    エクセル2003マクロを使用して以下の事を行いたいと思っていますが、どのようなマクロを組んだらよいか分かりません。よろしくお願いします。 シート上部にある以下のデータを    A      B     C      D      E     1  日付 商品A 商品B 商品C  商品D 2  5/26    5     6     1       3    ←その日のデータ(毎日変わる) 入力ボタンを作成し、それを押すことにより        ↓ 6   5/1 7    ・ 8    ・ 9   5/26   5     6     1     3 10    ・  ↑日付が予め入力された表 上記のような、同一シート上の日付欄に入力される表を作りたいのですが、方法が分かりません。 その日のデータは、別シートに入力用フォームを作成し、飛ばしています。何人かの人間が入力するので、マクロで簡単に、行えるようにしたいと思います。よろしくお願いします。

  • エクセルの計算式について

    エクセルで勤務表を作っているのですが、曜日の所で困っています。 以下の条件ですので、よろしければ計算式を教えてください (1)-(1)A3からA33?に日付を入力する欄として、例とすると「9月26日始まり、10月25日締め」などの条件になるようにする。日付を入力する欄には、月・曜日は表示されないように書式を設定する。 (1)-(2)日付欄には26から31、1から25を入力する(31日まで必ず入力する。31日の下からは1日になるようにする。) (2)A1に年度を入力し(2007などと入力)、A2に月を入力する(例として10月なら10と)。 (3)各月ごとの「土日」には条件書式として「灰色」に塗りつぶされるように設定する。 (4)各年度、各月が変わると自動でその月の「土日」が灰色に塗りつぶされるようにする。 わかりにくいと思いますがよろしくお願いします。

  • エクセルで表を作っていますがある曜日の日付を

    エクセルで表を作っていますがある曜日の日付を 欄に連続入力する方法はありますか?1週間置きの金曜日の日付を欄に連続入力したいのですが。

  • 今日の日付をマクロ化したいんです

    仕事でエクセルを使って受付表を作ってます。受付日を今までいちいち入力してたんですが、できればマクロをつかって毎日の入力作業を軽減したいと思うのですが、以前、関数のTODAYをマクロにしたんですが、これだと日付が更新されてしまうのでダメです。どうすればいいでしょうか?OS Xp エクセル2002です。

  • 日付の同じものを並べる。(エクセル2000)

    エクセル2000で表1は2行目を先頭行として、下の数字が入力されています。     A         B 2  2005/7/15     4 3  2005/7/8      5 4  2005/7/1      3 5  2005/6/24     5 6  2005/6/17     8 7  2005/6/10     8 また10行目を先頭行として表2は下の数字が入力されています。 10 2005/7/8 10 11 2005/7/1 12 12 2005/6/24 13 13 2005/6/17 21 14 2005/6/10 22 表1と表2で日付の同じものをまとめたいと思います。 ただし、表2における日付は固定していないので、必ずしもA3=A10とはなりません。 最終的には下の表を作りたいのですが、ご存知の方がいらっしゃいましたらよろしくお願いします。 2 2005/7/15 4      3 2005/7/8 5 10 4 2005/7/1 3 12 5 2005/6/24 5 13 6 2005/6/17 8 21 7 2005/6/10 8 22

  • マクロで日ごとの出勤者を抽出する方法

    エクセル2016でマクロを勉強中です。 介護施設の勤務表からシフト表を作成するために、当日の勤務予定の職員を抽出するマクロを組んでいますがうまくいきません。 画像の上側が勤務表で下側が一日のシフト表です。 シフト表のA1の作成日に入力すると、勤務表の1行目の日付から〇、●以外の職員名をシフト表のA列に全員自動で記載され、勤務時間帯を図のように塗りつぶすようなマクロは組めますでしょうか。

  • 日付の表示について

    エクセルの表に今日の日付を表示させたいのです。 いちいちその日の日付を入力するのではなくて、 その表を開いた日、今日開いたら2003/08/20で明日ひらいたら、2003/08/21という感じにできますか? よろしくお願いします。

専門家に質問してみよう