Check if a text string contains special characters in excel

时光怂恿深爱的人放手 提交于 2019-12-12 03:21:42

问题


As the title already mentioned, I want to check if a certain text string contains any special characters.

Currently I have created a column with the characters which are allowed (ASCII range 32-122). And I would like a formula which returns 'ok', if the cell only contains characters which are allowed and 'not ok' if the cell contains any character that is not allowed.

However, Is this even possible without using a for loop? (thus without vba)


回答1:


Assuming that your list of valid characters is in A1:A91 and that the first entry for which you wish to perform the test is in B1, enter this formula in 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")

Copy down to give similar results for strings in B2, B3, etc.

We can in fact do without the use of an explicit list within the worksheet, viz:

=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")

Regards




回答2:


With your string to check in 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 If the character strings to be checked might include Unicode characters, then you must use the UNICODE function in place of the CODE function. I believe this function became available in 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")



回答3:


Use OR with FIND function and return with IF function



来源:https://stackoverflow.com/questions/37675402/check-if-a-text-string-contains-special-characters-in-excel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!