开始使用公式(01 Get Started with Formulas)
本单元打下基础:理解公式字段如何从已有数据中推导出新的洞察,掌握公式返回类型,并认识运算符与函数这两大构建工具。
学习目标 — 完成本单元后,你将能够:
- 描述什么是公式字段以及它们如何生成数据洞察
- 识别公式返回类型以及如何创建公式字段
- 使用运算符和函数来构建公式
用公式生成数据洞察(Data Insights with Formulas)
你的组织里已经有大量数据。你的用户需要一目了然地访问并理解这些数据,而不必在脑子里做一堆计算。公式(Formula)就是快速、轻松地生成数据洞察的方式——它能展示并利用记录上已有数据中大量全新的、尚未被挖掘的信息。
公式是一种强大的工具,你可以用它来:
- 嵌入超链接(hyperlink)
- 用现有字段执行计算
- 应用条件逻辑以不同方式展示数据
在 Salesforce 中使用公式,类似于在电子表格的某个单元格里根据其他列、工作表或文档的值来创建公式。区别在于:Salesforce 的公式使用当前记录或关联记录中的值。公式几乎可以在任何你想让用户体验到它的地方展示或使用,例如:
- 公式字段(formula fields)
- 验证规则(validation rules)
- 审批流程(approval processes)
- 报表的自定义汇总公式(custom summary formulas)
- 流程(flows)
公式字段是动态的——每次访问记录时都会重新计算,不消耗存储,永远保持最新。一个公式就能替代手工计算、电子表格导出,甚至自定义 Apex 代码。
使用公式字段(Engage with Formula Fields)
公式字段与标准字段略有不同:它们是自动计算的,在记录详情页上是只读的,并且不会更新"最后修改日期"字段。当你创建一个公式字段时,Salesforce 会自动在历史记录和所有新记录上填充这个新字段——无需回填数据。
由于公式字段是被计算出来的,因此它们不能用作搜索条件。
就像标准字段一样,公式字段也有一个数据类型,它决定了公式返回的数据类型。在深入运算符和函数之前,先掌握两个基础主题:返回类型(决定公式产出什么类型的值)和创建流程(从想法到已部署字段的完整路径)。
公式返回类型(Formula Return Types)
每个公式都会产生一个特定类型的值。请为你的用例选择正确的返回类型:
- 复选框(Checkbox)——真/假,例如
Is_High_Value__c - 货币(Currency)——带货币符号的金额,例如
Commission__c - 日期 / 日期时间(Date / Date/Time)——日历值
- 数字(Number)——带小数位的数值
- 百分比(Percent)——带百分号的百分比值,例如
Discount_Rate__c - 文本(Text)——字符串,例如
Full_Name__c - 时间(Time)——一天中的时间值
返回类型决定了三件事:这个值在 UI 中如何显示、公式中有哪些运算符可用,以及哪些函数能返回该类型。请务必让返回类型与结果将被如何使用相匹配——而不是只看它在公式编辑器里好不好看。例如:货币字段会带美元符号与小数位显示;复选框字段可用于验证规则,并接受 TRUE/FALSE 逻辑。
创建公式字段(Creating a Formula Field)
选择返回数据类型之后,你就进入了公式编辑器(formula editor)。公式编辑器有两个选项:简单(Simple)和高级(Advanced)。默认显示简单编辑器,但我们推荐使用高级编辑器——"高级"并不意味着你必须是个高级公式高手,它只是给了你更多工具。
创建公式字段的步骤:
- Setup → 对象管理器(Object Manager)→ 选择对象 → 字段和关系(Fields & Relationships)→ 新建(New)
- 选择 公式(Formula) 作为字段类型
- 选择返回类型(复选框、货币、文本等)
- 在公式编辑器中编写公式
- 设置小数位(针对数字/货币/百分比类型)
- 添加描述、帮助文本和字段级安全性
- 添加到页面布局 → 保存
公式编辑器提供了几种工具,用于构建简单和复杂的公式:
- 插入字段(Insert Field):打开一个菜单,从对象和关联对象中选择字段,自动生成访问这些字段的正确语法。
- 插入运算符(Insert Operator):打开可用数学和逻辑运算符的列表。
- 函数(Functions):显示可插入公式的可用函数。函数可以转换数据、执行计算,并比运算符更全面地测试数据。有些函数独立存在,例如
TODAY无需额外输入就返回当前日期;其他函数则需要额外输入,即参数(parameter)或实参(argument)。以LEN(text)为例,参数是text;调用LEN("Hello")时实参是"Hello",返回值为 5。除了 IF 等常见函数,还有 Salesforce 特有的函数,如处理选项列表字段的ISPICKVAL。 - 检查语法(Check Syntax):识别公式中的语法错误,让你在保存前修正。
最佳实践:始终用真实记录测试。一个语法正确的公式,在遇到边界数据时可能产生意想不到的结果——请先在多条记录上预览,再部署给所有用户。
使用运算符(Working with Operators)
运算符(operator)指定要执行的计算类型,或执行计算的顺序。你可以用不同类型的运算符(用符号表示)来构建公式。运算符有三种类型:数学(math)、逻辑(logical)和文本(text)。
运算符是每个公式的构建基石——掌握这三类,你就能表达任何计算:数学运算符处理算术,逻辑运算符比较值并驱动决策,文本运算符拼接字符串。
数学运算符(Math Operators)
数学运算符执行算术计算:
+加:Amount__c + Shipping__c-减:Total__c - Discount__c*乘:Quantity__c * Unit_Price__c/除:Amount__c / Quantity__c^幂:Value__c ^ 2(平方)()括号:(A__c + B__c) * C__c(控制运算顺序)
典型用例:佣金 = Total_Amount__c * 0.10;利润 = Revenue__c - Cost__c;单价 = Total__c / Quantity__c。
运算顺序为:括号 → 幂 → 乘除 → 加减(PEMDAS)。请始终用括号让意图显式化。一个常见坑:整数除法——两个整数相除时,Salesforce 会执行整数除法并截断结果;要获得小数精度,可让至少一个操作数是小数(例如乘以 1.0)。
逻辑运算符(Logical Operators)
逻辑运算符比较值并返回 TRUE 或 FALSE:
=等于:Stage__c = "Closed Won"<>不等于:Status__c <> "Inactive"<小于:Amount__c < 1000>大于:Days_Open__c > 30<=小于等于:Discount__c <= 0.25>=大于等于:Annual_Revenue__c >= 1000000&&(AND):(A > 10) && (B < 5)——两者都必须为真||(OR):(Status = "New") || (Status = "Open")——任一为真即可
配合 IF 使用:IF(Amount__c > 10000, "Large", "Small");也可在验证规则中强制执行条件。逻辑运算符是公式的决策引擎。注意:= 与 == 可互换,<> 与 != 可互换;在长且复杂的公式中,AND 与 OR 函数比对应的逻辑运算符更易读,而 And/Or 运算符则是简短公式中的快捷替代。
文本运算符(Text Operators)
文本运算符操作文本值。核心是连接(concatenate)运算符 &(也可用 +),它把两个或多个文本值连接起来:
FirstName__c & " " & LastName__c→"Jane" & " " & "Smith"="Jane Smith"
字符串字面量要放在双引号里:"Hello, " & Name__c → "Hello, Jane"。
常见文本模式:
- 完整地址:
Street__c & ", " & City__c & ", " & State__c - URL:
"https://example.com/" & Record_Id__c - 条件文本:
IF(IsActive__c, Name__c & " (Active)", Name__c)
无需专门的 CONCAT 函数——直接用 & 即可。文本运算符虽然简单,但在构建动态标签、URL 和描述时异常强大。
函数之乐(Functions for Fun)
函数(function)是系统预定义的公式,会返回一个或多个值。与运算符一样,函数也有不同类型。除特别说明外,所有函数在你可写公式的任何地方都可用——包括公式字段、验证规则、审批流程和工作流规则。函数非常多,这里只列几类:
- 日期与时间(Date and Time)——
TODAY()、YEAR()、MONTH()、日期运算 - 逻辑(Logical)——
IF()、CASE()、AND()、OR()、ISBLANK() - 数学(Math)——
ROUND()、ABS()、MAX()、MIN()、MOD() - 文本(Text)——
LEFT()、RIGHT()、MID()、FIND()、TRIM() - 汇总(Summary)——
PRIORVALUE()、REGEX()、IMAGE()、HYPERLINK() - 高级(Advanced)——
BLANKVALUE()、ISPICKVAL()、INCLUDES()
函数就是预先写好的逻辑,可以拿来即用,无需重复造轮子。浏览函数列表是发现公式可能性的最佳方式之一。
日期与时间函数(Date and Time Functions)
日期函数用来回答关于数据的"时间问题":
TODAY()——当前日期NOW()——当前日期和时间DATE(year, month, day)——用年、月、日构造日期YEAR(date)/MONTH(date)/DAY(date)——提取组成部分DATEVALUE(date/time)——把日期时间转换为日期
常见模式:
- 距关闭还有几天:
CloseDate - TODAY() - 记录年龄:
TODAY() - CreatedDate - 是否本季度:
YEAR(CloseDate) = YEAR(TODAY()) && CEILING(MONTH(CloseDate)/3) = CEILING(MONTH(TODAY())/3)
一个提醒:TODAY() 每天更新一次但并非实时,而 NOW() 在每次访问记录时更新。对于工作日计算(排除周末与节假日),公式会变得复杂——可考虑自定义方案或 AppExchange 包来处理复杂的日期运算。
逻辑函数(Logical Functions)
逻辑函数评估条件并返回结果:
IF(condition, value_if_true, value_if_false)——如IF(Amount__c > 10000, "Large", "Small")CASE(field, value1, result1, value2, result2, default)——如CASE(Stage__c, "Closed Won", 100, "Closed Lost", 0, 50);对选项列表值来说比嵌套 IF 更清晰AND(condition1, condition2, ...)——所有条件都必须为真OR(condition1, condition2, ...)——至少一个为真NOT(condition)——反转逻辑值ISBLANK(field)——检查字段是否有值ISNUMBER(text)——检查文本能否解析为数字
嵌套 IF 最多可达 51 层,但超过 3–4 层后可读性会迅速恶化。当你在对单个字段匹配多个值时,请改用 CASE。ISBLANK 对于优雅地处理空值至关重要——空字段参与数学运算会导致错误。
数学函数(Math Functions)
数学函数超越基本算术:
ABS(number)——绝对值(ABS(-5)= 5)CEILING(number)——向上取整(CEILING(3.2)= 4)FLOOR(number)——向下取整(FLOOR(3.8)= 3)ROUND(number, places)——四舍五入到 N 位小数MAX(a, b, ...)——最大值MIN(a, b, ...)——最小值MOD(number, divisor)——除法后的余数SQRT(number)——平方根
实用示例:
- 折扣四舍五入:
ROUND(Amount__c * Discount_Rate__c, 2) - 奇偶判断:
MOD(Record_Number__c, 2) = 0 - 价格区间:
MAX(MinPrice__c, MIN(CalculatedPrice__c, MaxPrice__c))
ROUND 对财务计算至关重要——绝不要让货币值不取整。MIN/MAX 的"三明治"模式是经典做法:MIN(MaxPrice, MAX(MinPrice, ActualPrice)) 无需嵌套 IF 就能把值限制在两个边界之间。
文本函数(Text Functions)
文本函数转换和提取字符数据:
LEFT(text, n)——前 N 个字符RIGHT(text, n)——后 N 个字符MID(text, start, n)——从某位置起的 N 个字符LEN(text)——字符数UPPER(text)/LOWER(text)——大小写转换TRIM(text)——去除首尾空格SUBSTITUTE(text, old, new)——替换字符FIND(needle, haystack)——子串位置TEXT(value)——把数字/日期转为文本
实用示例:
- 提取区号:
LEFT(Phone__c, 3) - 从邮箱取域名:
MID(Email__c, FIND("@", Email__c)+1, 99) - 清理输入:
TRIM(UPPER(Name__c)) - 掩码 SSN:
"***-**-" & RIGHT(SSN__c, 4)
文本函数是字符串处理的"瑞士军刀",在数据清理、动态标签以及集成格式化(外部系统期望特定字符串格式)时尤其有价值。
汇总函数(Summary Functions)
汇总函数可用在汇总报表(summary)、矩阵报表(matrix)和连接报表(joined reports)中,也可以跨越记录进行聚合。几个例子:
PRIORVALUE(field)——当前编辑之前的字段值,在验证规则中非常有用(例如阻止把 Stage 从 "Closed Won" 改回更早阶段)。REGEX(pattern, text)——用正则表达式匹配文本,用于校验邮箱格式、电话模式、自定义 ID;如REGEX(Email__c, ".*@.*\..*")做基础邮箱检查。IMAGE(url, alt_text, height, width)——显示图片;如IMAGE(Photo_URL__c, "Contact Photo", 100, 100)。HYPERLINK(url, label, target)——创建可点击链接;如HYPERLINK("/" & Id, Name)链接到记录本身。
汇总函数模糊了"数据"与"呈现"之间的界限——用 IMAGE 做视觉指示,用 HYPERLINK 做导航。此外还有 PARENTGROUPVAL 和 PREVGROUPVAL 这类报表分组函数(仅在自定义汇总公式和报表分组级别可用)。
高级函数(Advanced Functions)
高级函数解决基础公式遗漏的边界情况:
BLANKVALUE(field, replacement)——字段为空时使用替换值;如BLANKVALUE(Phone__c, "No Phone"),避免显示空值。NULLVALUE(field, replacement)——类似,针对数字字段;如NULLVALUE(Commission__c, 0),把 null 当作零处理。ISPICKVAL(picklist_field, value)——比较选项列表值;如ISPICKVAL(Stage__c, "Closed Won"),比用=更稳妥。INCLUDES(multi_picklist, value)——检查多选选项列表。GETRECORDIDS(list)——从相关列表返回记录 ID。
最佳实践:始终显式处理 NULL 值;用 BLANKVALUE/NULLVALUE 避免公式错误;对选项列表使用 ISPICKVAL 而非 =(它能在选项列表值被重命名后仍然健壮)。这些函数把"精致的、生产就绪"的公式与"脆弱"的公式区分开来——一个在空字段上就报错的公式,演示时没问题,但到真实、混乱的生产数据上就会失败。
创建公式字段(02 Create a Formula Field)
本单元动手实践:创建基础公式字段、引用父记录数据的跨对象公式,以及在真实场景中使用日期公式。
学习目标 — 完成本单元后,你将能够:
- 创建基础公式字段
- 构建引用父记录字段的跨对象公式
- 使用日期公式进行基于时间的计算
基础公式字段(Basic Formula Fields)
让我们动手构建几个基础公式。你的销售团队想一眼看到他们正在跟进的机会(Opportunity)的佣金是多少。要计算佣金,我们把机会记录上的金额(Amount)乘以当前佣金率,再把结果四舍五入到两位小数。
创建自定义字段的步骤:
- 从 Setup 打开对象管理器(Object Manager),选择 Opportunity。
- 选择 字段和关系(Fields & Relationships)。
- 点击 新建(New)。
- 选择 公式(Formula),点击 下一步(Next)。
- 字段标签(Field Label)输入
Commission。 - 公式返回类型选择 货币(Currency)——此时会出现"小数位(Decimal Places)"新选项。
- 小数位保持 2。
- 点击 下一步。
接下来构建公式:先加入机会的 Amount 字段,再加一个乘号运算符,随后输入基准佣金比例。
- 选择 高级公式(Advanced Formula)。
- 点击 插入字段(Insert Field),选择 Amount,点击 插入(Insert)。
- 点击 插入运算符(Insert Operator),选择 * 乘(Multiply)。
- 在
*之后输入0.06(6% 佣金)。公式应为:Amount * 0.06。 - 点击 检查语法(Check Syntax)——会提示"合并且字段或函数中无语法错误"。
- 描述(Description)输入
Base commission for Amount of opportunity。 - 保持勾选 将空字段视为零(Treat blank fields as zeroes)——因为公式用的是数字,我们希望任何用到的空字段都设为零而非空。
- 点击 下一步,接受默认的字段级安全与页面布局,点击 保存(Save)。
恭喜!你的第一个公式字段已经就位。到 Opportunities 列表视图里,通过"选择要显示的字段"把 Commission 加入可见列,你就能看到这些 Commission 字段被一个简单的公式字段自动填充了。即使是最简单的公式,也能提供有价值的信息。
关键原则:用真实数据(包括边界情况)测试;用 BLANKVALUE 处理空字段;添加描述,让其他管理员理解逻辑;考虑字段级安全性(谁能看到这些数据)。
跨对象公式(Cross-Object Formulas)
让我们再来一个——这次从父对象拉取信息。一个跨越两个相关对象(通过查找关系 lookup relationship)、并引用这些对象上的合并字段(merge field)的公式,被称为跨对象公式(cross-object formula)。
销售团队看到机会上的佣金后大受鼓舞,现在他们想在联系人(Contact)记录上看到客户(Account)的行业(Industry),这样与联系人沟通时就不用再去打开客户记录了。
创建步骤:
- 返回对象管理器,选择 Contact。
- 选择 字段和关系 → 新建 → 公式 → 下一步。
- 字段标签输入
Account Industry,返回类型选择 文本(Text)。 - 选择 高级公式,点击 插入字段,先选 Account,再选 Industry,点击 插入。公式为:
Account.Industry。 - 点击 检查语法——报错了!
Error: Field Industry is a picklist field. Picklist fields are only supported in certain functions.
原来 Industry 是选项列表。要在公式里使用它,必须把它转换成文本。还记得文本函数吗?用 TEXT 函数:把光标放在 Account.Industry 前,在函数列表里输入 t 并选择 TEXT,插入后把参数 value 替换成 Account.Industry,最终公式为 TEXT(Account.Industry)。再次检查语法——这次没有错误了。
- 描述输入
Contact's Account Industry。 - 选择 将空字段视为空(Treat blank fields as blanks)——因为用的字段不是数字,留空也没关系。
- 点击 下一步、下一步、保存。
打开一个联系人查看详情,就能看到 Account Industry 字段了。销售团队欢呼!
跨对象公式的语法是 ParentObject__r.FieldName__c(在 Contact 上引用父级 Account,即 Account.Industry)。限制:最多可向上引用 10 层关系;可以引用标准和自定义字段;但不能向下引用子记录。跨对象公式消除了跨相关记录重复数据的需要——保持"单一事实来源"。
处理日期(Time for Dates)
服务团队主管听说了你为销售团队做的出色工作,想知道能否加一个字段来显示工单(Case)已开启多少天。当然可以!
创建步骤:
- 从 Setup 打开对象管理器,选择 Case。
- 选择 字段和关系 → 新建 → 公式 → 下一步。
- 字段标签输入
Days Open,返回类型选择 数字(Number),小数位选择 0。 - 选择 高级公式。
- 从函数里选择 TODAY(给出当前日期值),点击 插入所选函数。
- 从"插入运算符"里选择 - 减(Subtract)。
- 从函数里选择 DATEVALUE,插入后把参数
expression替换为 Date/Time Opened 字段。公式为:TODAY() - DATEVALUE(CreatedDate)。 - 点击 检查语法,描述输入
Number of days the case has been open,保持"将空字段视为零"勾选。 - 点击 下一步、下一步、保存。
现在查看一些工单,Days Open 字段已被填充。日期公式能回答"何时"的问题:
- 距关闭还有几天:
CloseDate - TODAY()(负数 = 已逾期,正数 = 即将到来) - 是否今年:
YEAR(CloseDate) = YEAR(TODAY()) - 当前阶段天数:
TODAY() - DATEVALUE(Stage_Change_Date__c) - 下个周年日:
DATE(YEAR(TODAY()), MONTH(StartDate), DAY(StartDate)) - 从日期取季度:
CEILING(MONTH(CloseDate)/3)(返回 1–4 对应 Q1–Q4)
日期公式支撑管道可见性(这个机会有多旧了?)、SLA 追踪(距违约还有几天)和自动化报表(哪个季度、哪个财年)。不过——看完新字段数据后,你发现了一个问题,我们将在下一单元用逻辑函数来解决它。
在公式中使用逻辑(03 Use Logic in Formulas)
本单元掌握公式中的逻辑表达式——用 IF 构建决策树,用 CASE 简化复杂比较,并创建基于数据做出智能选择的公式。
学习目标 — 完成本单元后,你将能够:
- 使用 IF 函数构建逻辑表达式
- 使用 CASE 函数进行更简洁的多值比较
- 在真实公式场景中应用逻辑
开始使用逻辑(Let's Get Logical)
上一单元你创建了一个显示工单已开启天数的字段——用当前日期减去 Date/Time Opened。如果工单仍处于开启状态,这没问题;但如果工单已经关闭了呢?那就应该用 Date/Time Opened 减去 Date/Time Closed。我们需要的正是逻辑。
IF 函数判断一个表达式是真还是假,由你决定为真时返回什么值、为假时返回什么值。其语法为 IF(logical_test, value_if_true, value_if_false)——它接收三个输入:logical_test 是要评估的条件表达式,value_if_true 是真时的值,value_if_false 是假时的值。
更新 Days Open 公式的步骤:
- 在 Case 的字段里选择 Days Open,点击 编辑(Edit),把描述改为
Number of days the case was or has been open。 - 点击 高级公式,把光标放到公式最前面(
TODAY之前)。 - 插入 IF 函数,再插入 ISBLANK 函数,把 ISBLANK 的参数
expression替换为 Date/Time Closed 字段。 - 把
value_if_true替换为原公式TODAY() - DATEVALUE(CreatedDate)。 - 把
value_if_false替换为DATEVALUE(ClosedDate) - DATEVALUE(CreatedDate)(用 DATEVALUE 格式化日期时间)。
最终公式为:IF(ISBLANK(ClosedDate), TODAY() - DATEVALUE(CreatedDate), DATEVALUE(ClosedDate) - DATEVALUE(CreatedDate))。点击检查语法并保存。
搞定!服务团队欣喜若狂,已经开始制作报表来展示他们如何缩短工单保持开启的时间。
IF 是逻辑的基础,AND/OR 让条件更丰富,嵌套则创建决策树。一个复合条件示例:IF(AND(Amount__c > 10000, Stage__c = "Closed Won"), "High Value Win", "Standard")。三者结合,就构成了声明式逻辑。
CASE 函数的用武之地(The Case for CASE Functions)
还记得你为销售团队在 Opportunity 上创建的 Commission 字段吗?他们很爱它!但……他们想给佣金加一个阶梯(scale)。佣金表如下:
- ≤ $50,000:4%
- > $50,000 且 ≤ $150,000:6%
- ≥ $150,000:8%
这是 CASE 函数的绝佳场景。CASE 函数把给定表达式与一系列值做比较:如果表达式等于某个值,就返回对应的结果;如果都不相等,就返回 else_result。其语法为 CASE(expression, value1, result1, value2, result2, ..., else_result)。
这里的技巧在于:每个 IF 函数返回真或假,但 CASE 不接受 true/false 作为值,IF 必须返回一个有效值(如数字)。所以我们用 1 表示真、0 表示假,把 CASE 的 expression 设为 1。当某个 IF 返回 1(即 Amount 落在对应区间)时,CASE 就返回对应的佣金(Amount 乘以佣金百分比)。
映射关系:
value1=IF(Amount <= 50000, 1, 0)→result1=Amount * 0.04value2=IF(AND(Amount > 50000, Amount <= 150000), 1, 0)→result2=Amount * 0.06else_result=Amount * 0.08(无需再写大于等于 15 万的判断,因为这是唯一剩下的可能)
最终公式为:
CASE(1, IF(Amount <= 50000, 1, 0), Amount * 0.04, IF(AND(Amount > 50000, Amount <= 150000), 1, 0), Amount * 0.06, Amount * 0.08 )
点击检查语法并保存。回到 Opportunities 列表就能看到佣金更新了。销售团队再次刮目相看——如果他们以后要加更多佣金阶梯,你可以随时添加。
通用原则:当你在对单个字段匹配多个离散值时,用 CASE 代替深层嵌套 IF——它更可读、更少出错、更易维护。典型场景包括把选项列表转成数字用于评分/排序、把状态码映射为显示名称、基于离散值分配类别。
公式逻辑——关键要点(Formula Logic — Key Takeaways)
回顾本模块学到的公式工具包:
- 基础:公式字段是动态的、被计算出来的、始终最新,且不消耗存储;选择正确的返回类型是关键的第一步。
- 运算符:数学
+ - * / ^做计算;逻辑= <> < > && ||做比较与决策;文本&做拼接。 - 函数:日期时间
TODAY()、YEAR()、MONTH();逻辑IF()、CASE()、AND()、OR()、ISBLANK();数学ROUND()、ABS()、MAX()、MIN()、MOD();文本LEFT()、RIGHT()、MID()、FIND()、TRIM();高级BLANKVALUE()、ISPICKVAL()、REGEX()。 - 跨对象:可向上引用父字段最多 10 层,语法为
ParentObject__r.FieldName__c。
最佳实践:始终用 BLANKVALUE 处理 NULL;用 CASE 替代深层 IF 嵌套;用真实数据(包括边界情况)测试;用描述为公式写文档。你现在已经掌握了用字段、运算符和函数"驯服"公式的基本技能,几乎可以创建任何你能想象到的公式——用公式生成各种数据洞察,而你才只是刚刚触及皮毛。


























