我發現一個關於超級用戶的舊帖子使用者試圖標記 A 列中包含特殊字元的所有行。答案之一包括條件格式解決方案:
=SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<48)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>45))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>57)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>90)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>95))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>122)*1)
此公式檢查每個檔案名稱的每個字符,並確定其 ASCII 代碼是否超出允許的字元值。允許的字元包括(AZ、az、0-9、底線和破折號)。
我的需要是幾乎完全相同,除了我還需要允許逗號,而且我沒有足夠的天賦來弄清楚如何修改程式碼以允許這樣。有人可以幫忙嗎?
答案1
編輯:我已經回去閱讀了原始評論。這個公式應該要有效。
=SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<48)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>45)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>57)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>90)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>95))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>122)*1)
我在上面的公式中添加了這一點:
(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44)
44
是 ASCII 等效項comma
。因此,這一點將照顧comma
.
我看到你改變了你的問題。您能提供一些樣本值嗎A1
?
我不太明白你提供的公式 -ROW(INDIRECT("1:"&LEN(A1)))
永遠是 1;所以我不知道調用它有什麼意義。
只需從其他連結更改此行:
RegEx.Pattern = "[^A-Za-z0-9_-]"
對此:
RegEx.Pattern = "[^A-Za-z0-9_\-,]"