下表提供有关您可以通过使用 Microsoft.SharePoint.SPFieldCalculated 类的 Formula 在计算字段中实现的多种公式的信息。
条件公式
您可以使用下面的公式测试语句的条件并返回 Yes 或 No 值、测试备用值(如 OK 或 Not OK),或返回空白或短划线来表示空值。
确定某数是大于还是小于另一个数
使用 IF 函数执行此比较。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
15000 |
9000 |
=[Column1]>[Column2] |
Column1 是否大于 Column2?(Yes) |
15000 |
9000 |
=IF([Column1]<=[Column2], "OK", "Not OK") |
Column1 是否小于或等于 Column2?(Not OK) |
比较列内容后返回一个逻辑值
对于本身是逻辑值的结果(Yes 或 No),使用 AND、OR 和 NOT 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
15 |
9 |
8 |
=AND([Column1]>[Column2], [Column1]<[Column3]) |
15 是否大于 9 且小于 8?(No) |
15 |
9 |
8 |
=OR([Column1]>[Column2], [Column1]<[Column3]) |
15 是否大于 9 或小于 8?(Yes) |
15 |
9 |
8 |
=NOT([Column1]+[Column2]=24) |
15 加 9 是否等于 24?(No) |
对于本身是另一个计算的结果,或对于 Yes 或 No 之外的任何其他值,使用 IF、AND 和 OR 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
15 |
9 |
8 |
=IF([Column1]=15, "OK", "Not OK") |
如果 Column1 中的值等于 15,则返回“OK”。(OK) |
15 |
9 |
8 |
=IF(AND([Column1]>[Column2], [Column1]<[Column3]), "OK", "Not OK") |
如果 15 大于 9 且小于 8,则返回“OK”。(Not OK) |
15 |
9 |
8 |
=IF(OR([Column1]>[Column2], [Column1]<[Column3]), "OK", "Not OK") |
如果 15 大于 9 或小于 8,则返回“OK”。(OK) |
空白或短划线显示为零
若要显示零,需执行简单的计算。若要显示空白或短划线,需使用 IF 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
10 |
10 |
=[Column1]-[Column2] |
第一个数减去第二个数。(0) |
15 |
9 |
=IF([Column1]-[Column2],"-",[Column1]-[Column2]) |
当值为零时返回短划线。(-) |
隐藏列中的错误值
若要显示短划线、#N/A 或 NA 来替换错误值,需使用 ISERROR 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
10 |
0 |
=[Column1]/[Column2] |
导致错误 (#DIV/0) |
10 |
0 |
=IF(ISERROR([Column1]/[Column2]),"NA",[Column1]/[Column2]) |
当值错误时,返回 NA |
10 |
0 |
=IF(ISERROR([Column1]/[Column2]),"-",[Column1]/[Column2]) |
当值错误时,返回短划线 |
日期和时间公式
可以使用下面的公式来执行基于日期和时间的计算,如向日期中添加许多天、月或年,计算两个日期的差,以及将时间转换为十进制值。
添加日期
若要向日期中添加许多天,需使用加法 (+) 运算符。
注意: |
---|
在处理日期时,计算列的返回类型必须设置为日期和时间。 |
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
6/9/2007 |
3 |
=[Column1]+[Column2] |
向 6/9/2007 中添加 3 天 (6/12/2007) |
12/10/2008 |
54 |
=[Column1]+[Column2] |
向 12/10/2008 中添加 54 天 (2/2/2009) |
若要向日期中添加多个月,需使用 DATE、YEAR、MONTH 和 DAY 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
6/9/2007 |
3 |
=DATE(YEAR([Column1]),MONTH([Column1])+[Column2],DAY([Column1])) |
向 6/9/2007 中添加 3 个月 (9/9/2007) |
12/10/2008 |
25 |
=DATE(YEAR([Column1]),MONTH([Column1])+[Column2],DAY([Column1])) |
向 12/10/2008 中添加 25 个月 (1/10/2011) |
若要向日期中添加多年,需使用 DATE、YEAR、MONTH 和 DAY 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
6/9/2007 |
3 |
=DATE(YEAR([Column1])+[Column2],MONTH([Column1]),DAY([Column1])) |
向 6/9/2007 中添加 3 年 (6/9/2010) |
12/10/2008 |
25 |
=DATE(YEAR([Column1])+[Column2],MONTH([Column1]),DAY([Column1])) |
向 12/10/2008 中添加 25 年 (12/10/2033) |
若要向日期中添加天、月和年的组合,需使用 DATE、YEAR、MONTH 和 DAY 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
6/9/2007 |
=DATE(YEAR([Column1])+3,MONTH([Column1])+1,DAY([Column1])+5) |
向 6/9/2007 中添加 3 年、1 个月和 5 天 (7/14/2010) |
12/10/2008 |
=DATE(YEAR([Column1])+1,MONTH([Column1])+7,DAY([Column1])+5) |
向 12/10/2008 中添加 1 年、7 个月和 5 天 (7/15/2010) |
计算两个日期之间的差
可使用 DATEDIF 函数执行此计算。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
01-Jan-1995 |
15-Jun-1999 |
=DATEDIF([Column1], [Column2],"d") |
返回两个日期之间的天数 (1626) |
01-Jan-1995 |
15-Jun-1999 |
=DATEDIF([Column1], [Column2],"ym") |
返回两个日期之间的月数,忽略年部分 (5) |
01-Jan-1995 |
15-Jun-1999 |
=DATEDIF([Column1], [Column2],"yd") |
返回两个日期之间的天数,忽略年部分 (165) |
计算两个时间之间的差
若要以标准时间格式(小时:分钟:秒)来显示结果,需使用减号运算符 (-) 和 TEXT 函数。为使此方法有效,小时数不得超过 24,分钟数和秒数不得超过 60。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
06/09/2007 10:35 AM |
06/09/2007 3:30 PM |
=TEXT([Column2]-[Column1],"h") |
两个时间之间的小时数 (4) |
06/09/2007 10:35 AM |
06/09/2007 3:30 PM |
=TEXT([Column2]-[Column1],"h:mm") |
两个时间之间的小时数和分钟数 (4:55) |
06/09/2007 10:35 AM |
06/09/2007 3:30 PM |
=TEXT([Column2]-[Column1],"h:mm:ss") |
两个时间之间的小时数、分钟数和秒数 (4: 55:00) |
若要表示基于某个时间单位的总结果,需使用 INT 函数,或 HOUR、MINUTE 或 SECOND 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=INT(([Column2]-[Column1])*24) |
两个时间之间的总小时数 (28) |
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=INT(([Column2]-[Column1])*1440) |
两个时间之间的总分钟数 (1735) |
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=INT(([Column2]-[Column1])*86400) |
两个时间之间的总秒数 (104100) |
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=HOUR([Column2]-[Column1]) |
在差不超过 24 时两个时间之间的小时数 (4) |
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=MINUTE([Column2]-[Column1]) |
在差不超过 60 时两个时间之间的分钟数 (55) |
06/09/2007 10:35 AM |
06/10/2007 3:30 PM |
=SECOND([Column2]-[Column1]) |
在差不超过 60 时两个时间之间的秒数 (0) |
转换时间
若要将小时数从标准时间格式转换为十进制数,需使用 INT 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
10:35 AM |
=([Column1]-INT([Column1]))*24 |
自 12:00 AM 开始的小时数 (10.583333) |
12:15 PM |
=([Column1]-INT([Column1]))*24 |
自 12:00 AM 开始的小时数 (12.25) |
若要将小时数从十进制数转换为标准时间格式(小时:分钟:秒),需使用除法运算符和 TEXT 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
23:58 |
=TEXT(Column1/24, "hh:mm:ss") |
自 12:00 AM 开始的小时数、分钟数和秒数 (00:59:55) |
2:06 |
=TEXT(Column1/24, "h:mm") |
自 12:00 AM 开始的小时数和分钟数 (0:05) |
插入 Julian 日期
Julian 日期指的是当前年份与从年初开始的天数相组合的日期格式。例如,2007 年 1 月 1 日表示为 2007001;2007 年 12 月 31 日表示为 2007365。此格式不基于 Julian 日历。
若要将日期转换为 Julian 日期,需使用 TEXT 和 DATEVALUE 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
6/23/2007 |
=TEXT([Column1],"yy")&TEXT(([Column1]-DATEVALUE("1/1/"& TEXT([Column1],"yy"))+1),"000") |
Julian 格式的日期,两位数年份 (07174) |
6/23/2007 |
=TEXT([Column1],"yyyy")&TEXT(([Column1]-DATEVALUE("1/1/"&TEXT([Column1],"yy"))+1),"000") |
Julian 格式的日期,四位数年份 (2007174) |
若要将日期转换为天文学中使用的 Julian 日期,需使用常数 2415018.50。该公式仅适用于 1901 年 3 月 1 之后的日期,并且需使用 1900 日期系统。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
6/23/2007 |
=[Column1]+2415018.50 |
Julian 格式的日期,用于天文学中 (2454274.50) |
日期显示为星期数
若要将日期转换为星期数文本,需使用 TEXT 和 WEEKDAY 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
19-Feb-2007 |
=TEXT(WEEKDAY([Column1]), "dddd") |
计算日期的星期数并返回这一天的全名 (Monday) |
3-Jan-2008 |
=TEXT(WEEKDAY([Column1]), "ddd") |
计算日期的星期数并返回这一天的缩写名 (Thu) |
数学公式
您可以使用下面的公式执行大量的数学计算,比如加减乘除某些数字;计算数字平均值或中间值;舍入数字;以及对值进行计数。
数字相加
若要将某行中两列或多列中的数字相加,需使用加法运算符 (+) 或 SUM 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
6 |
5 |
4 |
=[Column1]+[Column2]+[Column3] |
将前三列中的值相加 (15) |
6 |
5 |
4 |
=SUM([Column1],[Column2],[Column3]) |
将前三列中的值相加 (15) |
6 |
5 |
4 |
=SUM(IF([Column1]>[Column2], [Column1]-[Column2], 10), [Column3]) |
如果 Column1 大于 Column2,则将其差值与 Column3 相加。否则,将 10 与 Column3 相加 (5) |
数字相减
若要将某行中两列或多列中的数字相减,需使用减法运算符 (-) 或具有负数的 SUM 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
15000 |
9000 |
-8000 |
=[Column1]-[Column2] |
15000 减去 9000 (6000) |
15000 |
9000 |
-8000 |
=SUM([Column1], [Column2], [Column3]) |
将前三列中的数字(包括负值)相加 (16000) |
以百分比形式计算两数之间的差
需使用减法 (-) 和除法 (/) 运算符以及 ABS 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
2342 |
2500 |
=([Column2]-[Column1])/ABS([Column1]) |
转换为百分比(6.75% 或 0.06746) |
数字相乘
若要将某行中两列或多列中的数字相乘,需使用乘法运算符 (*) 或 PRODUCT 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
5 |
2 |
=[Column1]*[Column2] |
将前两列中的数字相乘 (10) |
5 |
2 |
=PRODUCT([Column1], [Column2]) |
将前两列中的数字相乘 (10) |
5 |
2 |
=PRODUCT([Column1],[Column2],2) |
将前两列中的数字及数字 2 相乘 (20) |
数字相除
若要将某行中两列或多列中的数字相除,需使用除法运算符 (/)。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
15000 |
12 |
=[Column1]/[Column2] |
15000 除以 12 (1250) |
15000 |
12 |
=([Column1]+10000)/[Column2] |
15000 加 10000 然后用所得总数除以 12 (2083) |
计算数字的平均值
平均值 (average) 也被称为平均值 (mean)。若要计算某行中两列或多列中数字的平均值,需使用 AVERAGE 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
6 |
5 |
4 |
=AVERAGE([Column1], [Column2],[Column3]) |
前三列中数字的平均值 (5) |
6 |
5 |
4 |
=AVERAGE(IF([Column1]>[Column2], [Column1]-[Column2], 10), [Column3]) |
如果 Column1 大于 Column2,则计算其差值与 Column3 的平均值。否则,计算值 10 与 Column3 的平均值(2.5) |
计算数字的中间值
中间值是已排列好顺序的一组数字中间的值。使用 MEDIAN 函数可计算一组数字的中间值。
A | B | C | D | E | F | 公式 | 说明(结果) |
---|---|---|---|---|---|---|---|
10 |
7 |
9 |
27 |
0 |
4 |
=MEDIAN(A, B, C, D, E, F) |
前 6 列中数字的中间值 (8) |
计算某范围内的最小或最大数
若要计算某行中两列或多列中的最小或最大数,需使用 MIN 和 MAX 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
10 |
7 |
9 |
=MIN([Column1], [Column2], [Column3]) |
最小数 (7) |
10 |
7 |
9 |
=MAX([Column1], [Column2], [Column3]) |
最大数 (10) |
对值计数
若要对数字值计数,需使用 COUNT 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
Apple |
12/12/2007 |
=COUNT([Column1], [Column2], [Column3]) |
对包含数字值的各列计数。不包括日期、时间、文本和空值 (0) |
|
$12 |
#DIV/0! |
1.01 |
=COUNT([Column1], [Column2], [Column3]) |
对包含数字值的各列计数,但排除错误和逻辑值 (2) |
按百分比增加或减少数字
使用百分号 (%) 运算符来执行此计算。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
23 |
3% |
=[Column1]*(1+5%) |
将 Column1 中的数字增加 5% (24.15) |
23 |
3% |
=[Column1]*(1+[Column2]) |
按 Column2 中的百分比值 3% 增大 Column1 中的数字:(23.69) |
23 |
3% |
=[Column1]*(1-[Column2]) |
按 Column2 中的百分比值 3% 减小 Column1 中的数字:(22.31) |
幂计算
使用 exponentiation (^) 运算符或 POWER 函数执行此计算。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
5 |
2 |
=[Column1]^[Column2] |
计算 5 的平方 (25) |
5 |
3 |
=POWER([Column1], [Column2]) |
计算 5 的立方 (125) |
舍入数字
若要向上舍入数字,需使用 ROUNDUP、ODD 或 EVEN 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
20.3 |
=ROUNDUP([Column1],0) |
将 20.3 向上舍入为最近的整数 (21) |
-5.9 |
=ROUNDUP([Column1],0) |
将 -5.9 向上舍入为最近的整数 (-5) |
12.5493 |
=ROUNDUP([Column1],2) |
将 12.5493 向上舍入为最近的百位小数,即包含两位小数 (12.55) |
20.3 |
=EVEN([Column1]) |
将 20.3 向上舍入为最近的偶数 (22) |
20.3 |
=ODD([Column1]) |
将 20.3 向上舍入为最近的奇数 (21) |
若要向下舍入数字,需使用 ROUNDDOWN 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
20.3 |
=ROUNDDOWN([Column1],0) |
将 20.3 向下舍入为最近的整数 (20) |
-5.9 |
=ROUNDDOWN([Column1],0) |
将 -5.9 向下舍入为最近的整数 (-6) |
12.5493 |
=ROUNDDOWN([Column1],2) |
将 12.5493 向下舍入为最近的百位小数,即包含两位小数 (12.54) |
若要将数字舍入为最近的数字或分数,需使用 ROUND 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
20.3 |
=ROUND([Column1],0) |
向下舍入 20.3,因为小数部分小于 .5 (20) |
5.9 |
=ROUND([Column1],0) |
向上舍入 5.9,因为小数部分大于 .5 (6) |
-5.9 |
=ROUND([Column1],0) |
向下舍入 -5.9,因为小数部分小于 -.5 (-6) |
1.25 |
=ROUND([Column1], 1) |
将数字舍入为最近的十位小数(包含一位小数)。因为要舍入部分为 0.05 或更大数,所以向上舍入该数字(结果为 1.3) |
30.452 |
=ROUND([Column1], 2) |
将该数字舍入为最近的百位小数(包含两位小数)。因为要舍入部分 0.002 小于 0.005,所以向下舍入该数字(结果为 30.45) |
若要将数字舍入为 0 以上的有效数字,需使用 ROUND、ROUNDUP、ROUNDDOWN、INT 和 LEN 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
5492820 |
=ROUND([Column1],3-LEN(INT([Column1]))) |
将该数字舍入为包含 3 个有效数字 (5490000) |
22230 |
=ROUNDDOWN([Column1],3-LEN(INT([Column1]))) |
将最小数字向下舍入为包含 3 个有效数字 (22200) |
5492820 |
=ROUNDUP([Column1], 5-LEN(INT([Column1]))) |
将最大数字向上舍入为包含 5 个有效数字 (5492900) |
文本公式
可以使用下面的公式处理文本,如合并或串联多个列中的值、比较列的内容、移除字符或空格,以及重复字符。
更改文本的大小写
若要更改文本的大小写,需使用 UPPER、LOWER 或 PROPER 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
nina Vietzen |
=UPPER([Column1]) |
将文本更改为大写 (NINA VIETZEN) |
nina Vietzen |
=LOWER([Column1]) |
将文本更改为小写 (nina vietzen) |
nina Vietzen |
=PROPER([Column1]) |
将文字更改为词首大写 (Nina Vietzen) |
合并名和姓
若要合并名和姓,需使用“and”运算符 (&) 或 CONCATENATE 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
Carlos |
Carvallo |
=[Column1]&[Column2] |
合并这两个字符串 (CarlosCarvallo) |
Carlos |
Carvallo |
=[Column1]&" "&[Column2] |
合并这两个字符串,并用空格分隔它们 (Carlos Carvallo) |
Carlos |
Carvallo |
=[Column2]&", "&[Column1] |
合并这两个字符串,并用逗号和空格分隔它们 (Carvallo, Carlos) |
Carlos |
Carvallo |
=CONCATENATE([Column2], ",", [Column1]) |
合并这两个字符串,并用逗号分隔它们 (Carvallo,Carlos) |
合并不同列中的文本和数字
若要合并文本和数字,需使用 CONCATENATE 函数、“and”运算符 (&) 或 TEXT 函数和“and”运算符。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
Yang |
28 |
=[Column1]&" sold "&[Column2]&" units." |
将上面的内容合并为一个短语 (Yang sold 28 units.) |
Dubois |
40% |
=[Column1]&" sold "&TEXT([Column2],"0%")&" of the total sales." |
将上面的内容合并为一个短语 (Dubois sold 40% of the total sales.) 注意 TEXT 函数会追加 Column2 的格式化值而不是基础值 0.4。 |
Yang |
28 |
=CONCATENATE([Column1]," sold ",[Column2]," units.") |
将上面的内容合并为一个短语 (Yang sold 28 units.) |
将文本与日期或时间合并
若要将文本与日期或时间合并,需使用 TEXT 函数和“and”运算符 (&)。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
Billing Date |
5-Jun-2007 |
="Statement date: "&TEXT([Column2], "d-mmm-yyyy") |
将文本与日期合并 (Statement date: 5-Jun-2007) |
Billing Date |
5-Jun-2007 |
=[Column1]&" "&TEXT([Column2], "mmm-dd-yyyy") |
将不同列中的文本和日期合并为一列 (Billing Date Jun-05-2007) |
比较列的内容
若要将某一列与另一列或列值相比较,需使用 EXACT 和 OR 函数。
Column1 | Column2 | 公式 | 说明(可能的结果) |
---|---|---|---|
BD122 |
BD123 |
=EXACT([Column1],[Column2]) |
比较前两列的内容 (No) |
BD122 |
BD123 |
=EXACT([Column1], "BD122") |
将 Column1 的内容与字符串 "BD122" 相比较 (Yes) |
确定列值或其一部分是否与特定文本匹配
若要确定列值或其一部分是否与特定文本匹配,需使用 IF、FIND、SEARCH 和 ISNUMBER 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
Vietzen |
=IF([Column1]="Vietzen", "OK", "Not OK") |
确定 Column1 是否为 Vietzen (OK) |
Vietzen |
=IF(ISNUMBER(FIND("v",[Column1])), "OK", "Not OK") |
确定 Column1 是否包含字母 v (OK) |
BD123 |
=ISNUMBER(FIND("BD",[Column1])) |
确定 Column1 是否包含 BD (Yes) |
对非空列计数
若要对非空列计数,需使用 COUNTA 函数。
Column1 | Column2 | Column3 | 公式 | 说明(可能的结果) |
---|---|---|---|---|
Sales |
19 |
=COUNTA([Column1], [Column2]) |
计算非空列的数目 (2) |
|
Sales |
19 |
=COUNTA([Column1], [Column2], [Column3]) |
计算非空列的数目 (2) |
从文本中移除字符
若要从文本中移除字符,需使用 LEN、LEFT 和 RIGHT 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
Vitamin A |
=LEFT([Column1],LEN([Column1])-2) |
从左端开始返回 7 (9-2) 个字符 (Vitamin) |
Vitamin B1 |
=RIGHT([Column1], LEN([Column1])-8) |
从右端开始返回 2 (10-8) 个字符 (B1) |
从列的开头和结尾处移除空格
若要从某列中移除空格,需使用 TRIM 函数。
Column1 | 公式 | 说明(可能的结果) |
---|---|---|
Hello there! |
=TRIM([Column1]) |
从开头和结尾处移除空格 (Hello there!) |
重复列中的某个字符
若要重复列中的某个字符,需使用 REPT 函数。
公式 | 说明(可能的结果) |
---|---|
=REPT(".",3) |
重复句点 3 次 (...) |
=REPT("-",10) |
重复短划线 10 次 (----------) |