週末を除いて〇日追加する数式の考察
DATEVALUE(CreatedDate)+
CASE(WEEKDAY(DATEVALUE(CreatedDate)),
1,29,
7,30,
28)
私は計算を間違えてしましたね。今日から数えるのでなく、明日から数えないといけない。
それから1は日曜日、7は土曜日だな。
TODAY() +
CASE(WEEKDAY( TODAY()),
1, 3,
2, 3,
3, 3,
4, 5,
5, 5,
6, 5,
7, 4,
0 )
単純に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 ) ) )
時間バージョン?
- 【アイデア】Formula for Case Age in Business Hours
- Trying to calculate PTO hours based on start and end date/time values
こんなやり方もあるよ
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
この方がわかりやすいな
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)
スタート日が土曜日の場合が難しい