Google 工作表中的 OR 运算符不起作用?

OR Operator in Google Sheets Not Working?

这是我现在正在研究的公式:

=FILTER(Data!A:K, SEARCH("Gretsch", Data!F:F)+SEARCH("Krutz", Data!F:F))

我正在尝试同时引入包含“Gretsch”的行和包含“Krutz”的行。只使用其中一个而不是两者都很好,并使用另一个包含在其结果中的关键字(例如,仅搜索 Gretsch 会显示 10 个左右(在 100 多个产品中)包含“Streamliner”的产品F列,还有Gretsch,所以用这个公式:

=FILTER(Data!A:K, SEARCH("Gretsch", Data!F:F)+SEARCH("Streamliner", Data!F:F))

同时显示了 10 种左右的产品,但我正在寻找一种或另一种产品,那么为什么“+”的作用类似于 AND 运算符?我完全偏离基地了吗?

SEARCH returns 一个数字:一个字符串在另一个字符串中的起始位置。它不像 TRUE 的其他测试那样是一个简单的 1,并且没有您所写的 0 案例(即 FALSE)。另外,如果SEARCH没有找到目标字符串,则returns报错;和一个数字加上一个错误... returns 一个错误(不是 TRUE 因此不会包含在 FILTER 中)。

FILTER 实现 OR 的更好方法:

=FILTER(Data!A:K, REGEXMATCH(LOWER(Data!F:F),"gretsch|krutz"))

竖线符号(“|”)在此上下文中表示 OR,您可以列出任意数量的竖线分隔字符串。请注意,搜索范围包含在 LOWER 中,并且要搜索的术语也是小写的;这确保了您使用 SEARCH.

寻找的与大写无关的搜索

顺便说一句,根据你最近的另一个post,你也可以使用REGEXMATCHNOT,例如:

=FILTER(Data!A:K, REGEXMATCH(LOWER(Data!F:F),"gretsch|krutz"), NOT(REGEXMATCH(LOWER(Data!F:F),"case")))

附加说明:您的 post 被标记为“Excel”和“Google 表格。”我提出的公式 适用于 Google 表格。到目前为止,在大多数情况下,最好在此处标记 post either "Excel" or "Google Sheets" 但不是两者,因为两者之间的差异很大。

尝试:

=QUERY(Data!A:K, "where lower(F) contains 'gretsch' 
                     or lower(F) contains 'krutz'")