Salesforce Formula Field とは、同じ record 上の他の項目から自分で値を計算する項目のことで、誰も手入力する必要がなくなります。案件を作ってからの日数、割引後の価格、1社のお客様の注文の合計金額。これらを今も手で計算しているのは、チームの誰でしょうか?
結論から言うと、Formula Field は同じ record 上の項目から計算します(例:案件作成からの日数、割引後の価格)。Roll-up Summary は子 record を親 record に集計します(例:1社のお客様の契約の合計金額)。重要な注意点として、Roll-up Summary には Master-Detail の関係が必要で、それ以外の関係では Flow か追加ツールが必要です。
ご注意: 記事内のオフィス機器の販売会社と、Discount や賃貸契約などの項目は仮想の例であり、実在のお客様ではありません。機能と上限は edition によって異なり、メニュー名もバージョンで変わる場合があります。実際に使う前に、sandbox で数式を試してください。

Formula Field は同じ record 内で計算し、Roll-up Summary は子 record を親 record に集計します。
手計算が間違いやすい理由
手入力した数字には、よくある3つの問題があります。人によって計算方法が違うため、同じ指標でも2人の担当者が別の結果を出します。数字がすぐに古くなります。今日入力した値は、翌日にはもう違っています。そして誤りがあったとき、どこで間違えたのか分かりにくいのです。
| 手計算 | システムが自動計算 | |
|---|---|---|
| 一貫性 | 人によってやり方が違う | チーム全員が同じ数式 |
| 数字の鮮度 | 入力した瞬間だけ正しい | データに合わせて自動更新 |
| 間違いの起きやすさ | 取り違えや入力漏れが起きやすい | 数式が間違っているときだけ。直すのは1か所 |
| 担当者の時間 | 入力のたびにかかる | かからない |
Salesforce Formula Field とは
Formula Field は、設定した数式から値が計算される読み取り専用の項目です。数式には、同じ record の項目に加え、親 record の項目も使えます。実際に1つずつ作ってみるには、数式に関する Trailhead モジュール(英語)がおすすめです。
ユーザーはこの値を手で編集できないため、誰も間違った値を入力できません。元のデータが変われば、計算された値も変わります。これが最大のメリットです。
Salesforce Formula Field の分かりやすい3つの数式例
仮想の例:オフィス機器の販売会社が、Opportunity 上の3つの手計算をやめたいケースです。ここで使う custom field の名前は説明用なので、ご自身の項目名に置き換えてください。
案件作成からの日数
- 戻り値の型を Number、小数点なしにした Formula 項目を作り、次の数式を使います:
TODAY() - DATEVALUE(CreatedDate) - これは Trailhead の Days Open の例と同じ考え方で、作成日時を日付に変換して、今日から引きます
- 注意:現在の stage にいる日数はもう少し難しくなります。数式で使える、stage の変更日が最初から用意されているわけではないためです。stage が変わるたびに Flow で更新する日付項目を追加し、今日からその日付を引く必要があります
割引後の価格
- 割引率を表す Discount というパーセント項目があるとします。Currency 型の Formula を作ります:
Amount * (1 - Discount__c) - パーセント項目は数式内では小数として扱われるため、10% は 0.1 に相当します
期限切れの警告
- Text 型の Formula を作ります:
IF(AND(NOT(IsClosed), CloseDate < TODAY()), "Overdue", "") - page layout に配置すると、クローズ予定日を過ぎた未完了の案件をマネージャーがすぐ確認できます
ちょっとしたコツ:項目名は分かりやすくし、意味を説明に書いておきましょう。数か月後には、自分でも数式の意味を忘れてしまうからです。CRM の土台がまだ整っていない場合は、先にSalesforce Sales Cloud setup guide in 10 minutes(英語)をお読みください。
Roll-up Summary:子 record を親 record に集計する
Formula Field は、現在の record とその親 record のデータしか見られません。複数の子 record を親 record に集計したい場合は、Roll-up Summary が必要です。よくある例は、1社のお客様の契約の合計金額や、有効な契約の件数です。
Roll-up Summary には4つの集計タイプがあります。COUNT は子 record の件数、SUM は数値・通貨・パーセント項目の合計、MIN と MAX は最小値と最大値を返します。
仮想の例:賃貸契約という Custom Object を作り、Master-Detail の関係で Account につなぎ、Account 上に契約金額を合計する Roll-up Summary を作ります。そもそも独自の object を作るべきかどうかは、Salesforce 101: how Standard and Custom Objects differ(英語)をご覧ください。
最も重要な条件は、子 record が親 record と Master-Detail の関係で直接つながっていることです。この関係には、検討すべきいくつかの影響があります。
親を削除すると、子も削除される。自社のデータでそれが許容できるか確認しましょう。
子は単独で存在できない。親がなければ子を作成できず、閲覧権限も通常は親に従います。
関係の数に上限がある。参考情報によると、1つの object が持てる Master-Detail の関係は最大2つで、standard object は子の側になれません。ご利用の edition での上限は、公式ドキュメントで確認してください。
| 比較項目 | Formula Field | Roll-up Summary |
|---|---|---|
| 計算の元 | 同じ record の項目と、親 record | 複数の子 record |
| 例 | 案件作成からの日数、割引後の価格 | 1社のお客様の契約の合計金額 |
| 必要な関係 | 特になし | Master-Detail |
| ユーザーが編集できるか | 不可(読み取り専用) | 不可(読み取り専用) |
| 上限 | コンパイル後の数式サイズに上限あり | object ごとの個数に上限あり |
Master-Detail ではない関係の場合
2つの object が Lookup の関係でつながっている場合、Salesforce にはその場合のための標準の Roll-up Summary はありません。親を削除したときに子 record が失われることを心配して、Master-Detail への変更を望まない企業も多くあります。その場合、よく使われる方法は2つです。
Flow。子 record が変更されたときに Flow が起動し、合計を再計算して親の数値項目に書き込みます。
追加ツール。オープンソースのものを含め、Lookup の関係に対応した roll-up を提供するアドオンパッケージがあります。使う前に、保守とサポートの面を慎重に検討してください。
どちらも設定とテストを行う担当者が必要です。その手間に見合う必要性があるかを検討しましょう。支援が必要な場合は、Sonix の Salesforce ページ(ベトナム語)をご覧ください。
注意点とチェックリスト
自動計算の項目が後で負担にならないよう、いくつか注意点をまとめます。
☐ チームが手計算している数字を洗い出した
☐ 同じ record の数字は Formula Field、子 record の集計は Roll-up Summary を選んだ
☐ 2つの object の関係が Master-Detail か確認した
☐ Master-Detail の連鎖削除の影響を検討した
☐ sandbox で数件のサンプル record を使って数式を試した
☐ 各項目に分かりやすい名前と説明を付けた
☐ edition ごとの数式サイズと Roll-up の上限を確認した
システムに自動計算してほしい数字は何ですか? コメントでお知らせください。Sonix チームがサンプルの数式をご提案します。
Salesforce CRM
ガイド
Best Practices
SME
Sonix との無料相談で、手入力している数字を整理し、edition とデータ構造に合った自動化の方法を選びましょう。
Sonix: Your success is our happiness.

コメントを残す