我想制定一个验证规则,禁止在给定单元格中输入某些字符。例如,如果我的搜索字符集是("/","&","%")
,那么我应该得到以下搜索结果:
"Test, test" = false
"Te/st" = true
"Test...test&"= true
而后两个例子则不应该被允许。
我想我正在寻找类似于 SQL 的 WHERE...IN 语法的东西。我该如何在 Excel 中做到这一点?我知道我只能使用 OR() 或嵌套的 IF() 语句,但我想知道是否有更简洁的东西。
答案1
如果您使用的是 Excel 2007,您可以尝试以下操作:
=IFERROR(FIND("%",A1),0)+IFERROR(FIND("&",A1),0)+IFERROR(FIND("/",A1),0)
如果字符串有效则返回 0,如果无效则返回正数。
如果你使用的是 2003,那么你需要将 IFERROR 更改为 IF(ISERROR)seg
=IF(ISERROR(FIND("%",A1)),0,1)+IF(ISERROR(FIND("&",A1)),0,1)+IF(ISERROR(FIND("/",A1)),0,1)
如果字符串有效,则返回 0,如果无效,则返回 1。
注意:您的逻辑是否定的(即,您使用 TRUE 表示有错误,使用 FALSE 表示无错误),但如果您愿意的话,可以很容易地逆转。
答案2
这是另一个选择
=SUM(COUNTIF(A1,{"*%*","*&*","*/*"}))>0
要从某个范围获取字符列表:
如果要测试的字符串在 A2 中,并且字符列表在 A1:C1 中
=SUM(COUNTIF(A2,"*"&($A$1:$C$1)&"*"))>0
答案3
您可以使用多个 find 调用。测试它是否是数字,然后它是否包含禁用字符。
isnumber(find("/", cell)+find("%", cell)+find("&", cell))
错误的- 检查单元格中是否包含所有字符。我没有测试整个语句,因为我的 excel 有另一种本地化版本,而且我太懒了。也应该是分号。@Rhys Gibsons 的答案是正确的,感谢 @chris neilsen 的提示!