如何给栏添加验证公式
创建栏界面第二栏就可以给该栏添加验证公式:
几个常用的验证公式(函数)
Len()
说明:返回字段值的长度
用法:
验证是“填写周期”这个字段的值长度是16的话返回“是”,验证通过,否则返回“否”,验证不通过,显示错误提示。
MID()
说明:取字段值字符串的某一个字符
用法:
验证“填写周期”这个字段值的第一个字符是不是为“2”,验证通过,否则返回“否”,验证不通过,显示错误提示。
code()
说明:取字符的ASCII值
用法:
上段公式,可以=((A+B)=2),A的值为(CODE(MID(填写周期,15,1))>47),B的值为(CODE(MID(填写周期,15,1))<58),
(CODE(MID(填写周期,15,1))>47) 解释为:先用MID()函数取“填写周期”字段值字符串的第15个字符,再用CODE()函数取上一步得到的字符的ASCII值,如果大于47则返回1,否则 返回 0. 通过MID()和CODE()的配合,可以把字符转成ASCII码,这样可以进行大小比较,这48~57是数字0~9的ASCII码。
综合后,上段公式用于验证该字段值第15位必需是一个数字。
更多公式可以查看微软官方网站:http://office.microsoft.com/en-us/sharepoint-foundation-help/CH010372694.aspx
逻辑条件
And 运算
很遗憾这个公式表达式中我们不能写and 或者 or的表达式,但是这个不是问题,其实上面的示例已经给了一个and条件的例子。
如果我们要用and逻辑表达式,我们可以通过“+”运算,判断最后的值即可。
例如:
判断一个电话号码:
=(LEN([Phone])=12) +(CODE(MID([Phone],1,1))>47) +(CODE(MID([Phone],1,1))<58) +(CODE(MID([Phone],2,1))>47) +(CODE(MID([Phone],2,1))<58) +(CODE(MID([Phone],3,1))>47) +(CODE(MID([Phone],3,1))<58) +(MID([Phone],4,1)="-") +(CODE(MID([Phone],5,1))>47) +(CODE(MID([Phone],5,1))<58) +(CODE(MID([Phone],6,1))>47) +(CODE(MID([Phone],6,1))<58) +(CODE(MID([Phone],7,1))>47) +(CODE(MID([Phone],7,1))<58) +(MID([Phone],8,1)="-") +(CODE(MID([Phone],9,1))>47) +(CODE(MID([Phone],9,1))<58) +(CODE(MID([Phone],10,1))>47) +(CODE(MID([Phone],10,1))<58) +(CODE(MID([Phone],11,1))>47) +(CODE(MID([Phone],11,1))<58) +(CODE(MID([Phone],12,1))>47) +(CODE(MID([Phone],12,1))<58) =23
OR 运算
比如想验证“血型”字段值只能是“A”、“B”或者“O”时,可以用下面的方法:
=(LEN([BLOODTYPE])=1) +(MID([Phone],1,1)="A") +(MID([Phone],1,1)="B") +(MID([Phone],1,1)="O") =2
另外可能还会碰到其它OR逻辑的可能,比如,我们的MOSS平台上有一个列表记录员工的周月报,其中“填写周期”一栏根据填写目的不同,要求使用两种格式,一种是周报格式要求用YYYY.MM.DD-MM.DD格式,另外一种是月报格式,要求使用YYYY.MM格式。以方便最终做统计视图。
我们可以用"IF"逻辑运算进行处理:
=IF( LEN(填写周期)=16 ,( (MID(填写周期,1,1)="2") +(MID(填写周期,2,1)="0") +(MID(填写周期,3,1)="1") +(MID(填写周期,5,1)=".") +(MID(填写周期,8,1)=".") +(MID(填写周期,11,1)="-") +(MID(填写周期,14,1)=".") =7) ,(IF( LEN(填写周期)=7 ,((MID(填写周期,1,1)="2") +(MID(填写周期,2,1)="0") +(MID(填写周期,3,1)="1") +(MID(填写周期,5,1)=".") =4) ,FALSE )) )
这里,我们只验证了字符长度和年度前三位,当然也可以做到完全验证,如下:
=OR( ( IF(ISERROR( ((LEN([填写周期])=16) +(CODE(MID([填写周期],1,1))>47) +(CODE(MID([填写周期],1,1))<58) +(CODE(MID([填写周期],2,1))>47) +(CODE(MID([填写周期],2,1))<58) +(CODE(MID([填写周期],3,1))>47) +(CODE(MID([填写周期],3,1))<58) +(CODE(MID([填写周期],4,1))>47) +(CODE(MID([填写周期],4,1))<58) +(MID([填写周期],5,1)=".") +(CODE(MID([填写周期],6,1))>47) +(CODE(MID([填写周期],6,1))<58) +(CODE(MID([填写周期],7,1))>47) +(CODE(MID([填写周期],7,1))<58) +(MID([填写周期],8,1)=".") +(CODE(MID([填写周期],9,1))>47) +(CODE(MID([填写周期],9,1))<58) +(CODE(MID([填写周期],10,1))>47) +(CODE(MID([填写周期],10,1))<58) +(MID([填写周期],11,1)="-") +(CODE(MID([填写周期],12,1))>47) +(CODE(MID([填写周期],12,1))<58) +(CODE(MID([填写周期],13,1))>47) +(CODE(MID([填写周期],13,1))<58) +(MID([填写周期],14,1)=".") +(CODE(MID([填写周期],15,1))>47) +(CODE(MID([填写周期],15,1))<58) +(CODE(MID([填写周期],16,1))>47) +(CODE(MID([填写周期],16,1))<58) =29) ) ,FALSE ,IF( ((LEN([填写周期])=16) +(CODE(MID([填写周期],1,1))>47) +(CODE(MID([填写周期],1,1))<58) +(CODE(MID([填写周期],2,1))>47) +(CODE(MID([填写周期],2,1))<58) +(CODE(MID([填写周期],3,1))>47) +(CODE(MID([填写周期],3,1))<58) +(CODE(MID([填写周期],4,1))>47) +(CODE(MID([填写周期],4,1))<58) +(MID([填写周期],5,1)=".") +(CODE(MID([填写周期],6,1))>47) +(CODE(MID([填写周期],6,1))<58) +(CODE(MID([填写周期],7,1))>47) +(CODE(MID([填写周期],7,1))<58) +(MID([填写周期],8,1)=".") +(CODE(MID([填写周期],9,1))>47) +(CODE(MID([填写周期],9,1))<58) +(CODE(MID([填写周期],10,1))>47) +(CODE(MID([填写周期],10,1))<58) +(MID([填写周期],11,1)="-") +(CODE(MID([填写周期],12,1))>47) +(CODE(MID([填写周期],12,1))<58) +(CODE(MID([填写周期],13,1))>47) +(CODE(MID([填写周期],13,1))<58) +(MID([填写周期],14,1)=".") +(CODE(MID([填写周期],15,1))>47) +(CODE(MID([填写周期],15,1))<58) +(CODE(MID([填写周期],16,1))>47) +(CODE(MID([填写周期],16,1))<58) =29) ,TRUE ,FALSE ) )) ,(IF(ISERROR( ((LEN([填写周期])=7) +(CODE(MID([填写周期],1,1))>47) +(CODE(MID([填写周期],1,1))<58) +(CODE(MID([填写周期],2,1))>47) +(CODE(MID([填写周期],2,1))<58) +(CODE(MID([填写周期],3,1))>47) +(CODE(MID([填写周期],3,1))<58) +(CODE(MID([填写周期],4,1))>47) +(CODE(MID([填写周期],4,1))<58) +(MID([填写周期],5,1)=".") +(CODE(MID([填写周期],6,1))>47) +(CODE(MID([填写周期],6,1))<58) +(CODE(MID([填写周期],7,1))>47) +(CODE(MID([填写周期],7,1))<58) =14) ) ,FALSE ,IF( ((LEN([填写周期])=7) +(CODE(MID([填写周期],1,1))>47) +(CODE(MID([填写周期],1,1))<58) +(CODE(MID([填写周期],2,1))>47) +(CODE(MID([填写周期],2,1))<58) +(CODE(MID([填写周期],3,1))>47) +(CODE(MID([填写周期],3,1))<58) +(CODE(MID([填写周期],4,1))>47) +(CODE(MID([填写周期],4,1))<58) +(MID([填写周期],5,1)=".") +(CODE(MID([填写周期],6,1))>47) +(CODE(MID([填写周期],6,1))<58) +(CODE(MID([填写周期],7,1))>47) +(CODE(MID([填写周期],7,1))<58) =14) ,TRUE ,FALSE )) ) )
但是有个不幸的消息,SharePoint的验证填只支持1024个字符,所以,我用了第一种。
其它
附一
一个老外写的用于验证Email地址的公式:
=(LEN(LEFT([Email],FIND("@",[Email])-1))>0) +(LEN(RIGHT([Email],LEN([Email])-FIND(".",[Email],FIND("@",[Email]))))>0) +(LEN(MID([Email],FIND("@",[Email])+1,FIND(".",[Email],FIND("@",[Email]))-FIND("@",[Email])-1))>0) +(ISERROR(FIND(" ",[Email]))=TRUE) =4
附二
微软网站上的相关帮助,方便以后查找,直接附在这里了。
公式概述
公式是对列表或库中的值进行计算的等式。公式以等号 (=) 开头。例如,在下面的公式中,结果等于 2 乘以 3 再加 5。
=5+2*3
可以在计算列中使用公式,也可以使用公式计算某一列的默认值。公式中可以包含函数、列引用、运算符和常量,如下例所示。
=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])
常见公式示例
条件公式
可以使用下面的公式测试语句的条件并返回值“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]) | 值为错误时返回一条短划线 |
日期和时间公式
可以使用下面的公式执行基于日期和时间的计算,例如向某个日期添加若干天、若干月或若干年,计算两个日期之间的差值,以及将时间转换为小数值。
计算值获取当前日期
=DATE(YEAR(创建时间),MONTH(创建时间),DAY(创建时间))
添加日期
要向某个日期添加若干天,请使用加法运算符 (+)。
注释 对日期进行操作时,计算栏的返回类型必须设置为“日期和时间”。
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) |
插入儒略历日期
儒略历日期指的是一种日期格式,是当前年份和从当年年初算起的天数的组合。例如,2007 年 1 月 1 日表示为 2007001,而 2007 年 12 月 31 日则表示为 2007365。此格式并不基于儒略历。
要将日期转换为儒略历日期,请使用 TEXT 和 DATEVALUE 函数。
COLUMN1 | 公式 | 说明(结果) |
---|---|---|
6/23/2007 | =TEXT([Column1],"yy")&TEXT(([Column1]-DATEVALUE("1/1/"& TEXT([Column1],"yy"))+1),"000") | 采用儒略历格式的日期,年份用两位数字表示 (07174) |
6/23/2007 | =TEXT([Column1],"yyyy")&TEXT(([Column1]-DATEVALUE("1/1/"&TEXT([Column1],"yy"))+1),"000") | 采用儒略历格式的日期,年份用四位数字表示 (2007174) |
要将日期转换为在天文学中使用的儒略历日期,请使用常量 2415018.50。如果使用 1900 日期系统,则此公式只对 1901 年 3 月 1 日之后的日期起作用。
COLUMN1 | 公式 | 说明(结果) |
---|---|---|
6/23/2007 | =[Column1]+2415018.50 | 在天文学中使用的儒略历格式的日期 (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 函数。
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) | 前六个栏中的数字的中值 (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 | 公式 | 说明(结果) |
---|---|---|---|---|
苹果树 | 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]) | 将 Column1 中的数字增加 Column2 中的百分数值:3% (23.69) |
23 | 3% | =[Column1]*(1-[Column2]) | 将 Column1 中的数字减少 Column2 中的百分数值:3% (22.31) |
使用乘幂运算符 (^) 或 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) |
要将名字和姓氏进行组合,请使用“与”运算符 (&) 或 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 函数、“与”运算符 (&) 或 TEXT 函数和“与”运算符。
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 的带格式的值而不是基础值 .4。 |
Yang | 28 | =CONCATENATE([Column1]," sold ",[Column2]," units.") | 将上面的内容组合成一个短语 (Yang sold 28 units.) |
要将文本与日期或时间进行组合,请使用 TEXT 函数和“与”运算符 (&)。
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 | 公式 | 说明(结果) |
---|---|---|---|---|
销售额 | 19 | =COUNTA([Column1], [Column2]) | 计算非空栏的数目 (2) | |
销售额 | 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 次 (----------) |