こんにちは。
最近は豪雨災害も多いですね。幸いなことに自宅周辺では災害と言われるような事態が起こったことは無いのですが、コロナも含めてこういった事態が早く収まっていくことを願いたいですね・・。
>毎週火曜日および金曜日が祝日になった場合は、無視する。考慮しない。です。(その翌日、水曜日および土曜日も祝祭日は、無視する。考慮しません)
ということは、前回提案した<パターン1>で良いということですね?。
数式は出来ています(図1が、その数式の実行結果そのものです)が、説明文を考えるのが遅くなり、お待たせしてしまいました。
Microsoft365 を使用中との情報も、ありがとうございます。旧来の Excel 対応の数式を考えずに済みます。
以下、<パターン1>の数式のご紹介です。
※前提条件
「2022年カレンダー」の全ての日付が「日付のシリアル値」(数値)であって、(月)、(火)、などの曜日表示は、「セルの書式設定」で「表示形式」を「ユーザー定義」とし yyyy/m/d"("aaa")" のように設定しているものとします。
・数式1:図1の A6セルに入れる数式です。
=LET(mt,TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"年"," "),2))*1,dt,INDIRECT("2022年カレンダー!R3C"&mt&":R33C"&mt,0),FILTER(dt,(WEEKDAY(dt)=3)+(WEEKDAY(dt)=6)))
- この数式では「スピル」が働きます(最新版の Excel ではこれが標準です)ので、A6セルに数式を入れるだけで A列に必要な日付データがすべて表示されます。( FILTER 関数は、この「スピル」が働かないと動作しません。)
- この数式では、シート名から何月の日付データを表示しなければならないのかを判断しています。
例えば、シート名が「2022年1月」でしたら、この数式1の入力(あるいはコピー・貼り付け)と下記の数式2のコピーが終わった時点で、「2022年カレンダー」のデータを参照して 1月の全ての日付データが表示されます。
・数式2:図1の C6セルに入れる数式です。
=IF(A6="","",A6+1)
- この数式を C15セルまでコピーします。
- この数式では、単純に A6セルが空白だったら空白(空白の文字列)を表示し、空白でなければ A6セルの日付を +1 して表示します。
※尚、A列、C列ともに「セルの書式設定」で「表示形式」を「ユーザー定義」とし、 m/d"("aaa")" を設定してください。
※数式の結果は図1のような表示になります。
・図1(再掲)
※実際には色付けは行われません。

<数式1を使う利点>
数式1では、シート名の中から「月」のデータを取り出して、何月の日付データを表示しなければならないかを判断し、「2022年カレンダー」の中から該当の日付データを取り出しています。
なので、「2022年カレンダー」が出来上がっているのであれば(色付けは特に必要ありません)、以下のような方法で簡単に 12ヶ月分の「物品発注書」を一気に作り上げることが出来ます。
- 「2022年1月」のシートに数式1と数式2を書き込んでおき、必要であれば数式以外の部分も作りこんでおく。
- 作りこんでおいた「2022年1月」のシートのコピーを作成し、シート名を「2022年2月」とするだけで 2月分が出来上がる。
- シートのコピーを繰り返し、シート名の月の部分の数字を変えるだけで 12ヶ月分の「物品発注書」が出来上がる。
※もちろん、毎月手書きで修正しなければならない箇所については、修正が必要ですが・・。
※来年以降の数式の変更箇所については、数式1の中の 2022 の部分だけです。
<数式1を使う場合の注意点>
数式中の、CELL("filename",A1) の部分でファイル名(シート名を含む)を求めているのですが、新規ファイルにこの数式を入力した場合、一旦このファイルを保存してから開きなおさないと CELL("filename",A1) に正しいファイル名が返りません。
また、A1 としている部分については、どのセルを指定しても良いのですが省略してはいけません。
ご注意ください。
数式1の動作概要については長くなるので省略します。
ご希望があれば(どこか一部分でも良ければ)書いてみたいとは思いますが・・・。
Windows11 と Excel2021 の組み合わせで動作確認しています。
お役に立てれば幸いです。
<数式の追記>
数式1については、以下の数式1-1でも同様に動作するのを確認しました。
こちらのほうが少し短く効率的な数式になっていますので、分かりやすいかもしれません。
好みの問題もありますので、お好きなほうでお試しになってみてください。
・数式1-1
=LET(dt,OFFSET('2022年カレンダー'!$A$3,,TRIM(RIGHT(SUBSTITUTE(LEFT(CELL("filename",A1),LEN(CELL("filename",A1))-1),"年"," "),2))*1-1,31,),FILTER(dt,(WEEKDAY(dt)=3)+(WEEKDAY(dt)=6)))