This is the formula I am working on right now:
=FILTER(Data!A:K, SEARCH("Gretsch", Data!F:F)+SEARCH("Krutz", Data!F:F))
I'm trying to bring in both rows that include "Gretsch" and rows that include "Krutz". Just using one of those instead of both works just fine, and using keywords that the other has included in it's results (for example, searching just Gretsch brings up 10 or so (out of the 100+) products that include "Streamliner" in the F Column, as well as Gretsch, so using this formula:
=FILTER(Data!A:K, SEARCH("Gretsch", Data!F:F)+SEARCH("Streamliner", Data!F:F))
brings up the 10 or so products with both, but I'm looking for one OR the other, so why is that '+' acting like an AND operator instead? Am I just completely off base?
SEARCH
returns a number: the starting position where a string is found within another string. It's not a simple 1
like other tests for TRUE
, and there is no 0
case (i.e., FALSE
) as you have it written. In addition, if either SEARCH
does not find the target string, it returns an error; and a number plus an error... returns an error (which is not TRUE
and therefore will not be included in the FILTER
).
A better approach to achieving OR
with FILTER
:
=FILTER(Data!A:K, REGEXMATCH(LOWER(Data!F:F),"gretsch|krutz"))
The pipe symbol ("|") means OR
in this context, and you may list as many pipe-separated strings as you like. Notice that the search range is wrapped in LOWER
and that the terms to search are also lowercase; this assures the same kind of caps-agnostic search you were looking for with SEARCH
.
By the way, based on your other recent post, you can also use REGEXMATCH
with NOT
, e.g.:
=FILTER(Data!A:K, REGEXMATCH(LOWER(Data!F:F),"gretsch|krutz"), NOT(REGEXMATCH(LOWER(Data!F:F),"case")))
One additional note: Your post is tagged "Excel" and "Google Sheets." The formulas I've proposed will only work with Google Sheets. In most cases by far, it is best to tag a post here with either "Excel" or "Google Sheets" but not both, since the differences are substantial between the two.