我想验证用户是否已正确输入CIDR格式的子网,例如192.0.2.0/24。以下公式正确验证了此数据:
=AND(--LEFT(F6,FIND(".",F6)-1)<256,
--TRIM(MID(SUBSTITUTE(F6,".",REPT(" ",99)),99,99))<256,
--TRIM(MID(SUBSTITUTE(F6,".",REPT(" ",99)),198,99))<256,
--MID(TRIM(MID(SUBSTITUTE(F6,".",REPT(" ",99)),297,99)),1,FIND("/",TRIM(MID(SUBSTITUTE(F6,".",REPT(" ",99)),297,99)))-1)<256,
--MID(F6,FIND("/",F6)+1,2)<33)
然而,它超过了256个字符的限制。有没有更有效的方法在Excel中验证它?
仅供参考,CIDR子网是低于256的4个数字,用句点分隔,然后是斜杠,然后是一个或两个数字(尽管后面跟着两个数字在我的所有用例中都是正确的)
答案 0 :(得分:3)
AND
本身将返回所需的TRUE
或FALSE
,并且不需要IF(
。
使用TRIM
转换为数字时也--
也不需要,因为excel会忽略额外的空格。
我重构了第四篇更简洁。
这只有243个字符:
=AND(--LEFT(F6,FIND(".",F6)-1)<256,--MID(SUBSTITUTE(F6,".",REPT(" ",99)),99,99)<256,--MID(SUBSTITUTE(F6,".",REPT(" ",99)),198,99)<256,--MID(SUBSTITUTE(SUBSTITUTE(F6,".",REPT(" ",99)),"/",REPT(" ",99)),297,99)<256,--MID(F6,FIND("/",F6)+1,2)<33)