ExcelでNETWORKDAYS関数の第1、第2引数(開始日、終了日)を複数セルに拡張しても普通はエラーになりますが、ちょっと手を加えるとスピルさせることができます。
NETWORKDAYS.INTL関数についても同様です。
NETWORKDAYS.INTL関数についても同様です。
手順
まずは失敗例です。
次の画像ではNETWORKDAYS関数の応用例として、B3:B7の各セルの各日付が平日(土・日曜以外)かどうかを判定しようとしています。
スピルが効けばC3:C7の各セルに0(土日の場合)または1(月~金の場合)が表示されるはずですが、これはエラーとなってしまいます。
C3セル(エラー)
=NETWORKDAYS(B3:B7,B3:B7)
「=NETWORKDAYS(B3,B3)」から「=NETWORKDAYS(B7,B7)」までの5つの結果を各セルに表示させることを意図した式ですが、なぜかエラーとなります。
そこで次のように2つの引数の後ろに「*1」をつけると狙い通りの結果を得ることができます。
C3セル
=NETWORKDAYS(B3:B7*1,B3:B7*1)
「*1」の代わりに「+0」を付けてもいいですし「+B3:B7」のようにしても同じ結果となります。
平日の判定については普通にスピルが効くWORKDAY関数を使う方法もあるものの式の意味が分かりにくく、NETWORKDAYSを使う方が理解しやすく扱いやすいかと思います。本ブログでもいくつかの記事でNETWORKDAYS関数はスピル出来ないものと紹介していましたが、随時訂正していきたいと思います。
また、スピルのないバージョンでもこのように記すことで(もちろん複数セルへの表示はされませんが)結果の配列を利用することが可能となります。具体的には「=SUMPRODUCT(金額の配列,NETWORKDAYS(日付の配列*1,日付の配列*1))」のような式により、平日のみの集計を行うといったことが可能となります。