2014-03-12 158 views
0

我试图找到一种在excel中使用sumproduct的方法,但仅限于以特定字符串开头的记录。在excel中使用通配符在产品中使用通配符

基本SUMPRODUCT

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

有没有什么办法,使每个范围取决于搜索条件?因此,比方说,只使用BC中的记录:BC & BD:在BA中具有相应记录的BD:以堆栈开始的BA。我不认为你可以在sumproduct中使用通配符,但是我可以使用另一个函数吗?

谢谢。

回答

2

,你可以做到这一点使用SUMPRODUCT ...诀窍是使用--操作员改变True/False1/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 - 然后你含多处y的值为BC & BD以获得最终结果。


一个注意:

你可以把这个公式更高效/快速地计算(如果你用它在你的表很多,通过更换,例如,BC:BC为包括你想要的最大行数,因此,例如BC:BC变得BC1:BC1000 - 因此不必尝试和计算它在整个列

希望这有助于!

+0

谢谢!这正是我需要的!我只在工作表中使用它一次,所以这完美的作品! – Scott

+0

很高兴工作! - 另外,由于您是新手,请记住将其标记为解决方案。 –

0

对于"begins with stack",您可以使用LEFT函数。

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

,其中5对应于搜索词"stack"

的长度,正如约翰·布斯托斯说,更好地限制你的范围为SUMPRODUCT - 利用整列可能会很慢