見出し画像

【Excel】土日を除いた日付リストを作成する関数を考えてみた

目的

土日を除いた日付リストを手作業で作成している人がいたので、楽させてあげたいなと思い考案。VBAなんかは恐らく使えないけど、関数ならギリギリ使える、そんな人が対象です。

LAMBDA関数を用いるのでMicrosoft365推奨。

導入手順

  1. 数式ネームマネージャーの順で開く

  2. 新規を押す

  3. 名前に行配列なら「ROWARREXCSDAYS」列配列なら「COLARREXCSDAYS」と入力

  4. 次を参照に下記の式のいずれかを貼り付ける

  5. OKを押す

  6. ネームマネージャーを閉じる

行配列の式:日数

=LAMBDA(startDate,days,SCAN(startDate-1,SEQUENCE(days),LAMBDA(x,y,IF(WEEKDAY(x)=6,IF(WEEKDAY(x)=7,x+2,x+3),x+1))))

列配列の式:日数

=LAMBDA(startDate,days,SCAN(startDate-1,SEQUENCE(,days),LAMBDA(x,y,IF(WEEKDAY(x)=6,IF(WEEKDAY(x)=7,x+2,x+3),x+1))))

関数の使い方

  1. 任意のセルで「=ROWARREXCSDAYS(startDate,days)」または「=COLARREXCSDAYS(startDate,days)」と入力

  2. startDateには初期の日付のシリアル値、daysには日数を指定

  3. 日付のシリアル値は「DATE(2025,1,10)」のようにDATE関数やDATEVALUE関数で指定する方法が簡単

  4. 出てきたシリアル値に対してセルの書式設定→表示形式→ユーザー定義で「yyyy/mm/dd」と指定すれば「2025/01/10」のように表示できる

入力のようす

あとがき

note公式運営さま、GIFの制限を具体的に書いてください。記事作成時間の70%くらいGIFよっこらせに使いました。備忘のため今回の条件を下記に残しておきます。

  • 480x280

  • 15FPS

  • 265F

  • 480KB

  • Normal Loop

以上!


追記

第2引数が日数だと使いづらいケースもあるので、終了日を指定する関数も考えました。次を参照の値をそれぞれ以下の式に置き換えると、土日を除いた開始日から終了日までの日付リストが生成できるようになります。

行配列の式:終了日

=LAMBDA(startDate,endDate, SCAN(startDate-1,SEQUENCE(INT(((endDate-startDate)/7)-1)*5+6-WEEKDAY(startDate,2)+WEEKDAY(endDate,2)),LAMBDA(x,y,IF(WEEKDAY(x)=6,IF(WEEKDAY(x)=7,x+2,x+3),x+1))))

列配列の式:終了日

=LAMBDA(startDate,endDate, SCAN(startDate-1,SEQUENCE(,INT(((endDate-startDate)/7)-1)*5+6-WEEKDAY(startDate,2)+WEEKDAY(endDate,2)),LAMBDA(x,y,IF(WEEKDAY(x)=6,IF(WEEKDAY(x)=7,x+2,x+3),x+1))))


いいなと思ったら応援しよう!

あかやす
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!