ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:reaf エクセルで各シートに日付・曜日一括表示するには
困り度:
  • すぐに回答を!
(1)エクセルで7月31日分のシートをつくり、今年のカレンダーどおりの日付・曜日を(各シートのA1セルに、いちいち入力するのではなく)一括で各シートのA1セルに表示できる方法があれば、教えて下さい。

(2)エクセルで昨年7月の平日の数だけシートがあるファイルがあります。各シートのA1セルには、「平成19年7月○日(○曜日)」と入力されています。
このファイルを、今年の7月の平日カレンダーに一括置換するには、どうすればいいでしょうか?
昨年と今年は平日の日付はもちろん、同じ日でも曜日が違いますので、各シートを開き、いちいち日付・曜日を直さなければいけないのでしょうか。教えて下さい。宜しくお願いします。
質問投稿日時:08/07/05 14:37
質問番号:4153083
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

 

回答者:imogasi (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シートだけ最後の次に余分にシートを作っておいて実行してください。
祝日・会社休業日等を年間で一般化するのはコードが複雑になる。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/07/05 21:21
回答番号:No.3
この回答へのお礼回答ありがとうございます。
参考にさせていただきます。

回答

 

回答者:marbin #1のレスは、
(2)
に対するものです。

(1)
に関しては、VBAで行行うことになると思います。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/07/05 15:14
回答番号:No.2
この回答へのお礼回答ありがとうございます。
参考にさせていただきます。

回答

 

回答者:marbin 「置換」でオプションの検索場所を「ブック」にして、
検索する文字列:2007
置換後の文字列:2008
としてはいかがでしょう?
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/07/05 15:12
回答番号:No.1
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示