參照︰公式函數
公式函數分為四類︰數學、邏輯、字串和日期。本主題定義了每個函數和簡短說明。
為求簡化,表格中的說明均使用逗號做為公式的分隔符號。有些瀏覽器設定會要求您以分號做為分隔符號。語法欄會同時顯示兩個版本。

邏輯函數
包含在 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
要求的級別類型,其包含 (single, Gregorian) 日期。任何日期都可做為級別代碼的基礎。範例︰
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 ) 發生時 (第一個月 = 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