我正在尝试使用以下公式验证SharePoint 2010中的IP地址列。我收到一个错误,告诉我语法错误没有任何细节。知道它适用于Excel;知道这个公式有什么问题吗?
=AND((LEN(Address)-LEN(SUBSTITUTE(Address;".";"")))=3;ISNUMBER(SUBSTITUTE(SUBSTITUTE(Address;":";"");".";"")+0))
答案 0 :(得分:2)
这是SharePoint 2013 Online的工作公式,其中IP是包含IP地址的列的名称。请注意,如果使用长列名称可以达到验证公式的字符限制,则有40个对列名称的引用(我最初使用IP地址,这长度超过320个字符,这也是我使用FIND而不是SEARCH的原因)< / p>
=IF(AND(AND(VALUE(LEFT([IP],FIND(".",[IP])))>=0,VALUE(LEFT([IP],FIND(".",[IP])))<256),AND(VALUE(MID([IP],FIND(".",[IP])+1,FIND(".",[IP],FIND(".",[IP])+1)-FIND(".",[IP])))>=0,VALUE(MID([IP],FIND(".",[IP])+1,FIND(".",[IP],FIND(".",[IP])+1)-FIND(".",[IP])))<256),AND(VALUE(MID([IP],FIND(".",[IP],FIND(".",[IP])+1)+1,FIND(".",[IP],FIND(".",[IP],FIND(".",[IP])+1)+1)-FIND(".",[IP],FIND(".",[IP])+1)))>=0,VALUE(MID([IP],FIND(".",[IP],FIND(".",[IP])+1)+1,FIND(".",[IP],FIND(".",[IP],FIND(".",[IP])+1)+1)-FIND(".",[IP],FIND(".",[IP])+1)))<256),AND(VALUE(RIGHT([IP],LEN([IP])-FIND(".",[IP],FIND(".",[IP],FIND(".",[IP])+1)+1)))>=0,VALUE(RIGHT([IP],LEN([IP])-FIND(".",[IP],FIND(".",[IP],FIND(".",[IP])+1)+1)))<256)),TRUE,FALSE)
答案 1 :(得分:0)
答案在于,通过公式对 SharePoint 字段验证存在多个限制。虽然它使用与Excel相同的语法,但它远不像 Excel 那样通用。 Here是一个很好的隐藏参考,列出了可用于字段验证的函数。
上一个问题中的问题是SUBSTITUTE()
和ISNUMBER()
不可用。
验证IP地址的正确方法是使用FIND()
和MID()
的组合。
答案 2 :(得分:0)
ISNUMBER功能有效,甚至在您的链接中提及:
要检查列值或其中的一部分是否与特定文本匹配,请使用IF,FIND,SEARCH和ISNUMBER函数。
我确实需要在我的列名here之后添加System.setProperty("dexmaker.dexcache", getContext().getCacheDir().getPath());
。
修改强> 经过进一步测试后,我发现这个解决方案允许带有空格的条目,因此它并不理想。