Scott
Scott

Reputation: 21

Using a wildcard in a sumproduct in excel

I'm trying to find a way to use sumproduct in excel but for only the records that begin with a certain character string.

Basic sumproduct

=SUMPRODUCT(BC:BC,BD:BD)/SUM(BC:BC)

Is there any way to make each range dependent upon a search criteria? So let's say, only use records in BC:BC & BD:BD that have a corresponding record in BA:BA that begins with Stack. I don't think you can use wildcards in sumproduct but is there another function I could be using?

Thanks.

Upvotes: 2

Views: 13997

Answers (2)

barry houdini
barry houdini

Reputation: 46401

For "begins with stack" specifically you can use LEFT function, e.g.

=SUMPRODUCT((LEFT(BA:BA,5)="stack")+0,BC:BC,BD:BD)/SUMIF(BA:BA,"stack*"BC:BC)

where 5 corresponds to the length of the search term "stack"

As John Bustos says, better to restrict your ranges for SUMPRODUCT - using the whole column may be slow

Upvotes: 0

John Bustos
John Bustos

Reputation: 19574

You CAN do this using sumproduct... The trick is to use the -- operator to change True / False to 1 / 0 and then you can multiply your other columns by that vector so as to get only the rows where your statement evaluates to true

Try this:

=SUMPRODUCT(--(ISNUMBER(FIND("Stack",A:A))),BC:BC,BD:BD)/SUM(BC:BC)

To explain, the part --(ISNUMBER(FIND("Stack",A:A))) basically says If the word "Stack" exists in the cell in column A, evaluate to 1, otherwise, evaluate to 0 - Then you multiply by the values in BC & BD to get your final result.


One note:

You could make this formula more efficient / faster to calculate (if you're using it A LOT in your sheet, by replacing, for example, BC:BC to include the maximum number of rows you want, so, for example BC:BC becomes BC1:BC1000 - Therefore not having to try and calculate it for the entire column.

Hope this helps!!

Upvotes: 6

Related Questions