Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Sheets Pattern Matching/RegEx for COUNTIF

The documentation for pattern matching for Google Sheets has not been helpful. I've been reading and searching for a while now and can't find this particular issue. Maybe I'm having a hard time finding the correct terms to search for but here is the problem:

I have several numbers (part numbers) that follow this format: ##-####

Categories can be defined by the part numbers, i.e. 50-03## would be one product category, and the remaining 2 digits are specific for a model.

I've been trying to run this:

=countif(E9:E13,"50-03[123][012]*")

(E9:E13 contains the part number formatted as text. If I format it any other way, the values show up screwed up because Google Sheets thinks I'm writing a date or trying to do arithmetic.)

This returns 0 every time, unless I were to change to:

=countif(E9:E13,"50-03*")

So it seems like wildcards work, but pattern matching does not?

like image 358
Martin Avatar asked Nov 09 '16 20:11

Martin


2 Answers

As you identified and Wiktor mentioned COUNTIF only supports wildcards.

There are many ways to do what you want though, to name but 2

=ArrayFormula(SUM(--REGEXMATCH(E9:E13, "50-03[123][012]*")))

=COUNTA(FILTER(E9:E13, REGEXMATCH(E9:E13, "50-03[123][012]*")))
like image 138
Robin Gertenbach Avatar answered Oct 25 '22 16:10

Robin Gertenbach


This is a really big hammer for a problem like yours, but you can use QUERY to do something like this:

=QUERY(E9:E13, "select count(E) where E matches '50-03[123][012]' label count(E) ''")

The label bit is to prevent QUERY from adding an automatic header to the count() column.

The nice thing about this approach is that you can pull in other columns, too. Say that over in column H, you have a number of orders for each part. Then, you can take two cells and show both the count of parts and the sum of orders:

=QUERY(E9:H13, "select count(E), sum(H) where E matches '50-03[123][012]' label count(E) '', sum(H) ''")

I routinely find this question on $searchEngine and fail to notice that I linked another question with a similar problem and other relevant answers.

like image 34
Michael Avatar answered Oct 25 '22 16:10

Michael