Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查excel中的文本字符串是否包含特殊字符_Excel_Return_Special Characters - Fatal编程技术网

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

检查excel中的文本字符串是否包含特殊字符,excel,return,special-characters,Excel,Return,Special Characters,正如前面提到的标题,我想检查某个文本字符串是否包含任何特殊字符 目前,我已经创建了一个包含允许字符的列(ASCII范围32-122)。我想要一个公式,如果单元格只包含允许的字符,则返回'ok',如果单元格包含不允许的字符,则返回'not ok' 但是,如果不使用for循环,这是可能的吗?(因此没有vba)使用或使用查找函数并使用IF函数返回使用或使用查找函数并使用IF函数返回假设您的有效字符列表位于A1:A91中,并且您希望执行测试的第一个条目位于B1中,请在C1中输入此公式: =IF(LEN(

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

目前,我已经创建了一个包含允许字符的列(ASCII范围32-122)。我想要一个公式,如果单元格只包含允许的字符,则返回'ok',如果单元格包含不允许的字符,则返回'not ok'


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

使用或使用查找函数并使用IF函数返回使用或使用查找函数并使用IF函数返回假设您的有效字符列表位于
A1:A91
中,并且您希望执行测试的第一个条目位于
B1
中,请在
C1
中输入此公式:

=IF(LEN(B1)=0,”,REPT(“not”),SUMPRODUCT(0+(ISNUMBER)(匹配(MID(B1,ROW)(索引(B:B,1):索引(B:B,LEN(B1))),1),$A$1:$A$91,0)))LEN(B1))和“ok”)

向下复制,为
B2
B3
等中的字符串提供类似的结果

事实上,我们可以在工作表中不使用显式列表,即:

=IF(LEN(B1)=0,”,REPT(“not”),SUMPRODUCT(0+(ABS(77-code)(中间(B1,行(索引(B:B,1):索引(B:B,LEN(B1))),1)))>45)和“ok”)


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

=IF(LEN(B1)=0,”,REPT(“not”),SUMPRODUCT(0+(ISNUMBER)(匹配(MID(B1,ROW)(索引(B:B,1):索引(B:B,LEN(B1))),1),$A$1:$A$91,0)))LEN(B1))和“ok”)

向下复制,为
B2
B3
等中的字符串提供类似的结果

事实上,我们可以在工作表中不使用显式列表,即:

=IF(LEN(B1)=0,”,REPT(“not”),SUMPRODUCT(0+(ABS(77-code)(中间(B1,行(索引(B:B,1):索引(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")

=IF(SUMPRODUCT((code(MID(A1,行(间接)(&LEN(A1))),1))>=32)*(code(MID(A1,行(间接)(&LEN(A1))),1))=32)*(UNICODE(MID(A1,行(间接)(&LEN(A1))),1))使用字符串签入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")

=IF(SUMPRODUCT((code(MID(A1,行(间接的)(&LEN(A1))),1))>=32)*(code(MID(A1,行(间接的)(&LEN(A1))),1))=32)*(UNICODE(MID(A1,行(间接的)(&LEN(1:&LEN(A1))),1))单元格中的以下内容似乎用第二个公式返回
OK
=“aa”&CHAR(10)和“aa”
返回“notok”我用的是Excel 2010.Hmm。我用的是2016。你的第一个公式有效。第二个公式无效。现在出城几天。我会在返回时重新检查。你没有将其作为文本条目,我认为它是正确的。完全一样:一个公式。单元格中的以下内容似乎用你的第二个公式返回
OK
=“aa”&CHAR(10)和“aa”
返回“不正常”我用的是Excel 2010.Hmm。我用的是2016。你的第一个公式有效。第二个没有。现在出城几天。我会在返回时重新检查。你没有把它作为文本输入,我想是吧?正确。完全一样:一个公式。你介意把你的公式分解一下让我理解吗?还有没有办法指出哪个字符是正确的问题?在第二个单元格中,例如(仅产生问题的第一个字符就足够了,甚至仅仅是字符串中的字符数,例如第n个字符。由于这个公式似乎有效,但有时它会生成一个“不确定”,我无法找到问题的来源。@weatus
ROW(间接(…
返回一个数字数组,该数组作为
MID
函数的起始数字。因此,我们返回字符串中的一个字母数组。然后使用
code
函数并测试返回的代码是否在32-132之间。今天上午我没有时间了解您的其他问题,但我怀疑这是可能的不带VBA的ble。使用公式评估工具更深入地检查公式的工作。非常感谢您的澄清。查看公式评估工具帮助很大。但是我仍然有几个问题:1)为什么我不能通过拆分来复制此公式?仅执行行(间接)(…part不返回根据公式求值工具2创建的数组)最后一个part是如何工作的?您正在执行一个sumproduct,其中只有true和/或false语句。@weaths和
行(间接…
将光标放在公式栏中,点击
F9
查看数组。我认为这个解决方案很有效,直到我注意到我需要过滤掉的许多特殊字符都不能被你的函数识别。例如。≥, β、 …都是unicode字符,因此无法识别。因此,此解决方案对我来说不太适用…您是否介意将公式分解以让我了解它?是否有方法指出哪个字符有问题?在第二个单元格中,例如。(仅产生问题的第一个字符就足够了,甚至只需要字符串中的字符数,例如第n个字符。由于此公式似乎有效,但有时它会生成一个“不确定”,我无法找到问题的来源。@weaths
行(间接)(…
返回一个数字数组,该数组作为
MID
函数的起始数字。因此,我们返回字符串中的一个字母数组。然后使用
code
函数并测试返回的代码是否在32-132之间。今天上午我没有时间了解您的其他问题,但我怀疑这是可能的不带VBA的ble。使用公式评估工具更深入地检查公式的工作。非常感谢您的澄清。查看公式评估工具帮助很大。但是我仍然有几个问题:1)为什么我不能通过拆分来复制此公式?仅执行行(间接(。。。