0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

営業日(週末を除く)を考慮した日付の追加

Last updated at Posted at 2021-05-24

Answersで回答する時に使う情報のまとめに戻る

週末を除いて〇日追加する数式の考察

DATEVALUE(CreatedDate)+
CASE(WEEKDAY(DATEVALUE(CreatedDate)),
1,29,
7,30,
28)

私は計算を間違えてしましたね。今日から数えるのでなく、明日から数えないといけない。
それから1は日曜日、7は土曜日だな。

image.png

TODAY() +
CASE(WEEKDAY( TODAY()),
1, 3,
2, 3,
3, 3,
4, 5,
5, 5,
6, 5,
7, 4,
0 )

image.png

単純に5日を追加するのではなくて、週末を除いた5営業日を追加して日にちを求める式。

いつもながら、こんなの思いつかん。

実際の適用例 商談が作られてからの経過日を営業日で計算する場合

CreatedDate : DateTime
TODAY() : Date

以下の式はDate型で計算しています。そのためDATEVALUEを使ってフィールド型をそろえています。

(5 * ( FLOOR( TODAY() - DATE( 1900, 1, 8) ) / 7 ) ) + MIN( 5, MOD(TODAY() - DATE( 1900, 1, 8), 7 ) ) 
-
(5 * ( FLOOR( ( DATEVALUE(CreatedDate) - DATE( 1900, 1, 8) ) / 7 ) ) + MIN( 5, MOD( DATEVALUE(CreatedDate) - DATE( 1900, 1, 8), 7 ) ) )

calculate number of business days passed since opportunity created date

考え方

2つの日付の間の営業日数を見つける2つの日付の間で
経過した営業日数の計算は、合計経過日数の計算よりも少し複雑です。基本的な戦略は、過去から参照月曜日を選択し、
参照日とあなたの日付の間に何週間と1週間の追加部分が経過したかを調べることです。
これらの値に5日間の稼働週の場合は5を掛けてから、それらの差を使用して営業日を計算します。
この式では、date_1はより新しい日付であり、date_2はより早い日付です。
週の労働時間が5日より短いか長い場合は、数式の5つすべてを週の長さに置き換えます。

(5 * ( FLOOR( ( date_1 - DATE( 1900, 1, 8) ) / 7 ) ) + MIN( 5, MOD( date_1 - DATE( 1900, 1, 8), 7 ) ) )
-
(5 * ( FLOOR( ( date_2 - DATE( 1900, 1, 8) ) / 7 ) ) + MIN( 5, MOD( date_2 - DATE( 1900, 1, 8), 7 ) ) )

時間バージョン?

こんなやり方もあるよ

Follow_Up_Due__c -
CASE( WEEKDAY( TFollow_Up_Due__c), 
1,3,
2,4,
3,4,
4,2,
5,2,
6,2,
7,2

Finding 2 business days prior to date in custom field

Answersで回答する時に使う情報のまとめに戻る

この方がわかりやすいな

TODAY() + 
CASE( WEEKDAY( TODAY()),
1,2,
2,2,
3,2,
4,2,
5,4,
6,4,
7,3,
0)

Returns the day of the week for the given date, using 1 for Sunday, 2 for Monday, through 7 for Saturday.

Exclude Weekends From Task Due Date Formula

何週目かを計算する

Formula to subtract a dynamic number of weekdays from a date

StartDate__c -
IF(AND(NumberOfDays__c<5,OR(WEEKDAY(StartDate__c -NumberOfDays__c)=1, 
WEEKDAY(StartDate__c -NumberOfDays__c)>WEEKDAY(StartDate__c ))),NumberOfDays__c+2,
(( FLOOR( NumberOfDays__c/5)*7+ MOD(NumberOfDays__c,5))+ 
CASE(WEEKDAY(StartDate__c -  (FLOOR(NumberOfDays__c/5)*7+ 
MOD(NumberOfDays__c,5))),7,1,1,2,0)))

現在の営業時間の式に休日を追加する

Adding Holidays to Current Business Hours formula

スタート日と追加したい日数がともに変数の場合

CASE( WEEKDAY({!$Record.Date_c} ),
1,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c }/5 -0.1) *2 + {!$Record.NumberOfDays_c },
2,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c +1 }/5 -0.1) *2 + {!$Record.NumberOfDays_c },
3,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c +2 }/5 -0.1) *2 + {!$Record.NumberOfDays_c },
4,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c + 3}/5 -0.1) *2 + {!$Record.NumberOfDays_c },
5,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c + 4}/5 -0.1) *2 + {!$Record.NumberOfDays_c },
6,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c + 5}/5 -0.1) *2 + {!$Record.NumberOfDays_c },
7,{!$Record.Date_c} + FLOOR( {!$Record.NumberOfDays_c }/5 -0.1) *2 + 1 + {!$Record.NumberOfDays_c },
null)

スタート日が土曜日の場合が難しい

image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?