おっとっと~・・・。
①、②を行うためには、これまでご紹介してきた数式を更に変更する必要があります。
数式がいくつもあって煩雑で分かりにくくなってきましたので、改めて、①、②を考慮した「提案1」としてまとめてみました。
「提案1」は、全て最初から作りなおす場合を想定して書いています。ご注意ください。
<提案1>
[ カレンダーの作成 ]
- シート名(①を考慮。)
何年かといった数字を加えずに、単に「カレンダー」とします。
- 1行目の入力(②を考慮。)
A1セルに 2022/1/1 、B1セルに 2022/2/1 、・・・というように月初の日付を入力していき、最後に L1セルに 2022/12/1 を入力します。
※単に 1/1 とかではなく 2022/1/1 というように、必ず「年」の入力を行ってください。
- 2行目以降の数式(②を考慮。)
A2セルに以下の数式3を入力(あるいはコピー・貼り付け)し、これを右方向(列方向)に L2セルまでコピーし、更に、A2セルから L2セルまでを選択したまま 31行目までコピーします。
・数式3
=IF(A1<EOMONTH(A$1,0),A1+1,"")
- 曜日の表示
日付部分全体( A1:L31 の範囲)を選択し、「セルの書式設定」->「表示形式」->「ユーザー定義」で yyyy/m/d"("aaa")" を設定します。
図4は、上記の手順でカレンダーを作成した結果です。
・図4

※尚、各セルの背景色の色付けについては「条件付き書式」で行っていますが、ご自身で設定できているようですし、こういった色付けは各数式に影響しませんので設定方法等は省略します。
[ 物品発注書の作成 ]
※以下で書いている部分以外については書き込み済みと想定しています。
- シート名(①を考慮。)
まず最初に 1月のシートを作るので、シート名を「1月」とします。
- 数式の入力(①を考慮。)
A6セルに以下の数式4を入力(あるいはコピー・貼り付け)します。
・数式4(数式1-1修正版の改修版。)
=LET(dt,OFFSET(カレンダー!$A$1,,TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"]"," "),2))*1-1,31,),FILTER(dt,IFERROR((WEEKDAY(dt)=3)+(WEEKDAY(dt)=6),0)))
・変な箇所で自動的に改行されているかもしれませんが、全部で 1行の数式です。
・この数式では「スピル」が働きます(最新版の Excel ではこれが標準です)ので、A6セルに数式を入れるだけで A列に必要な日付データがすべて表示されます。( FILTER 関数は、この「スピル」が働かないと動作しません。)
・この数式では、シート名から何月の日付データを表示しなければならないのかを判断しています。
例えば、シート名が「1月」でしたら、この数式4の入力と下記の数式5のコピーが終わった時点で、「カレンダー」シートのデータを参照して 1月の全ての日付データが表示されます。
C6セルに以下の数式5を入力(あるいはコピー・貼り付け)します。
・数式5(数式2と同じもの。)
=IF(A6="","",A6+1)
・この数式を C15セルまでコピーします。( C15セルとしているのは、ここまでは表示されないだろうと推測できる最大の範囲だからです。)
・この数式では、単純に A6セルが空白だったら空白(空白の文字列)を表示し、空白でなければ A6セルの日付を +1 して表示します。
※両方の数式の入力後、A列と C列の日付データ両方に、「セルの書式設定」->「表示形式」->「ユーザー定義」で m/d"("aaa")" を設定します。
※おまけ(笑)
A1セルに以下の数式6を入力(あるいはコピー・貼り付け)します。
A1セル(結合セル)には「2022年 1月 物品発注書」といった文字列を入力しているかと思いますが、この部分も以下の数式6を入力することで「年月」の自動入力が可能です。よろしければ組み込んでみてください。
・数式6
=TEXT(カレンダー!$A$1,"yyyy")&"年 "&TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"]"," "),2))&"月 物品発注書"
・変な箇所で自動的に改行されているかもしれませんが、全部で 1行の数式です。
・この数式では、「カレンダー」シートの A1セルの内容から「年」の情報を取り出し、このシートのシート名から「月」の情報を取り出して表示させています。
- 各月のシート作成
数式4では、シート名の中から「月」のデータを取り出して、何月の日付データを表示しなければならないかを判断し、「カレンダー」の中から該当の日付データを取り出しています。
なので、「カレンダー」が出来ているのであれば(色付けは特に必要ありません)、以下のような方法で簡単に 12ヶ月分の「物品発注書」を一気に作り上げることが出来ます。
[1]「1月」のシートのコピーを作成し、シート名を「2月」に変更するだけで 2月分が出来る。
[2」シートのコピーを繰り返し、シート名の月の部分の数字を変えるだけで 12ヶ月分の「物品発注書」が出来上がる。
※もちろん、毎月手書きで修正しなければならない箇所については、修正が必要ですが・・。
図5は上記の手順で「物品発注書」を作成した結果です。(おまけ含む)
※画像キャプチャしきれないため、1月、2月、5月、12月のみ表示させています。
・図5

[ 翌年からの運用 ]
- 今年(2022年)作成したファイルをコピーします。(ファイル名は何でも可。)
- コピーしたファイルを開き、「カレンダー」シートの A1セルの日付データを 2023/1/1 に変更(年を変更)し、同様の変更を L1セル( 12月分)まで繰り返します。
※これだけで、その年の「カレンダー」も「物品発注書」の日付データも 12ヶ月分が一気に出来上がります。
以上です。
尚、個人的な感想ですが、図4の「カレンダー」の表示は細かすぎて見にくくないですか?。
「セルの書式設定」で「年」データを表示しないように設定すれば良いかと思うのですが、そうすると今度は何年の日付なのか分からなくなってしまいます。
そこで例えば、図6のような「カレンダー」(いわゆる「万年カレンダー」です)にすれば、かなり見やすくなりますし、「年」データを 1行目( 1ヵ所)に入力するだけで、その年の「カレンダー」も「物品発注書」の日付データも 12ヶ月分を一気に作成することも可能です。
・図6

これを「提案2」としてご紹介するつもりで「物品発注書」の数式も含め全て作ってみたのですが、ちょっと疲れ気味で・・、今はただ単に代案もあるということで憶えておいていただければと思います。
図6の「万年カレンダー」は、色々と応用も利きます。今回だけではなく別の機会に使ってみても良いかと思いますよ。
- A1セル(結合セル)には「年」のデータを数値で入れ、「セルの書式設定」で G/標準"年" を設定。
- A2セルには「月」のデータを数値で入れ、「セルの書式設定」で G/標準"月" を設定した後、これをオートフィルで L2セルまで連続データとしてコピー。
- A3セルの数式は =DATE($A1,COLUMN(A1),1) です。これを L3セルまでコピー。
- A4セルの数式は =IF(A3<EOMONTH(A$3,0),A3+1,"") です。これを A4:L33 の範囲にコピー。
- A3:L33 の範囲には、「セルの書式設定」で d"("aaa")" を設定。
お役に立てれば幸いです。