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,你也可以使用REGEXMATCH
和NOT
,例如:
=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'")
这是我现在正在研究的公式:
=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,你也可以使用REGEXMATCH
和NOT
,例如:
=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'")