有没有一种非VBA的方法来检查B列和C列是否包含任何非字母字符?请注意,这里的“非字母”是指不属于字母表(不区分大小写)的任何字符。
B列和C列是名字的列表,其中一些名字由于错误的数据录入而包含符号或数字。我正在尝试找到所有需要修复的名称,因此我需要找到包含任何非字母字符的名称。
有没有一种非VBA的方法来检查B列和C列是否包含任何非字母字符?请注意,这里的“非字母”是指不属于字母表(不区分大小写)的任何字符。
B列和C列是名字的列表,其中一些名字由于错误的数据录入而包含符号或数字。我正在尝试找到所有需要修复的名称,因此我需要找到包含任何非字母字符的名称。
有一个“奇怪”的但简单且通用的答案。
=SUMPRODUCT(SEARCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"abcdefghijklmnopqrstuvwxyz"))
如果单元格 A1 包含任何非字母字符,则此公式返回 #VALUE!
错误;如果单元格 A1 仅包含字母,则返回数字;如果单元格 A1 为空,则返回 #REF!
错误。
您可以将此公式括在 ISNUMBER
或 ISERR
中,以将其转换为 TRUE/FALSE 值。
将 SEARCH
替换为 FIND
可使其区分大小写。使用 FIND
将确保通配符字符“?~*”被视为非字母字符。
您可以在字符串 "abc...xyz"
中放入任何字符。这使得测试字母数字、常见标点等变得容易。
"1:"&LEN(A1)
表示从第一个字母开始一直检查到最后一个字母。将其更改为 "2:"&(LEN(A1)-1)
将不会检查第一个和最后一个字母。
您可以使用26个嵌套的SUBSTITUTE
函数从文本中删除所有字母字符。
如果还剩下任何东西,单元格将包含非字母字符。
感谢@RaGe指出您还需要检查空单元格:
=AND(ISTEXT(A2),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(A2),"a",),"b",),"c",),"d",),"e",),"f",),"g",),"h",),"i",),"j",),"k",),"l",),"m",),"n",),"o",),"p",),"q",),"r",),"s",),"t",),"u",),"v",),"w",),"x",),"y",),"z",) = "")
"abc...xyz"
中加一个空格,即变成" abc...xyz"
。 - Roobie Nuby