检查文本字符串是否包含 excel 中的特殊字符
Check if a text string contains special characters in excel
如标题所述,我想检查某个文本字符串是否包含任何特殊字符。
目前我已经创建了一个列,其中包含允许的字符(ASCII 范围 32-122)。我想要一个公式 returns 'ok',如果单元格只包含允许的字符,如果单元格包含任何不允许的字符,则 'not ok'。
但是,如果不使用 for 循环,这是否可行? (因此没有 vba)
对 FIND 函数使用 OR,对 IF 函数使用 return
假设您的有效字符列表在 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:$A,0))))<>LEN(B1))&"ok")
向下复制以获得 B2
、B3
等字符串的类似结果
事实上,我们可以在工作表中不使用显式列表,即:
=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")
此致
用你的字符串签入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")
EDIT 如果要检查的字符串可能包含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")
如标题所述,我想检查某个文本字符串是否包含任何特殊字符。
目前我已经创建了一个列,其中包含允许的字符(ASCII 范围 32-122)。我想要一个公式 returns 'ok',如果单元格只包含允许的字符,如果单元格包含任何不允许的字符,则 'not ok'。
但是,如果不使用 for 循环,这是否可行? (因此没有 vba)
对 FIND 函数使用 OR,对 IF 函数使用 return
假设您的有效字符列表在 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:$A,0))))<>LEN(B1))&"ok")
向下复制以获得 B2
、B3
等字符串的类似结果
事实上,我们可以在工作表中不使用显式列表,即:
=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")
此致
用你的字符串签入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")
EDIT 如果要检查的字符串可能包含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")