我想验证用户是否正确输入了 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 子网是 4 个低于 256 的数字,用句点分隔,后跟斜杠,然后是一两个数字(尽管在我的所有用例中后跟两个数字都是正确的)
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)