こんにちは、Salesforceをお使いいただく利点の1つとして、自由に項目の追加変更のカスタマイズができたり、簡単なマウス操作で画面レイアウトが変更できることが挙げられると思います。以前までWebシステムの開発に携わっていましたので、その簡単さには驚きました。
そこで今回は、Salesforceをお使いいただいている管理者ユーザー様へ、よく使う数式のご紹介をしたいと思います。数式といっても、条件はさまざまですので、今回は「日付系」の例をご紹介します。
●西暦から和暦へ変換する
Salesforceの日付型の入力は全て西暦になります。ただし、生年月日などの表示は和暦で表示したいという場合も多いです。 以下、和暦変換のサンプルです。「Birthdate」に和暦に変更したい日付のAPI参照名を設定してください。
※2019/4/2修正 新元号「令和」対応
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
IF( NOT( ISNULL( Birthdate ) ), IF( AND( Birthdate >= DATE(1868, 9, 8), Birthdate <= DATE(1912, 7, 29) ), "明治" & IF( YEAR( Birthdate ) = 1868, "元", TEXT(YEAR( Birthdate ) - 1867) ), IF( AND( Birthdate >= DATE(1912, 7, 30), Birthdate <= DATE(1926, 12, 24) ), "大正" & IF( YEAR( Birthdate ) = 1912, "元", TEXT(YEAR( Birthdate ) - 1911) ), IF( AND( Birthdate >= DATE(1926, 12, 25), Birthdate <= DATE(1989, 1, 7) ), "昭和" & IF( YEAR( Birthdate ) = 1926, "元", TEXT(YEAR( Birthdate ) - 1925) ), IF( AND( Birthdate >= DATE(1989, 1, 8), Birthdate <= DATE(2019, 4, 30) ), "平成" & IF( YEAR( Birthdate ) = 1989, "元", TEXT(YEAR( Birthdate ) - 1988) ), IF( AND( Birthdate >=DATE(2019, 5, 1)), "令和" & IF( YEAR( Birthdate ) = 2019, "元", TEXT(YEAR( Birthdate ) - 2018) ), TEXT( YEAR( Birthdate ) ) ) ) ) ) ) & "年" & LPAD(TEXT( MONTH( Birthdate )), 2, "0") & "月" & LPAD(TEXT( DAY( Birthdate )), 2, "0") & "日", null ) |
●西暦から年齢を計算する
生年月日から、年齢を計算して表示します。 以下、サンプルです。「Birthdate」に生年月日のAPI参照名を設定してください。
1 2 3 4 5 |
IF ( MONTH( TODAY() ) < MONTH( Birthdate ) || ( MONTH( TODAY() ) = MONTH( Birthdate ) && DAY( TODAY() ) < DAY( Birthdate ) ), TEXT( YEAR( TODAY() ) – YEAR( Birthdate ) – 1 ) + ‘ 歳’, TEXT( YEAR( TODAY() ) – YEAR( Birthdate ) ) + ‘ 歳’ ) |
●日付項目から曜日を表示する
日付値から曜日を判別するには、既知の日曜日 (1900 年 1 月 7 日など) を使用し、対象の日付から差の日数を 7 で割った余りから、 曜日を 0 (日曜日) から 6 (土曜日) の数値で示します。 以下、サンプルです。「date」に曜日を判別する日付項目のAPI参照名を設定してください。
1 2 3 4 5 6 7 8 9 |
CASE( MOD( DATEVALUE( date ) - DATE(1900, 1, 7), 7 ), 0, “日曜日”, 1, “月曜日”, 2, “火曜日”, 3, “水曜日”, 4, “木曜日”, 5, “金曜日”, ”土曜日” ) |
曜日判定の数式を改良することで、日付の営業日(土日を除く)の加算もできます。 以下のサンプルは、指定した「date」から 3 営業日後を表示します。
1 2 3 4 5 6 7 |
CASE( MOD( DATEVALUE( date ) - DATE(1900, 1, 7), 7 ), 3, date + 2 + 3, 4, date + 2 + 3, 5, date + 2 + 3, 6, date + 1 + 3, date + 3 ) |
●指定した日付から1年後の -1日の日付を表示する
よく毎年更新の契約などで契約満了日を表示するのに使用します。 例えば「2015/6/1」契約開始だとすると契約満了日は「2016/5/31」となります。 以下、サンプルです。「date」に日付項目のAPI参照名を設定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
IF( OR( MOD( YEAR( date ), 400 ) = 0, AND( MOD( YEAR( date ), 4 ) = 0, MOD( YEAR( date ), 100 ) != 0 ) ), IF (MONTH( date ) = 2 && DAY( date ) = 29, DATE( YEAR( date ) + 1 , MONTH( date ) , DAY( date ) – 1 ) , DATE( YEAR( date ) + 1 , MONTH( date ) , DAY( date ) ) -1) , DATE( YEAR( date ) + 1 , MONTH( date ) , DAY( date ) ) -1 ) |
いかかでしたでしょうか?
今後もSalesforceをお使いいただいている管理者ユーザー様向けにSalesforce標準の機能のなかでいろいろとご紹介できればと思います。
なお、Salesforceのヘルプでも一般的な日付数式を参照できます。
https://help.salesforce.com/apex/HTViewHelpDoc?id=formula_examples_dates.htm&language=ja
Salesforceをお使いいただいている管理者ユーザー様が、ご自身でSalesforceの環境をより使いやすいものへと積極的に改善していく キッカケにしていただけると幸いです。