menu
%}

月に日曜日が何回あるか 計算できますか?

 2019.08.09 customer_success

こんにちは。Salesforce運用支援サービスCustomer Service for Salesforce –Remote Service–(旧AGORA)」のサポート担当Miyazakiです。

日々、お客様からいただくさまざまなお問い合わせの中から「他のSalesforce管理者も直面するかも!?」という事象と解決内容をピックアップして紹介します!

今回はちょっとひねった(?)数式の作り方について。

その月に日曜日が何回あるか、どうやって計算する!?

お客様からいただいたご質問は、「 その月に日曜日が何回あるか、特定の日付をもとにして計算して表示させることはできるか?」というもの。

たとえば、特定の日付が 2019/5/7 の場合 日曜日の数は「4」、2019/6/20 の場合 日曜日の数は「5」となるわけですね。ふむふむ……。

Excelではこんなドンピシャな関数があるのですが、Salesforceでは無い……なぁ。Salesforceのヘルプにある「2 つの日付間の営業日数を確認する」の数式を応用できないかなぁ、など色々考えたのですが……う~ん、なかなか上手くいかない……。

解決方法

月初め(1日)から月末最終日(28日 or 29日 or 30日 or 31日)の間に、日曜日が何回あるか? という視点で計算しようとしていたのですが……。

ちょっと考え方を変えてみよう!
ひと月の日曜日の回数というのは、1月~12月までどの月でも 4回 or 5回 のどちらかしかあり得ないよな……。だいたいの月は4回で、たまーに5回になる。じゃあ、5回になるのはどんなとき?

この視点で数式を作成すると、このようになりました。

  1. 基準となる日付項目を[BaseDay__c]とする。
  2. 月初の日付を出すための 数式項目[FirstDay]を作成。
    数式:DATE( YEAR( BaseDay__c ), MONTH( BaseDay__c ), 1)
  3. 月末の日付を出すための 数式項目[LastDay__c]を作成。
    数式:ADDMONTHS( FirstDay__c ,1) - 1
  4. 該当月の日曜日を計算するための 数式項目を作成。
    4
    + IF( AND( DAY(LastDay__c)>=29, WEEKDAY( DATE( YEAR( BaseDay__c ), MONTH( BaseDay__c ), 29) ) == 1), 1, 0)
    + IF( AND( DAY(LastDay__c)>=30, WEEKDAY( DATE( YEAR( BaseDay__c ), MONTH( BaseDay__c ), 30) ) == 1), 1, 0)
    + IF( AND( DAY(LastDay__c)>=31, WEEKDAY( DATE( YEAR( BaseDay__c ), MONTH( BaseDay__c ), 31) ) == 1), 1, 0)

どの月でも日曜日は必ず4回はある。(=基本の回数は4回である。)
29・30・31日が日曜日になる場合のみ、さらに1回加わる。
という内容を数式であらわしたのです。

発想の転換って大事ですね!(すみません、自力で思いついたのではなく先輩のアドバイスでこのような数式が生まれたのですが、目からウロコでした……!)

最後に

「設定で長時間悩んでしまう」「効果的に利用できているのかわからない」「運用を任せられる人がいない」など、Salesforceをうまく活用できていないと感じることはありませんか?

サークレイスの運用保守サービスは、日々のSalesforce運用を力強くサポート。
Salesforce
認定アドミニストレーターが、ちょっとしたお問い合わせ対応から運用を丸ごと任せたいというご要望まで、幅広くお応えいたします。詳しくは以下の特設ページをご覧ください。

Salesforce/Account Engagement(旧Pardot)活用相談室-2024