跳至主要內容
Adaptive Planning
上次更新時間 :2023-06-23
概念︰公式建置組塊

概念︰公式建置組塊

用於說明公式的項

公式具有︰
  • 運算元︰要計算的元素。您可以使用運算子分隔運算元。Adaptive Planning 的運算元包括︰
    • 參照︰具有修改元、假設、列的科目 (來自模型工作表的欄)。
    • 常數︰直接輸入公式中的數字或文字值。
  • 修改元︰其他說明,指定對特定時間、層級、維度值或屬性內容值的參照。
  • 運算子︰指定要執行的計算類型。您可以使用︰
    • 符號範例︰星號 (*) 運算子可將數字相乘。大多數符號都可以在公式小幫手中找到,也可以使用鍵盤輸入。
    • 函數︰具有精確語法的範本,結合了運算元和運算子。您必須使用自己的參照、修改元和運算式取代變數。範例︰對於舍入函數「Round (N)」,將 N 取代為複雜計算,且函數會將其舍入至最接近的整數。
此外,這些項還描述了公式的各個部分︰
  • 運算式︰說明公式的特定部分。範例︰在此邏輯公式 Iff ((ACCT.001 > ACCT.002, 1, 0) 中,「ACCT > ACCT.002」是運算式。
  • 字詞︰參照 (與任何修改元組合)。範例︰ACCT.001 [time = this - 1] 是項。
  • 語法︰您必須參照模型中的資料以建立有效公式的方式。範例︰若要參照科目,語法為 ACCT.<account_code>。
  • 標記法︰指向模型元素並允許其他功能的一組進階語法規則。標記法的主要使用案例是 Iff 陳述式。範例︰您可以將 this.Month.NumberOfDays < 30 新增至 Iff 陳述式,以針對 2 月份套用不同的計算。

了解文件中的語法

文件中語法的幾點說明︰
  • 我們在括號中使用大寫字母 (例如 (N)) 或在 V 號內使用文字 (例如 <account_code>) 來表示變數。您必須將變數取代為有效的常數、科目參照或公式運算式。
  • 根據許多國家/地區的標準,我們會使用逗號分隔字詞。如果您的瀏覽器使用逗號做為小數點,則必須以分號分隔各項。
  • 我們新增了空格,讓公式更易讀,但這不是必須的。您也可以在公式中新增或省略空格。
  • 我們將函數 (例如 Divf) 設為大寫,並對元素 (例如 ACCT) 使用全部大寫,但公式不區分大小寫。
範例︰將層級修改元新增至科目的語法為 ACCT.<code> [level = <level_code>]。您必須︰
  • 使用 ACCT。以參照科目。
  • 將 <code> 取代為實際的科目代碼。請務必同時移除 V 字形。
  • 使用方括號來定義修改元。
  • 使用「層級 =」依層級進行修改。
  • 將 <level_name> 取代為層級的實際代碼,並移除 V 形。

運算元︰參照和常數

參照是一種運算元。在 Adaptive Planning 中,參照會將模型中其他位置的值提取到公式中。範例︰您可以參照科目。科目參照會提取該科目在特定版本、層級和時間的值。您可以將下列基本參照新增至公式︰
參照
語法
範例
總分類帳、自訂或指標科目
ACCT.<AccountCode>
ACCT.6113
其中 6113 是科目代碼。
Cube 和模型科目
ACCT.<SheetCode.AccountCode>
ACCT.RevenueCube.003
其中 RevenueCube 是工作表代碼,003 是科目代碼。
假設科目
ASSUM.<AccountCode>
ASSUM.123
其中 123 是科目代碼。
模型工作表上的欄
僅適用於模型計算科目。
ROW.<column_code>
ROW.StartDate
其中,StartDate 是模型工作表上「開始日期」欄位的欄代碼。
模型工作表中的攤分和值查詢
僅適用於模型計算科目。
ROW.<lookup_name>
Row.BenefitLookup
其中 BenefitLookup 是值查詢表的名稱。
常數
任何數字
500
您也可以使用「擷取」方法來參照工作表上的儲存格,該方法會使用科目和任何現有的修改元 (例如時間和層級) 填入公式。請參閱「」 Concept: Typing Basic Formulas in Sheet Cells

修改元

參照科目或列時,可以使用修改元來增加精確位數。修改元可找出科目資料的特定切片。範例︰您想要特定層級或時段的科目值。
您可以新增修改元︰
  • 科目參照旁邊 (不含空格)
  • 方括號內。
  • 如果您使用逗號做為小數點,則以逗號或分號分隔。
  • 使用模型中存在的確切代碼和名稱。
    Modifier
    Syntax
    Example
    Time
    [time = <strata_code>]
    ACCT.001 [time = 2023]
    Where 2023 is the year rollup strata. Pulls the 2023 rollup value of the account.
    Levels
    [level = <level_code>]
    ACCT.001 [level = sales]
    Where sales is the level code. Pulls the value of the account at the Sales level only.
    Custom Dimension
    [<dimension_code> = <dimension_value_code>]
    ACCT.001 [product = shirts]
    Where product is the dimension code and shirts is the dimension value code. Pulls the account data tagged with shirts.
    Attributes
    [<attribute_code> =<attribute_value_code>]
    ACCT.001 [productgroup = tops]
    Where productgroup is the attribute of the Product dimension and tops is the attribute value.
    Pulls the account data tagged with any dimension values that corresponds to the tops attribute value.
    Multiple Modifiers
    [<modifier1> = <code>, <modifier2> = <code>, <modifier3> = <code>]
    ACCT.001 [time = 2023, level = Sales, product = Shirts]
    Pulls the time rollup of 2023 for the Sales level for Shirts.
You can have multiple modifiers per reference, but you can only have 1 value per modifier. So, when you want to pull the value for more than 1 level:
  • Wrong: ACCT.001 [level = Sales, Marketing]
  • Wrong: ACCT.001 [level = Sales, level = Marketing]
  • Correct: ACCT.001 [level = Sales] + ACCT.001 [level = Marketing]
對於整個公式,您可能只需新增修改元。

運算子︰常用數學符號

運算子是提供計算的數學符號。您可以搭配鍵盤上的按鍵使用基本數學公式。在公式小幫手中,工具列中的第一組按鈕提供簡單的數學運算子,您可以將其插入公式中的項之間。
數字是最簡單的數學公式運算元。最簡單的運算子是您在鍵盤上找到的運算子。運算元和運算子之間不需要空格,但可以新增空格,讓公式更易於閱讀。您也可以將簡單的數學運算建立在參照科目和修改元的更複雜的公式中。
以下是您可以使用的一些簡單數學公式範例︰
Math Operator
Example Formula
Addition (+)
ACCT.001 + ACCT.002
Subtraction (-)
ACCT.001 - ACCT.002
Multiplication (*)
ACCT.001 * ACCT.002
Division (Divf)
Divf (ACCT.001, ACCT.002)
Divides ACCT.001 (the dividend) by ACCT.002 (the divisor)
Modulo (%)
10 % 3
Calculates the remainder of the quotient. Returns 1 because 10 divided 3 = 3 remainder 1.
Parenthesis ()
(ACCT.001 + ACCT.002) * 12
Dictates the order of operation: Add the accounts before multiplying by 12.
Round(N)
Round (ACCT.001)
Rounds to the nearest whole number. In the example if the value of ACCT.001 is 5.75, the formula returns 6.

公式函數

公式函數是使用不同運算子和變數的範本。使用函數時,會將變數取代為參照、常數或完整公式運算式。函數很少單獨運作;相反,您可以將函數串在一起以建立公式。
範例︰對於費用科目,您想要使用去年的值,並套用通常儲存在假設科目中的通貨膨脹率。為避免參照空白儲存格,您可以使用邏輯陳述式建立 IF 陳述式。範本如下所示︰IFF (EXPR, T, F)。
使用此函數建置公式的方法如下︰
Replace the Variable
Example
Description
Replace
EXPR
with the IsBlank logical function creating a function within a function.
Iff (
isBlank (N)
, T, F)
The either-or constant on which the True and False calculations rely.
Replace
N
with the Inflation Rate assumption, which has the account code: infl.
Iff (isBlank (
ASSUM.Infl
), T, F)
If the Inflation Rate assumption is blank...
Replace
T
with a calculation that triggers if EXPR is true.
Iff (isBlank (ASSUM.Infl),
ACCT.this [time = this - 12] * (1.05)
, F)
If the Inflation Rate assumption is blank, take the value of this account from 12 months ago and multiply by 1.05.
Replace
F
with a calculation that triggers if EXPR is false.
Iff (isBlank (ASSUM.Infl), ACCT.this [time = this - 12] * (1.05),
ACCT.this [time = this - 12] * ASSUM.Infl
)
If the Inflation Rate assumption isn’t blank, take the value of this account from 12 months ago and multiply it by the Inflation Rate assumption.
在公式小幫手中,我們將公式函數分類為下列群組︰
  • 數學
  • 邏輯
  • 日期
  • String
您可以選取種類,然後使用可用的範本預先填入公式欄位。請參閱「」 Reference: Formula Functions

網格中的定位

Adaptive Planning 的網格中有公式存在。典型的試算表有 2 個座標軸︰科目和時間。科目位於列的下方,時間位於欄的上方。每個儲存格都代表科目與時段之間的特定交集。
在 Adaptive Planning 中,網格是多維的,這表示在您在畫面上看到的 2 維工作表之外,還有 2 個以上的座標軸。範例︰「銷售」層級、2025 年預算版本、總分類帳階層中的「營業收入」科目、「產品」自訂維度值「襯衫」、2025 年 1 月的時段等等的交集處有「營業收入」的資料。在公式中參照資料點時,您參照的是每個座標軸或維度。除非您指定維度,否則係統會依據公式的位置套用某些預設值。這些維度計入每個資料的交集︰
維度。
參照中的預設值
時間和層級
除非您使用時間或層級修改參照,否則與目前地點相同。
範例︰ACCT.001 的公式為 ACCT.002 * 10。
對於 2024 年 1 月,公式會採用 2024 年 1 月的 ACCT.002 值。若為 2024 年 2 月,則會採用 2 月 24 日的值,依此類推,除非您在公式中為時間指定不同的值。
層級也是如此。計算會在目前正在計算的同一層級提取值。
Currency
目前層級的已定義貨幣。
Account
除非您參照其他科目,否則為目前的科目。
每個自訂維度
目前位置的維度值。如果目前位置不存在維度值,則預設為「未分類」值。