数式のデータ型が「パーセント」のとき、小数点以下第3位以下を切り捨てたい

数式のデータ型が「パーセント」のとき、小数点以下第3位以下を切り捨てたい

数式項目で戻り値のデータ型を%にしなくてはいけないとき、場合によってはちょっと手間をかける必要があります。
数式のデータ型が「パーセント」のとき、小数点以下第3位以下を切り捨てたい
24
数式のデータ型が「パーセント」のとき、小数点以下第3位以下を切り捨てたい
Admin
2021/03/30 17:26:10
お客様から下記の依頼があり項目を作成しました。

依頼内容

①チーム全体の売上目標
②自分の実績値

を登録すると、
③自分のチームへの貢献度(②/①を%表示)※小数点以下は第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 (ゼロ)になるときに返す値も一緒に設定する
改行のあるデフォルト値の設定
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
24
コメント