检查文本字符串是否包含excel中的特殊字符

时间:2016-06-07 09:24:24

标签: excel return special-characters

正如已经提到的标题,我想检查某个文本字符串是否包含任何特殊字符。

目前我创建了一个包含允许字符的列(ASCII范围32-122)。如果单元格中只包含允许的字符并且“不正常”,我想要一个返回' ok'的公式。如果单元格包含任何不允许的字符。

但是,如果不使用for循环,这是否可行? (因此没有vba)

3 个答案:

答案 0 :(得分:1)

假设您的有效字符列表位于A1:A91,并且您希望执行测试的第一个条目位于B1,请在C1中输入此公式:

=IF(LEN(B1)=0,"",REPT("not ",SUMPRODUCT(0+(ISNUMBER(MATCH(MID(B1,ROW(INDEX(B:B,1):INDEX(B:B,LEN(B1))),1),$A$1:$A$91,0))))<>LEN(B1))&"ok")

向下复制,为B2B3等字符串提供类似的结果。

事实上,我们可以在工作表中没有使用明确的列表,即:

=IF(LEN(B1)=0,"",REPT("not ",SUMPRODUCT(0+(ABS(77-CODE(MID(B1,ROW(INDEX(B:B,1):INDEX(B:B,LEN(B1))),1)))>45)))&"ok")

此致

答案 1 :(得分:0)

用你的字符串检查A1:

=IF(SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=32)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=132))=LEN(A1),"OK","Not OK")

编辑如果要检查的字符串可能包含Unicode字符,则必须使用UNICODE函数代替CODE函数。我相信这个功能在Excel 2013中可用。

=IF(SUMPRODUCT((UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=32)*(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=132))=LEN(A1),"OK","Not OK")

答案 2 :(得分:-1)

对FIND函数使用OR并使用IF函数返回