数式のデータ型が「パーセント」のとき、小数点以下第3位以下を切り捨てたい
数式項目で戻り値のデータ型を%にしなくてはいけないとき、場合によってはちょっと手間をかける必要があります。
Admin
2021/03/30 17:26:10
お客様から下記の依頼があり項目を作成しました。
②自分の実績値
を登録すると、
③自分のチームへの貢献度(②/①を%表示)※小数点以下は第2位まで表示
④貢献度の値による評価
を表示できるようにしたい。
④の評価は③の貢献度から自動で下記のように表示する設定でした。
この時…
③自分のチームへの貢献度を
データ型:数式(パーセント)
数式:自分の実績値/チーム全体の売上目標
(小数点第2位まで表示)と設定していたのですが、
チーム全体の売上目標が1,000,000円
自分の実績値が124,999円の時……
自分のチームへの貢献度が12.50%と表示されてしまいました。
しかも評価レベルは12.50%なのに「レベル6」と表示されず
「レベル5」として表示されています。

実際の計算として、「124999/1000000=12.4999% 」なので、
評価レベルはレベル5で正しいのですが、なんだか気持ち悪い…。
ユーザにとっても紛らわしいですよね。
ヘルプを確認すると、数式で扱われる数値は、切り上げで表示されるようです。
◇ SALESFORCE ヘルプ >ドキュメント >コードではなくてクリックによる SALESFORCE の拡張 >数値数式項目の使用のヒント
そのため、実際は「12.4999%」と計算されているにも関わらず、表示は「12.50%」、けれども評価レベルの算出は「12.4999%」の値をもとにしているので、レベルは正しく表示されるという結果に。
正しく表示するためには少数点以下3位を切り捨てすればきれい表示されるのかな?と思い、計算式を変更することにしました。
この数式を切り捨て表示にするには、FLOOR関数を使用します。
詳細は「関数を使って小数点以下の表示を設定」をご確認ください。
FLOOR関数は小数点第1位を切り捨てる関数です。
そのため、少数点第3位を切り捨てて小数点第2位までを表示したい場合は
数字に100をかけて整数に変更し、さらに100で割って小数点の位置を戻します。
今回の12.4999の場合、
12.4999×100=1249.99
↓ 太字部分をFLOORで切り捨て!!
↓100で割って元の数字に戻す。
1249÷100=12.49
という数式を作るイメージになりますので数式は
FLOOR(100*(Jisseki__c / TeamMokuhyo__c))/100
となります。
この数式を実際に数式ノードに記載すると…

12.00%?!
え、なんで…?
あ!!
%=百分率…
FLOOR(100*(Jisseki__c / TeamMokuhyo__c))/100
FLOOR(100*(124999 / 1000000))/100
=12/100
=0.12
そして12.00%……!
というわけで%表示の場合さらに100をかけてあげる必要があります。
100×100=10000なので、数式を下記のように変更します。
FLOOR(10000*(Jisseki__c / TeamMokuhyo__c))/10000

正しく計算されました!
数式で%表示を計算する場合、自動で×100が計算され、また切り上げで表示されるので、注意が必要です。うっかり忘れがちなので、きちんと考えて数式を構築したいです。
複数選択リストで使用できる関数
入力規則でVLOOKUPを使って、カスタムオブジェクトのレコード名の重複を防ぐ
PRIORVALUE関数の入力規則で選択リスト値の変更順を制御する
Lightningで商談金額の 前年同月比率(%)を表すレポートを作成したい
除算(/)の数式項目では、分母が 0 (ゼロ)になるときに返す値も一緒に設定する
改行のあるデフォルト値の設定
依頼内容
①チーム全体の売上目標②自分の実績値
を登録すると、
③自分のチームへの貢献度(②/①を%表示)※小数点以下は第2位まで表示
④貢献度の値による評価
を表示できるようにしたい。
④の評価は③の貢献度から自動で下記のように表示する設定でした。
| 評価 | 貢献度 |
| レベル1 | 3%未満 |
| レベル2 | 3%以上 |
| レベル3 | 5%以上 |
| レベル4 | 7%以上 |
| レベル5 | 10%以上 |
| レベル6 | 12.5%以上 |
この時…
③自分のチームへの貢献度を
データ型:数式(パーセント)
数式:自分の実績値/チーム全体の売上目標
(小数点第2位まで表示)と設定していたのですが、
チーム全体の売上目標が1,000,000円
自分の実績値が124,999円の時……
自分のチームへの貢献度が12.50%と表示されてしまいました。
しかも評価レベルは12.50%なのに「レベル6」と表示されず
「レベル5」として表示されています。
実際の計算として、「124999/1000000=12.4999% 」なので、
評価レベルはレベル5で正しいのですが、なんだか気持ち悪い…。
ユーザにとっても紛らわしいですよね。
ヘルプを確認すると、数式で扱われる数値は、切り上げで表示されるようです。
◇ SALESFORCE ヘルプ >ドキュメント >コードではなくてクリックによる SALESFORCE の拡張 >数値数式項目の使用のヒント
Salesforce では、数式項目内の数値に対して、切り上げタイブレークルールを使用します。たとえば、12.345 は 12.35 に、-12.345 は -12.35 になります。
そのため、実際は「12.4999%」と計算されているにも関わらず、表示は「12.50%」、けれども評価レベルの算出は「12.4999%」の値をもとにしているので、レベルは正しく表示されるという結果に。
正しく表示するためには少数点以下3位を切り捨てすればきれい表示されるのかな?と思い、計算式を変更することにしました。
数式の修正
変更前の数式
Jisseki__c / TeamMokuhyo__c(自分の実績値/チーム全体の売上目標)この数式を切り捨て表示にするには、FLOOR関数を使用します。
詳細は「関数を使って小数点以下の表示を設定」をご確認ください。
FLOOR関数は小数点第1位を切り捨てる関数です。
そのため、少数点第3位を切り捨てて小数点第2位までを表示したい場合は
数字に100をかけて整数に変更し、さらに100で割って小数点の位置を戻します。
今回の12.4999の場合、
12.4999×100=1249.99
↓ 太字部分をFLOORで切り捨て!!
↓100で割って元の数字に戻す。
1249÷100=12.49
という数式を作るイメージになりますので数式は
FLOOR(100*(Jisseki__c / TeamMokuhyo__c))/100
となります。
この数式を実際に数式ノードに記載すると…
12.00%?!
え、なんで…?
あ!!
%=百分率…
FLOOR(100*(Jisseki__c / TeamMokuhyo__c))/100
FLOOR(100*(124999 / 1000000))/100
=12/100
=0.12
そして12.00%……!
というわけで%表示の場合さらに100をかけてあげる必要があります。
100×100=10000なので、数式を下記のように変更します。
FLOOR(10000*(Jisseki__c / TeamMokuhyo__c))/10000
正しく計算されました!
数式で%表示を計算する場合、自動で×100が計算され、また切り上げで表示されるので、注意が必要です。うっかり忘れがちなので、きちんと考えて数式を構築したいです。
数式・関数の記事は他にもありますよ
関数を使って小数点以下の表示を設定複数選択リストで使用できる関数
入力規則でVLOOKUPを使って、カスタムオブジェクトのレコード名の重複を防ぐ
PRIORVALUE関数の入力規則で選択リスト値の変更順を制御する
Lightningで商談金額の 前年同月比率(%)を表すレポートを作成したい
除算(/)の数式項目では、分母が 0 (ゼロ)になるときに返す値も一緒に設定する
改行のあるデフォルト値の設定
コメント