• 締切済み

エクセルで各シートに日付・曜日一括表示するには

(1)エクセルで7月31日分のシートをつくり、今年のカレンダーどおりの日付・曜日を(各シートのA1セルに、いちいち入力するのではなく)一括で各シートのA1セルに表示できる方法があれば、教えて下さい。 (2)エクセルで昨年7月の平日の数だけシートがあるファイルがあります。各シートのA1セルには、「平成19年7月○日(○曜日)」と入力されています。 このファイルを、今年の7月の平日カレンダーに一括置換するには、どうすればいいでしょうか? 昨年と今年は平日の日付はもちろん、同じ日でも曜日が違いますので、各シートを開き、いちいち日付・曜日を直さなければいけないのでしょうか。教えて下さい。宜しくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)31枚のシートに1日づつずらした日付を入れる方法 VBAで無いと出来ないでしょう。下記のように簡単。 シートの名前がシート1,シート2・・などで、そのシート名の1や2・・に頼る方法もありますが、変えられるとだめになるので、やめておいたほうがよいでしょう。 シートが別になると連続データの作成や関数式の複写が働かなくなるので難しいのです。 Sub test02() For i = 1 To 4 Sheets(i).Range("a1") = #6/30/2008# + i Sheets(i).Range("a1").NumberFormat = "yyyy/mm/dd(aaa)" Next i End Sub ただし日付を入れるシートは31枚がシート名のタブ位置的に固まっていること、他のシートが混じってないこと。が条件です。 私はシートが4枚しかないので、4でテストしたが For i = 1 To 31 で、シートを31枚用意してやってください。 (2)今年の日付で置き換え ただし去年のシートは平日枚数分がシート名のタブ位置的に固まっていること、他のデータ性格のシートが混じってないこと。という前提で (1)上記のプログラムの中で、WEEKDAY関数で土日を判別し (海の日が規則を乱すが特別に判別して飛ばす)土日は飛ばして次のシート(.Nextシート)に順順に日付をセットしていけば簡単。 Sub test03() Sheets(1).Select For i = #7/1/2008# To #7/4/2008# If Weekday(i) = 1 Or Weekday(i) = 7 Or i = #7/21/2008# Then Else MsgBox Format(i, "yyyy/mm/dd(aaa)") ActiveSheet.Range("A1") = Format(i, "yyyy/mm/dd(aaa)") ActiveSheet.Next.Activate End If Next i End Sub ただし今年平日数より、1シートだけ最後の次に余分にシートを作っておいて実行してください。 祝日・会社休業日等を年間で一般化するのはコードが複雑になる。

reaf
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

#1のレスは、 (2) に対するものです。 (1) に関しては、VBAで行行うことになると思います。

reaf
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

「置換」でオプションの検索場所を「ブック」にして、 検索する文字列:2007 置換後の文字列:2008 としてはいかがでしょう?

関連するQ&A