随笔- 196  评论- 84  文章- 0 

计算字段公式(Microsoft.SharePoint.SPFieldCalculated 类)

计算字段公式

 
 
计算字段公式

下表提供有关您可以通过使用 Microsoft.SharePoint.SPFieldCalculated 类的 Formula 在计算字段中实现的多种公式的信息。

条件公式

您可以使用下面的公式测试语句的条件并返回 Yes 或 No 值、测试备用值(如 OK 或 Not OK),或返回空白或短划线来表示空值。

确定某数是大于还是小于另一个数

使用 IF 函数执行此比较。

 
Column1Column2公式说明(可能的结果)

15000

9000

=[Column1]>[Column2]

Column1 是否大于 Column2?(Yes)

15000

9000

=IF([Column1]<=[Column2], "OK", "Not OK")

Column1 是否小于或等于 Column2?(Not OK)

比较列内容后返回一个逻辑值

对于本身是逻辑值的结果(Yes 或 No),使用 AND、OR 和 NOT 函数。

 
Column1Column2Column3公式说明(可能的结果)

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 函数。

 
Column1Column2Column3公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

10

10

=[Column1]-[Column2]

第一个数减去第二个数。(0)

15

9

=IF([Column1]-[Column2],"-",[Column1]-[Column2])

当值为零时返回短划线。(-)

隐藏列中的错误值

若要显示短划线、#N/A 或 NA 来替换错误值,需使用 ISERROR 函数。

 
Column1Column2公式说明(可能的结果)

10

0

=[Column1]/[Column2]

导致错误 (#DIV/0)

10

0

=IF(ISERROR([Column1]/[Column2]),"NA",[Column1]/[Column2])

当值错误时,返回 NA

10

0

=IF(ISERROR([Column1]/[Column2]),"-",[Column1]/[Column2])

当值错误时,返回短划线

日期和时间公式

可以使用下面的公式来执行基于日期和时间的计算,如向日期中添加许多天、月或年,计算两个日期的差,以及将时间转换为十进制值。

添加日期

若要向日期中添加许多天,需使用加法 (+) 运算符。

注释 注意:

在处理日期时,计算列的返回类型必须设置为日期和时间。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

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 函数执行此计算。

 
Column1Column2公式说明(可能的结果)

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。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2Column3公式说明(可能的结果)

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 函数。

 
Column1Column2Column3公式说明(可能的结果)

15000

9000

-8000

=[Column1]-[Column2]

15000 减去 9000 (6000)

15000

9000

-8000

=SUM([Column1], [Column2], [Column3])

将前三列中的数字(包括负值)相加 (16000)

以百分比形式计算两数之间的差

需使用减法 (-) 和除法 (/) 运算符以及 ABS 函数。

 
Column1Column2公式说明(可能的结果)

2342

2500

=([Column2]-[Column1])/ABS([Column1])

转换为百分比(6.75% 或 0.06746)

数字相乘

若要将某行中两列或多列中的数字相乘,需使用乘法运算符 (*) 或 PRODUCT 函数。

 
Column1Column2公式说明(可能的结果)

5

2

=[Column1]*[Column2]

将前两列中的数字相乘 (10)

5

2

=PRODUCT([Column1], [Column2])

将前两列中的数字相乘 (10)

5

2

=PRODUCT([Column1],[Column2],2)

将前两列中的数字及数字 2 相乘 (20)

数字相除

若要将某行中两列或多列中的数字相除,需使用除法运算符 (/)。

 
Column1Column2公式说明(可能的结果)

15000

12

=[Column1]/[Column2]

15000 除以 12 (1250)

15000

12

=([Column1]+10000)/[Column2]

15000 加 10000 然后用所得总数除以 12 (2083)

计算数字的平均值

平均值 (average) 也被称为平均值 (mean)。若要计算某行中两列或多列中数字的平均值,需使用 AVERAGE 函数。

 
Column1Column2Column3公式说明(可能的结果)

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 函数可计算一组数字的中间值。

 
ABCDEF公式说明(结果)

10

7

9

27

0

4

=MEDIAN(A, B, C, D, E, F)

前 6 列中数字的中间值 (8)

计算某范围内的最小或最大数

若要计算某行中两列或多列中的最小或最大数,需使用 MIN 和 MAX 函数。

 
Column1Column2Column3公式说明(可能的结果)

10

7

9

=MIN([Column1], [Column2], [Column3])

最小数 (7)

10

7

9

=MAX([Column1], [Column2], [Column3])

最大数 (10)

对值计数

若要对数字值计数,需使用 COUNT 函数。

 
Column1Column2Column3公式说明(可能的结果)

Apple

 

12/12/2007

=COUNT([Column1], [Column2], [Column3])

对包含数字值的各列计数。不包括日期、时间、文本和空值 (0)

$12

#DIV/0!

1.01

=COUNT([Column1], [Column2], [Column3])

对包含数字值的各列计数,但排除错误和逻辑值 (2)

按百分比增加或减少数字

使用百分号 (%) 运算符来执行此计算。

 
Column1Column2公式说明(可能的结果)

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 函数执行此计算。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

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”运算符。

 
Column1Column2公式说明(可能的结果)

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”运算符 (&)。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2公式说明(可能的结果)

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 函数。

 
Column1Column2Column3公式说明(可能的结果)

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 次 (----------)

 

另请参阅

参考

 
=CONCATENATE(YEAR([Start Date Of Week]),"W",INT(([Start Date Of Week]-DATE(YEAR([Start Date Of Week]),1,1)+WEEKDAY(DATE(YEAR([Start Date Of Week]),1,1),3))/7)+1)
posted on 2009-11-03 12:08 欣静赏悦 阅读(...) 评论(...) 编辑 收藏