我试图找到一种在excel中使用sumproduct的方法,但仅限于以某个字符串开头的记录。
基本的产品
=SUMPRODUCT(BC:BC,BD:BD)/SUM(BC:BC)
有没有办法让每个范围都依赖于搜索条件?所以,让我们说,只使用BC中的记录:BC& BD:在BA中具有相应记录的BD:以Stack开头的BA。我不认为你可以在sumproduct中使用通配符,但还有其他功能吗?
感谢。
答案 0 :(得分:3)
您可以使用sumproduct执行此操作...诀窍是使用--
运算符将True
/ False
更改为1
/ 0
和然后你可以将你的其他列乘以该向量,以便只得到你的语句求值为真的行
试试这个:
=SUMPRODUCT(--(ISNUMBER(FIND("Stack",A:A))),BC:BC,BD:BD)/SUM(BC:BC)
要解释,部分--(ISNUMBER(FIND("Stack",A:A)))
基本上说If the word "Stack" exists in the cell in column A, evaluate to 1, otherwise, evaluate to 0
- 然后您乘以BC
&中的值BD
获得最终结果。
一个注意事项:
您可以使此公式更有效/更快地计算(如果您在工作表中使用它很多,例如,通过替换BC:BC
来包含您想要的最大行数,因此,例如BC:BC
变为BC1:BC1000
- 因此无需尝试为整个列计算它。
希望这会有所帮助!!
答案 1 :(得分:0)
对于"begins with stack"
,您可以使用LEFT
函数,例如
=SUMPRODUCT((LEFT(BA:BA,5)="stack")+0,BC:BC,BD:BD)/SUMIF(BA:BA,"stack*"BC:BC)
其中5对应于搜索词"stack"
正如John Bustos所说,最好限制SUMPRODUCT
的范围 - 使用整列可能会很慢