学习目标
- 了解常见配方错误的原因。
- 排查高级公式字段。
语法错误
即使是高级配方大师偶尔也会遇到他们的配方的问题。最常见的公式错误是语法错误。要随时检查公式的语法,请单击 Check Syntax.
缺少或额外的括号
在你的公式中不小心输入一个额外的括号或者留下一个。嵌套逻辑语句(如IF(),AND()和OR()时,此错误尤为常见。
如,这个公式在最后缺少一个左括号。
如果在函数内有太多括号或逗号,则也会出现此错误。这是相同的公式,但带有一个额外的括号。
字段不存在
当涉及语法错误时,高级公式编辑器是您的朋友。在使用插入操作符或插入字段按钮时,几乎不可能拼错字段或函数的名称。
这里我们打算引用Principal__c而不是Principle__c。如果忘记在文本字符串周围加上引号,也会出现此错误。
参数数量不正确
如果某个函数使用的参数数量不正确,则会遇到语法错误。对使用可变数量参数的函数(如CASE())要格外小心。
这个公式在CASE()语句中遗漏了最后一个参数,即贯穿案例。公式编辑器假设我们只想检查四个案例,而不是五个。所以总共找了10个论点,我们真的要给它12个。
未知功能
当您拼错函数名称或者尝试使用不存在的函数时,您也会遇到错误。
此公式尝试引用不存在的函数MINIMUM()。我们打算使用MIN(),它取一个数字列表并返回最小值。
使用不同的数据类型
在创建公式时,请在编写公式之前考虑希望它返回的数据类型。如果您的公式返回的数据类型不是您选择的数据类型,则无法保存。
在类型之间转换数值或使用类似数据类型(如日期和日期/时间或数字和货币)时很容易混淆数据类型。例如,此公式被写为在所选公式返回类型为Date / Time时返回Date值。
若要更正此错误,您可以将公式字段的返回类型更改为日期。或者,您可以用NOW()替换TODAY()来生成日期/时间值而不是日期。
编译大小和公式长度错误
公式字段功能强大,但规模受限。公式限制为3,900个字符或4,000个字节,包括空格,返回字符和注释,编译时不能超过5,000个字节。了解这些大小限制之间的区别以及如何解决或限制这些限制很重要。
长度限制
公式限于3,900个字符。你可以用几种方法缩短长公式。用&&替换AND(),例如,每次使用都会保存几个字符,就像使用CASE()语句替换嵌套的IF()语句一样。较短的字段名称和注释也会在公式的长度上产生一个小而显着的差异。
如果您的公式字段明显长于3,900个字符,请使用助手公式字段。
编译大小限制
小于3,900个字符的公式仍可能超过5,000字节的编译大小限制。当公式超过编译大小限制时,创建助手字段并缩短字段名称或注释并没有什么区别。引用辅助字段时,其编译大小将被添加到引用它的公式的编译大小。减少公式编译大小的一种方法是最小化对其他公式字段的引用。
一些用于减少公式长度的方法,例如用CASE()语句替换嵌套的IF()语句,也减少了公式的编译大小。
- Date1__c 是日期字段。
- Date2__c 是从Date1__c创建日期的公式字段。
DATE( YEAR( Date1__c ), MONTH( Date1__c ), DAY( Date1__c ) )
DATE(
YEAR( SomeDate__c ),
MONTH( SomeDate__c ),
IF(
OR(
MONTH( SomeDate__c ) = 4,
MONTH( SomeDate__c ) = 6,
MONTH( SomeDate__c ) = 9,
MONTH( SomeDate__c ) = 11
),
30,
IF(
MONTH( SomeDate__c ) = 2,
28,
31
)
)
)
DATE(
YEAR( SomeDate__c ),
MONTH( SomeDate__c ),
CASE(
MONTH( SomeDate__c ),
2, 28,
4, 30,
6, 30,
9, 30,
11, 30,
31
)
)
CASE( Agent__c,
"John", Base_Commission__c * 2,
"Jane", Base_Commission__c * 6,
/* 重复许多其他代理 */
Base_Commission__c
)
Base_Commission__c * CASE( Agent__c,
"John", 2,
"Jane", 6,
/* 许多其他代理重复 */
1
)