Skip to main content Stream TDX Bengaluru on Salesforce+. Start learning the critical skills you need to build and deploy trusted autonomous agents with Agentforce. Register for free.

いつもお世話になっております。

 

数式項目の作成でご相談です。

今日が今月の何週目かを数式で表したく(1週目なら1、2週目なら2)、

かつ、週の始まりの起点日を月曜日としたいのですがうまくいきません。

 

例えば今月4/10(月)は3、4/23(日)は4としたいです。

「(day( TODAY())+6)/7」という数式を作ってみたのですが、起点日が流動的になってしまうようで、使えなさそうです。

 

ご教授いただけましたら幸いです。

6 answers
  1. Apr 8, 2023, 7:35 AM

    Saitoさんの考え方を引用して、

    CEILING( (

    DAY( TODAY() ) +

    MOD( WEEKDAY( TODAY() - DAY( TODAY() ) + 1 ) + ( 7 - {基準となる曜日のWEEKDAY値} ) , 7 )

    ) / 7 )

    という関数化ができそうです。

    今回は月曜日を基準とするので、{基準となる曜日のWEEKDAY値}=2として、

    CEILING( (

    DAY( TODAY() ) +

    MOD( WEEKDAY( TODAY() - DAY( TODAY() ) + 1 ) + 5 , 7 )

    ) / 7 )

    のような形になります。

     

    <解説>

    月の中で週の数を考える時は、「( 現在日 + 月初日の曜日と月初日以前の基準となる曜日の差 ) / 7 の切り上げ」になる。

    ここで、「月初日の曜日と月初日以前の基準となる曜日の差」は、

    IF( WEEKDAY( 月初日 ) - {基準となる曜日のWEEKDAY値} >= 0 ,

    WEEKDAY( 月初日 ) - {基準となる曜日のWEEKDAY値} ,

    WEEKDAY( 月初日 ) - {基準となる曜日のWEEKDAY値} + 7

    )

    として決定できる。

    条件分岐については、

    IF( x >= 0 , x , x + y ) = MOD( x + y , y )   { x < y , y > 0 }

    となるため、上記の条件分岐を

    MOD( WEEKDAY( 月初日 ) - {基準となる曜日のWEEKDAY値} + 7 , 7 )

    と書き換えることができる。

    これを用いて、「( 現在日 + 月初日の曜日と月初日以前の基準となる曜日の差 ) / 7 の切り上げ」は

    CEILING( (

    現在日 + MOD( WEEKDAY( 月初日 ) + ( 7 - {基準となる曜日のWEEKDAY値} ) , 7 )

    ) / 7 )

    となる。

Loading
0/9000