参考信息:公式函数
公式函数分为四类:数学函数、逻辑函数、字符串函数和日期函数。本主题定义了每个函数,并提供了简要说明。
为简单起见,表格的描述板块使用英文逗号分隔符来显示公式。某些浏览器设置要求您使用英文分号分隔符。语法列同时显示了这两种版本。

逻辑函数
包含在 If
语句、基本逻辑函数和比较函数以按钮的形式提供。例如,逻辑与 (AND
)、逻辑或 (OR
)和逻辑非 (NOT
)。比较包括等于 (=
),大于 (>
),小于 (<
),或不等于 (!=
)。您还可以使用 (<>
)(表示不等于)。
您还可以从“函数”>“逻辑”中选择其他逻辑函数:
语法 | 描述 |
|---|---|
Blank() | 返回 Blank 值。此值显示为空白(而不是零),但对公式来说,其计算结果与零相同。与零不同的是,它会导致IsBlank() 要返回的函数 TRUE ,但与零类似,当在工作表或报告上启用了“不显示空行”时,可以不显示此值。 |
Error () | 造成运行时计算错误。
示例: IF(ACCT.EffectiveHeadcount < 0, Error(), ACCT.EffectiveHeadcount+ACCT.AddlHeadcount) 如果有效人员编制小于 0,则返回一个错误,可帮助追查根本问题。 |
If (EXPR, T, F)
If (EXPR; T; F) | 返回一个数值 ( T ) if 布尔值表达式 (EXPR ) 为 true,否则返回数值 (F )。您可以使用布尔运算符和比较运算符来构建布尔表达式。 |
Iff (EXPR, T, F)
Iff (EXPR; T; F) | 的“快速”形式或快捷形式 If 函数。返回的值与If 。但是,如果条件为 true,则不会计算该函数的第三个参数。同样,如果条件为 false,则不会计算第二个参数。这意味着第二个或第三个参数可能包含错误,但Iff 仍然有效,因为未对包含错误的参数求值。
示例:
|
IsBlank (N) | 如果参数为空,则返回 true,否则返回 false。只能在表达式参数中使用 EXPR ) 映射到If 函数。示例: If(IsBlank(Row.StartDate),0,1) |
Switch (Orig_EXPR, Case1, Case2, ..., Default)
Switch (Orig_EXPR; Case1; Case2; ...; Default) | 提供了一种编写简洁表达式的方法,可代替复杂的嵌套表达式。 If 报表
示例:
|
日期和时间函数
日期函数通常与模型化工作表的“日期”列结合使用。日期函数仅显示在模型化工作表的计算型账户中。

日期函数适用于采用“月”>“季度”>“年”配置的日历。如果您的日历使用不同的结构,其中许多函数都会返回错误。请考虑改用以下函数:this.version.positionOf(D.strata)。将“D”替换为以下格式的日历日期:yyyy,mm,dd,并将“时间层级”替换为您在日历中使用的时间层级。示例:this.version.positionOf(2024,01,02.week) 返回 2024 年的第一周。
语法 | 描述 |
|---|---|
D.Month.NumberOfDays | 返回日期所在月份的天数 D 发生. |
D.Year.PositionOf(D.Month). | 返回会计年度的月份。 D 发生。 |
D.Year.PositionOf(D.Qtr) | 返回会计年度中哪个季度 D 发生。 |
(Date). stratum_code | 返回 Timeperiod 所请求的时间层级类型的名称,其中包含(单个,公历)日期。任何日期均可用作时间层级代码的基础。示例: ToDate (2016,8,5).Qtr |
Day (D) | 对于 date ( D )。 |
DaysInMonth (D) | 返回日期 D 所在月份的天数。对于自定义日历,此函数可能会返回错误或不正确的值。用途 D.Month.NumberOfDays 改为。 |
FiscalMonth (D) | 返回会计年度中日期 ( D )发生。对于自定义日历,此函数可能会返回错误。用途D.Year.PositionOf(D.Month). |
FiscalQuarter (D) | 返回会计年度中符合以下条件的季度: D )发生。对于自定义日历,此函数可能会返回错误。用途 D.Year.PositionOf(D.Qtr). |
FiscalYear (D) | 返回日期( D )发生。对于自定义日历,此函数可能会返回错误。尝试使用与年份完全匹配的数字对年份进行编码,并使用ToNumber (D.Year.code). |
Month (D) | 返回日期 ( D )发生。 |
Quarter (D) | 返回日期所属的日历季度 ( D )发生。该日期可能与您公司的会计季度不同(见下文)。 |
this.Version.PositionOf(D.Month) | 返回一个数字,该数字表示日期 D 所在版本的月份(第一个月 = 0 )。如果日期 D 早于版本的开始日期,则此数字可以为负数。 |
this.Version.PositionOf(D.Year) | 返回一个数字,表示日期 D 所在的版本年份(第一年 = 0 )。如果日期 D 早于版本的开始日期,则此数字可以为负数。 |
TimeFraction (D1, D2, D, Dx)
TimeFraction (D1; D2; D; Dx) | 返回当前月份中出现在开始日期 ( D1 )和结束日期 (D2 )。如果可选日期 (D ) 已指定,则使用其中的月份 D 发生的日期,而不是当月。如果可选的固定天数参数 (Dx )已指定,则重设中的时段 D 替换为数值。
未配置自定义日历的实例可以使用 MonthFraction 而不是TimeFraction 。 |
ToDate (Y, M, D)
ToDate (Y; M; D) | 返回由给定年份 ( Y )、月(M ),天(D )。如果 D 被省略, 15 已使用。返回的值可用作其他使用日期的函数的参数。 |
VersionMonth (D) | 返回一个数字,该数字表示日期 ( D )发生(第 1 个月 = 0 )。如果日期(D )早于版本的开始日期。
对于自定义日历,此函数可能会返回错误。用途 this.Version.PositionOf(D.Month). |
Version.PositionOf (timeperiod) | 返回所提供的时段在整个版本跨度内的相对顺序。版本中的第一个时段以 1 开头,如果该时段早于版本开始时间,则顺序数字可以为负数。此函数也适用于版本结束日期后的时段。 |
VersionYear (D) | 返回一个数字,表示日期 ( D )发生(第一年 = 0 )。如果日期(D )早于版本的开始日期。
对于自定义日历,此函数可能会返回错误。用途 this.Version.PositionOf(D.Year) 。 |
Year (D) | 返回日期 ( D ),无论是否使用自定义日历,都会发生。 |
字符串函数
语法 | 描述 |
|---|---|
Concat (text1, text2, ...)
Concat (text1; text2; ...) | 返回串联的字符串(由两个或更多个文本字符串连接而成)。 示例: Concat ("hello", "world") 返回“helloworld" 。 |
Length (text) | 返回文本字符串中的字符数。 示例: Length ("Now, is the winter of our discontent. Made glorious summer by this son or York.") 退货79 。 |
Search (source_text, search_text)
Search (source_text; search_text) | 返回的起始位置为 search_text 地点 source_text 。退货 0 如果search_text 未找到。搜索不区分大小写。示例: Search ("Now is the winter of our discontent.", "Winter") 退货 12 。Search ("Now is the winter of our discontent.", "Summer") 退货 0. |
Substring (source_text, start_position, length)
Substring (source_text; start_position; length) | 返回一个文本字符串,其中包含在中找到的字符。 source_text 开始时间start_position (位置 1 是文本字符串的第一个字符),运行时间为length (或直至文本字符串的末尾,以先遇到者为准)。
选择 start_position 属于 0 或更少的值将被视为位置 1 。选择的长度为 0 或更短的时间将被视为长度 0 并返回一个空字符串。选择start_position 晚于source_text 返回空字符串。 |
ToNumber (text) | 将表示数字的文本字符串转换为其数值。此函数将转换字符串的前置部分,直到找到非数字字符为止。如果第一个字符为非数字,则会产生错误。 示例: ToNumber ("7") 退货 7 。ToNumber ("2017-12-31") 返回 2017(一个数字)。ToNumber ("Sample") 返回错误。 |
示例
以下人员编制公式源自人员模型化工作表。它是说明函数如何组合的绝佳示例。此公式返回二进制结果: 1
或 0
。
If(this.Version.PositionOf(this.Month) >= this.Version.PositionOf(ROW.StartDate.Month) # if this month is after the person's start date and (isblank(ROW.EndDate) # and either they have no termination date or this.Version.PositionOf(this.Month) <= Version.PositionOf(ROW.EndDate.Month)), # or the current month is before termination date 1, # return 1 for their headcount in this month 0) # otherwise, return 0