在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乘以单元中给定的值。 如果给定的单元格不可见或不符合条件,则两者中的一个返回零,并将整个项目清零。