文章目錄
- 簡單公式(如 =128+345)
- 包含列引用的公式(如 =[Revenue] >[Cost])
- 調用函數的公式(如 =AVERAGE(1, 2, 3, 4, 5))
- 含有嵌套函數的公式(如 =SUM(IF([A]>[B], [A]-[B], 10), [C]))
- 算術運算子
- 比較子
- 文本運算子
- 列表或庫執行公式中的運算的順序
SPS中您可以使用列表或庫中的公式和函數以多種方式計算資料。通過向列表或庫中添加計算資料行,可以為來自其他列的資料建立公式,並可執行函數以計算日期和時間、運行數學方程或處理文字。例如,在工作清單中,可以使用一個列根據“開始日期”和“完成日期”列來計算完成每項任務所需的天數。
注釋 本文介紹與使用公式和函數有關的基本概念。有關具體某個函數的特定資訊,請參閱有關該函數的文章。
本文內容
公式概述
函數概述
在公式中使用列引用
在公式中使用常量
在公式中使用運算子
公式概述
公式是對列表或庫中的值進行計算的等式。公式以等號 (=) 開頭。例如,在下面的公式中,結果等於 2 乘以 3 再加 5。
=5+2*3
可以在計算資料行中使用公式,也可以使用公式計算某一列的預設值。公式中可以包含函數 (函數:函數是預先編寫的公式,可以對一個或多個值執行運算,並返回一個或多個值。函數可以簡化和縮短工作表中的公式,尤其在用公式執行很長或複雜的計算時。)、列引用、運算子 (運算子:一個標記或符號,指定運算式內執行的計算的類型。有數學、比較、邏輯和引用運算子等。)和常量 (常量:不進行計算的值,因此也不會發生變化。例如,數字 210 以及文本“每季度收入”都是常量。運算式以及運算式產生的值都不是常量。),如下例所示。
=PI()*[Result]^2
| 元素 |
說明 |
| 函數 |
PI() 函數返回圓周率 pi 的值 3.141592654。 |
| 引用(或列名) |
[Result] 表示當前行的“Result”列中的值。 |
| 常量 |
直接輸入到公式中的數字或文本值,如 2。 |
| 運算子 |
*(星號)運算子執行乘法運算,^(插入符號)運算子表示將數字乘冪。 |
公式可以使用上表中的一個或多個元素。下面是一些按照複雜程度排序的公式的樣本。
簡單公式(如 =128+345)
下列公式包含常量和運算子。
| 樣本 |
說明 |
| =128+345 |
將 128 與 345 相加 |
| =5^2 |
計算 5 的平方 |
包含列引用的公式(如 =[Revenue] >[Cost])
下列公式引用同一個列表或庫中的其他列。
| 樣本 |
說明 |
| =[Revenue] |
使用“Revenue”列中的值。 |
| =[Revenue]*10/100 |
“Revenue”列中的值的 10%。 |
| =[Revenue] > [Cost] |
如果“Revenue”列中的值大於“Cost”列中的值,則返回“Yes”。 |
調用函數的公式(如 =AVERAGE(1, 2, 3, 4, 5))
下列公式調用內建函數。
| 樣本 |
說明 |
| =AVERAGE(1, 2, 3, 4, 5) |
返回一組數值的平均值。 |
| =MAX([Q1], [Q2], [Q3], [Q4]) |
返回一組數值中的最大值。 |
| =IF([Cost]>[Revenue], "Not OK", "OK") |
如果成本大於收入,則返回“Not OK”。否則,返回“OK”。 |
| =DAY("15-Apr-2008") |
返回日期中的天。此公式返回數字 15。 |
含有嵌套函數的公式(如 =SUM(IF([A]>[B], [A]-[B], 10), [C]))
下列公式將一個或多個函數指定為函數參數。
| 樣本 |
說明 |
| =SUM(IF([A]>[B], [A]-[B], 10), [C]) |
IF 函數返回列 A 與列 B 中值的差值或 10。 SUM 函數將 IF 函數的傳回值與列 C 中的值相加。 |
| =DEGREES(PI()) |
PI 函數返回數字 3.141592654。 DEGREES 函數將弧度值轉換為角度值。此公式返回數值 180。 |
| =ISNUMBER(FIND("BD",[Column1])) |
FIND 函數在 Column1 中搜尋字串 BD,並返回該字串的起始位置。如果未找到該字串,則返回一個錯誤值。 如果 FIND 函數返回一個數值,則 ISNUMBER 函數返回“Yes”。否則,它返回“No”。 |
函數概述
函數是預定義的公式,這些公式使用叫做參數的特定值按特定順序或結構進行計算。函數可用於執行簡單或複雜的計算。例如,下面的 ROUND 函數執行個體可將“Cost”列的數字四捨五入為小數點後兩位。
=ROUND([Cost], 2)
學習函數和公式時,下列詞彙很有協助:
結構 函數的結構以等號 (=) 開始,後跟函數名、左括弧、以逗號分隔的函數參數,以右括弧結束。
函數名 列表或庫支援的函數的名稱。每個函數都引用特定個數的參數,並對這些參數進行處理,然後返回一個值。
參數 參數可以是數字、文本、邏輯值(如 True 或 False)或列引用。指定的參數必須是該參數的有效值。參數也可以是常量、公式或其他函數。
在某些情況下,可能需要將一個函數作為另一個函數的一個參數使用。例如,下面的公式使用了嵌套的 AVERAGE 函數,將結果與兩列的值之和進行比較。
=AVERAGE([Cost1], SUM([Cost2]+[Discount]))
有效傳回值 當函數作為參數使用時,其傳回值的類型必須與參數所用值的類型相同。例如,如果參數使用“Yes”或“No”,則嵌套函數必須返回“Yes”或“No”;否則,列表或庫將顯示 #VALUE! 錯誤值。
嵌套層限制 一個公式最多可以含有八層嵌套函數。當函數 B 作為函數 A 中的參數使用時,函數 B 是第二層函數。例如,在上面的樣本中,SUM 函數是第二層函數,因為它是 AVERAGE 函數的參數。在 SUM 函數中嵌套的函數是第三層函數,依此類推。
注釋
- 列表和庫不支援 RAND 和 NOW 函數。
- 計算資料行中不支援 TODAY 和 ME 函數,但在某一列的預設值設定中支援這兩個函數。
在公式中使用列引用
引用標識當前行中的一個儲存格,並向列表或庫指示在何處搜尋要在公式中使用的值或資料。例如,[Cost] 引用當前行中“Cost”列中的值。如果當前行中“Cost”列的值為 100,則 =[Cost]*3 返回 300。
通過引用,可以在一個或多個公式中使用列表或庫的不同列中所包含的資料。可以在公式中引用下列資料類型的列:單行文本、數字、貨幣、日期和時間、選擇、是/否以及計算資料行。
可以使用列的顯示名稱在公式中引用該列。如果名稱中包含空格或特殊字元,則必須將名稱括在方括弧 ([ ]) 中。引用不區分大小寫。例如,可以在公式中使用 [Unit Price] 或 [unit price] 來引用“Unit Price”這一列。
注釋
- 不能引用當前行以外的行中的值。
- 不能引用其他列表或庫中的值。
- 不能通過行 ID 引用新插入的行。因為執行計算時該 ID 尚不存在。
- 不能在為某列建立預設值的公式中引用其他列。
在公式中使用常量
常量是不用計算的值。例如,日期 10/9/2008、數字 210 以及文本“季度收入”都是常量。常量可以是下列資料類型:
- String(樣本:=[Last Name] = "Smith")
String 常量括在引號中,最多可以包含 255 個字元。
- Number(樣本:=[Cost] >= 29.99)
Numeric 常量可以包含小數位元,可以是正數或負數。
- Date(樣本:=[Date] > DATE(2007,7,1))
Date 常量要求使用 DATE(year,month,day) 函數。
- Boolean(樣本:=IF([Cost]>[Revenue], "Loss", "No Loss")
“Yes”和“No”是 Boolean 常量。可以在條件表達中使用 Boolean 常量。在上面的樣本中,如果“Cost”大於“Revenue”,則 IF 函數返回“Yes”,該公式返回字串“Loss”。如果“Cost”等於或小於“Revenue”,則該函數返回“No”,並且該公式返回字串“No Loss”。
在公式中使用運算子
運算子指定要對公式中的元素執行的運算的類型。列表和庫支援三種不同類型的運算子:算術運算子、比較子和文本運算子。
算術運算子
可使用下列算術運算子來執行加法、減法或乘法等基本數學運算,組合數字或者產生數字結果。
| 算術運算子 |
含義(樣本) |
| +(加號) |
加法運算 (3+3) |
| –(減號) |
減法運算 (3–1) 負數 (–1) |
| *(星號) |
乘法運算 (3*3) |
| /(正斜杠) |
除法運算 (3/3) |
| %(百分比符號) |
百分比 (20%) |
| ^(插入符號) |
乘冪運算 (3^2) |
比較子
可以使用下列運算子對兩個值進行比較。使用這些運算子對兩個值進行比較時,結果是一個邏輯值“Yes”或“No”。
| 比較子 |
含義(樣本) |
| =(等號) |
等於 (A=B) |
| >(大於符號) |
大於 (A>B) |
| <(小於符號) |
小於 (A<B) |
| >=(大於等於符號) |
大於或等於 (A>=B) |
| <=(小於等號) |
小於或等於 (A<=B) |
| <>(不等號) |
不等於 (A<>B) |
文本運算子
使用與號 (&) 聯結或串連一個或更多個文本字串以產生一串文本。
| 文本運算子 |
含義(樣本) |
| &(與號) |
將兩個值串連或聯結起來產生一個連續的文本值 ("North"&"wind") |
列表或庫執行公式中的運算的順序
公式按照特定的順序計算值。公式可以使用等號(=)開頭。等號後面緊跟著要計算的元素(運算元),它們之間用運算子分隔。根據公式中每個運算子的特定順序,列表和庫從左向右計算公式。
運算子優先順序
如果一個公式中用到多個運算子,列表和庫將按下表所示的順序進行運算。如果公式中包含具有相同優先順序的運算子,例如,公式中同時包含乘法運算子和除法運算子,則列表和庫將從左至右計算運算子。
| 運算子 |
說明 |
| – |
負號(例如 –1) |
| % |
百分比 |
| ^ |
乘冪 |
| * 和 / |
乘和除 |
| + 和 – |
加和減 |
| & |
串連(將兩個文本串聯接在一起) |
| = < > <= >= <> |
比較 |
使用括弧
要更改求值順序,請將公式中要先計算的部分用括弧括起來。例如,下面公式的結果是 11,因為列表或庫先進行乘法運算後進行加法運算。該公式將 2 與 3 相乘,然後再加上 5,所得的數值就是最終結果。
=5+2*3
與此相反,如果使用括弧改變文法,則列表或庫先將 5 與 2 相加,再用所得的結果乘以 3,得到的最終結果為 21。
=(5+2)*3
在下面的樣本中,公式中第一部分周圍的括弧強制列表或庫先計算 [Cost]+25,然後用結果除以列 EC1 和 EC2 中的值之和。
=([Cost]+25)/SUM([EC1]+[EC2])