在Excel中,只想求和某些值(不如SUMIF那么容易)?

所以我有两列名为程序和一个成本值。 这三个程序是ABC,A,B和C.我想总结所有含有A的程序的成本。所有包含B的程序和所有包含C. ABC的程序清楚地包含在所有的和中。 问题是,只要得到这些程序,电子表格就会有一个filter,最后会有大量的错误。 有人可以帮忙吗? 这里是我的意思的一个例子:

program cost A 5.00 B 4.00 ABC 9.00 A 2.00 

所以我想要在三个单独的单元格“和A”= 16.00,“和B”= 13.00,“总和C”= 9.00。

 Item | 总
 A |  16
 B |  13
 C |  9

假设你的上面的范围在A1:B5中,我的第一个公式是以下数组公式:

 {=SUM(IF(ISERROR(FIND(B6,$A$1:$A$5)),0,$B$1:$B$5))} 

您可以通过input公式并在Ctrl+Shift Enter时Ctrl+Shift键来创build一个数组公式。 在我的解决scheme中,我创build了一个区域,按总计计算,并有一列(在这种情况下称为Item)表示我在原始A列中看到的字母。

如果您正尝试使用VBAinput,则可以使用FormulaArray属性:

 Selection.FormulaArray ="SUM(IF(ISERROR(FIND(B6,$A$1:$A$5)),0,$B$1:$B$5))" 

更新

限制计算只能看到可见的单元格有点复杂。 假设我们有单元格A1:B5中的原始数据。 我们还假设我们的testing值开始于单元格C7(对应于源数据的对angular线)。 我们的总计公式如下所示:

 =SUMPRODUCT(SUBTOTAL(3,OFFSET($B$1:$B$5,ROW($B$1:$B$5)-ROW($B$1),0,1)), --NOT(ISERROR(FIND(C7,$A$1:$A$5))), $B$1:$B$5) 

以下部分返回单元格的范围

 OFFSET($B$1:$B$5,ROW($B$1:$B$5)-ROW($B$1),0,1) 

这部分为每个可见单元返回1,为不可见单元返回0

 SUBTOTAL(3,OFFSET($B$1:$B$5,ROW($B$1:$B$5)-ROW($B$1),0,1)) 

这部分是我们的标准。 NOT(ISERROR(...将返回TRUE或FALSE。双负号--将该值转换为负整数,然后删除该否定。

 --NOT(ISERROR(FIND(C7,$A$1:$A$5))) 

最后, SUMPRODUCT函数将匹配数组相互相乘并执行总和。 前两个数组返回一系列的0或1。 如果这行是可见的并且符合我们的标准,那么我们得到1 * 1乘以单元中给定的值。 如果给定的单元格不可见或不符合条件,则两者中的一个返回零,并将整个项目清零。