所以我在命名程序上有两列,另一列有成本值。这三个程序分别是ABC,A,B和C.我想总结所有包含A的程序的成本。所有包含B的程序。所有包含C. ABC的内容明显包含在所有总和中。问题是,为了获得这些程序,电子表格上有一个过滤器,它总结起来。有人可以帮忙吗?这是我的意思的一个例子:
program cost
A 5.00
B 4.00
ABC 9.00
A 2.00
所以我希望在三个单独的单元格中“与A的总和”= 16.00,“与B的总和”= 13.00,“与C的总和”= 9.00。
答案 0 :(得分:2)
Item | Total A | 16 B | 13 C | 9
假设您的上述范围在A1:B5中,我的第一个公式是以下数组公式:
{=SUM(IF(ISERROR(FIND(B6,$A$1:$A$5)),0,$B$1:$B$5))}
通过输入公式并在按Enter键时按住Ctrl+Shift
键来创建数组公式。在我的解决方案中,我创建了一个区域,我按总数计算并有一个列(在本例中称为Item),表示我在原始A列中看到的字母。
如果您尝试使用VBA输入此内容,则可以使用FormulaArray
属性:
Selection.FormulaArray ="SUM(IF(ISERROR(FIND(B6,$A$1:$A$5)),0,$B$1:$B$5))"
<强>更新强>
将计算限制为仅可见单元格要复杂一些。假设我们在单元格A1:B5中有原始数据。我们还假设我们的测试值从单元格C7开始(与源数据对齐)。我们的总计公式如下:
=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乘以单元格中的给定值。如果给定的单元格不可见或与标准不匹配,则两者中的一个返回零并且它将整个项目清零。