如何给栏添加验证公式
创建栏界面第二栏就可以给该栏添加验证公式:
几个常用的验证公式(函数)
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)
学习函数和公式时,下列词汇很有帮助:
结构 函数的结构以等号 (=) 开始,后跟函数名、左括号、以逗号分隔的函数参数,以右括号结束。
函数名称 列表或库支持的函数的名称。每个函数都引用特定个数的参数,并对这些参数进行处理,然后返回一个值。
参数</