本記事はエクセルで文字の大きさの固定を解除する方法を解説します。
ポイントは、以下の通りです。
・VBAを用いた方法
・DATE関数を用いた方法
それでは詳しい内容を確認していきましょう!
エクセルで1ヶ月分の日付をシート名に一括反映する方法1【日ごと】
VBAを用いて日ごとに1ヵ月分の日付をシートに反映します。
シート「テンプレート」に業務日報のテンプレートがあります。

このテンプレートを使い、業務日報を1ヵ月分の日付ごとで作成したいと思います。
以下のコードをVBE画面に貼り付けましょう。
Sub CreateWorkReport()
Dim First_Sht As Worksheet
Dim Months As Long
Dim Mydate As Date
Dim i As Long
Dim ShtName As String
Set First_Sht = ActiveSheet
Mydate = First_Sht.Range("C3").Value
Months = DateAdd("m", 1, Mydate) - Mydate
For i = 1 To Months
If i = 1 Then
First_Sht.Name = Format(Mydate, "m月d日")
Else
First_Sht.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(Mydate, "m月d日")
ActiveSheet.Range("C3").Value = Mydate
End If
ActiveSheet.Columns("C:C").AutoFit
Mydate = DateAdd("d", 1, Mydate)
Next i
MsgBox "完了"
End Sub

今回は2025年7月分のシートを作成します。
テンプレートの日付の欄に「2025年7月1日」と入力して、作成したマクロを実行します。


マクロを実行すると、7月1日~7月31日分のシートが作成されます。

マクロを実行すると7月1日から7月31日までのシートが作成され、日付欄には対応した日付が記入されました。
マクロを解説します。
・最初のシートをアクティブになっているシートと定義
・最初の日付を日付欄のC3セルに入力されている日付と定義
・DateAdd関数を用いて日付をもとに1ヵ月間が何日あるか計算します。
・ループ構文で1か月間の日数分シートを作成し、日付欄に日付を入力し、シート名は日付になるようにします。
ただし最初のシートは既に日付が入力されているため、シート名のみ変更するようにします。
・日付を入力する際にすべて表示されるように列幅を自動調整します。
・すべての動作が終わると「完了」というメッセージが表示されるようにします。
エクセルで1ヶ月分の日付をシート名に一括反映する方法2【日ごと】
関数を使った方法を紹介します。
まず、業務日報のシートを日付分コピーして準備します。

次に開始の日付を入力する為に新しくシートを追加します。シート名は「Sheet1」とします。

Sheet1のA1セルに開始日付である2025/7/1を入力します。

任意のシートを選択して、右クリックですべてのシートを選択 をクリックします。


Sheet1のシートだけ選択から外すため ctrlキーを押しながらSheet1シートを選択します。

Sheet1シート以外が選択された状態になりました。
次に業務日報の7月1日のシートにて、日付欄のセルC3をダブルクリックし以下の関数を入力してください。
=DATE(YEAR(Sheet1!$A$1), MONTH(Sheet1!$A$1), SHEET() – 1)
他の日付のシートにも一括で関数が入力されます

7月31日のシートまで日付が自動で入力されていることが確認できます。
関数を説明します。
DATE関数は引数で指定された年/月/日を日付として返します。
YEAR()で年を求める→2025年
MONTH()で月を求める→7月
SHEET関数は対象シートがはじめから数えて何番目のシートか返す関数です。
今回はSheet1分引かなければいけないので-1が必要です。
この方法では必ずシートの順番が正しいことを確認してください。
エクセルで1ヶ月分の日付をシート名に一括反映する方法1【週ごと】
次に週ごとにシート名を作成します。まずはVBAを用いた方法です。
例として以下に示す週報のテンプレートがあります。

以下のコードをVBE画面に貼り付けましょう。
Sub CreateWeeklyReport()
Dim First_Sht As Worksheet
Dim Months As Long
Dim Weeks As Long
Dim Mydate As Date
Dim i As Long
Dim ShtName As String
Set First_Sht = ActiveSheet
Mydate = First_Sht.Range("C3").Value
Months = DateAdd("m", 1, Mydate) - Mydate
Weeks = Months / 7
For i = 1 To Weeks
If i = 1 Then
First_Sht.Name = Format(Mydate, "m月d日") & " ~ " & Format(Mydate + 6, "m月d日")
Else
First_Sht.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(Mydate, "m月d日") & " ~ " & Format(Mydate + 6, "m月d日")
ActiveSheet.Range("C3").Value = Mydate
ActiveSheet.Range("E3").Value = Mydate + 6
End If
ActiveSheet.Columns("C:C").AutoFit
ActiveSheet.Columns("E:E").AutoFit
Mydate = DateAdd("d", 7, Mydate)
Next i
MsgBox "完了"
End Sub

7月1日を開始日とします。
テンプレートの日付の欄のC3セルに2025年7月1日、その週の終わりの欄のE3セルに2025年7月7日と入力して、作成したマクロを実行します。

マクロを実行すると週ごとのシートを作成することができました。
マクロを解説します。
・最初のシートをアクティブになっているシートと定義
・最初の日付を日付欄のC3セルに入力されている日付と定義
・DateAdd関数を用いて日付をもとに1ヵ月間が何日あるか計算します。
・日数を7で割り、週数を求めます。
・ループ構文で1か月間の週数分シートを作成し、日付欄に日付を入力し、シート名は日付になるようにします。
ただし最初のシートは既に日付が入力されているため、シート名のみ変更するようにします。
・日付を入力する際にすべて表示されるように列幅を自動調整します。
・すべての動作が終わると「完了」というメッセージが表示されるようにします。
エクセルで1ヶ月分の日付をシート名に一括反映する方法【週ごと】
同様に関数を使った方法を紹介します。
まず、業務日報のシートを週分コピーして準備します。

次に開始の日付を入力する為に新しくシートを追加します。シート名は「Sheet1」とし、Sheet1のA1セルに開始日付である2025/7/1を入力します。

任意のシートを選択して、右クリックですべてのシートを選択 をクリックします。


Sheet1のシートだけ選択から外すため ctrlキーを押しながらSheet1シートを選択します。
![]()
Sheet1のシートだけ選択から外れます。
次に業務日報の7月1日~7日のシートにて、日付欄の週の始めのセルC3をダブルクリックし以下の関数を入力してください。
=DATE(YEAR(Sheet1!$A$1), MONTH(Sheet1!$A$1), 7*(SHEET() – 2)+1)

続けて日付欄の週の終わりのセルE3をダブルクリックし、以下の関数を入力してください。
=DATE(YEAR(Sheet1!$A$1), MONTH(Sheet1!$A$1), 7*(SHEET()-2)+7)

他の日付のシートにも一括で関数が入力されます。
エクセルで1ヶ月分の日付をシート名(1週間ごとも)に一括反映する方法
この記事では、エクセルで1ヵ月、1週間分の日付をシート名に一括反映する方法を紹介しました。
ただコピーするだけだと大変な作業ですがこれら方法を用いることで時間短縮に大きくつながるかと思います。
ぜひ参考にしてみてください。


コメント