跳至主要内容
Adaptive Planning
参考信息:公式函数

参考信息:公式函数

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

数学函数

数学函数以按钮的形式提供。例如,加法 (+)、减法 (-) 和乘法 (*)。您可以从
“函数”>“数学”
中选择其他选项。

逻辑函数

包含在
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
仍然有效,因为未对包含错误的参数求值。
示例:
  • IFF (this.Version.isActuals, ACCT.TravelExp, ACCT.Personnel.EstimatedTravel)
  • IFF (this.Qtr.PositionOf (this.Month) = 2, 100000, 0)
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
报表
  • 第一个参数 (
    Orig_EXPR
    )是首先计算的原始表达式(有时称为
    控制表达式
    )。
  • 后续参数为
    Cases
    (值和相应的表达式)可以激活,具体取决于哪个大小写与原始表达式的值匹配。
  • 您可以定义一个或多个 Case。每个 Case 都包含一个值 (
    N
    )和表达式 (
    EXPR
    ),用英文逗号分隔。展开后的语法如下所示:
    Switch (Orig_EXPR, N1, EXPR1, N2, EXPR2, ..., Default)
  • 例如,如果原始表达式的值与中定义的值匹配,
    Case1
    ,与关联的表达式
    Case1
    已返回。但是,如果原始表达式的值匹配
    Case2
    ,与关联的表达式
    Case2
    是否已返回,依此类推。
  • 如果没有匹配项,
    Switch
    返回
    Default
    表达式。
  • 所有表达式 (
    EXPR
    )中的
    Switch
    语句的数据类型必须相同(字符串、日期、数字等)。如果表达式的数据类型不同,则会出现以下错误:
    Inconsistent
    切换返回类型
  • 而不是单个值 (
    N
    )对于每个工单,您可以指定
    Range(L,U)
    值的数量,其中
    L
    是范围下限,
    U
    是范围的上限。例如,一个范围可能包含若干年。
    Range(2014,2017)
    当原始表达式的值落在该范围内(包括端点)时,与该范围关联的表达式将被激活。
  • 范围的每个参数都必须是相同的数据类型(例如,像 7 这样的数字,像
    Engineering
    或使用现有日期构建的日期常量
    Date()
    函数或解析为正确数据类型的表达式(例如
    this.Version.Name
    ACCT.Rent
    )。
示例:
  • Switch (ROW.DAY,1,"Sunday",2,"Monday",3,"Tuesday","No match")
    如果
    ROW.DAY
    为 2,则 Monday 是与值 2 对应的表达式,因此
    Switch
    结果为星期一。
  • Switch (ToNumber (ROW.CaseQty), Range (0,11), 0, Range (12,24), 1, Range (24,48), 4, 0)
    第二个示例将返回0、1 或4,具体取决于在中找到的数值
    CaseQty
    选择器。

日期和时间函数

日期函数通常与模型化工作表的“日期”
列结合使用。日期函数仅显示在模型化工作表的计算型账户中。
日期函数适用于采用“月”>“季度”>“年”配置的日历。如果您的日历使用不同的结构,其中许多函数都会返回错误。请考虑改用以下函数: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
返回包含 2016 年 8 月 5 日的会计日历季度。
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