2017-01-17 73 views
2

我想驗證用戶是否正確輸入了CIDR格式的子網,例如192.0.2.0/24。以下公式正確驗證了此數據:Excel數據驗證 - 超過256個字符限制的公式

=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,用句點隔開,後跟一個斜線,然後一個或兩個數字(儘管後面兩個數字在我所有的情況是真實的)

+1

你不需要'IF('和'的,TRUE)'部分。 「AND」本身將返回TRUE或FALSE –

+0

是的,我意識到,我發佈後,但仍然沒有讓我接近256個字符。 :-( – fileinster

+0

您是否看到我的答案在下面?它在243 –

回答

3

AND本身將返回所需的TRUEFALSE,並且不需要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) 
+0

備選:'= AND(INDEX( - MID(SUBSTITUTE(SUBSTITUTE(F6,「。」,REPT(「」,99)),「/ ,REPT(「」,99)),{1,99,198,297,396},99)<{256,256,256,256,33},))' – tigeravatar

+0

@tigeravatar我不認爲這會作爲自定義數據驗證工作,因爲它不允許數組常量。但是把它放在幫助欄中,然後使用一個參考文件就可以了。 –

+0

啊,你說的沒錯。 – tigeravatar