我在Excel中有这样的数据:
| id | categorie | number |
| 1 | a | 123 |
| 2 | b | 23 |
| 3 | c | 65 |
| 4 | b | 102 |
| 3 | d | 65 |
| 4 | e | 102 |
| .. | ... | ... |
我正在制作一份报告说:
| categories | Sum |
| a | 123 |
| b;c | 190 |
| many categories | ... |
我怎样才能使用公式,循环并拆分单元格的值来计算总和?
答案 0 :(得分:1)
你不能循环使用'在Excel中不使用VBA;然而,循环'并不是你真正需要的。
SUMIFS公式的参数为:
=SUMIFS(SUM_Range,CRITERIA1_Range,CRITERIA1,CRITERIA2_Range,CRITERIA2...)
简而言之,它添加了SUM_Range中的所有项目,其他范围内的匹配单元格与其标准一致。
即:
=SUMIFS(C:C,B:B,"a")
这将为您提供C列的总计,其中该行的B列与" a"匹配。假设" a"在单元格D1中,所有其他术语在下面。您可以按如下方式重新输入,然后向下拖动:
=SUMIFS(C:C,B:B,D1)
请注意,您的搜索区域中有多个术语 - 我建议您将这些术语拆分为单独的行;它会让你的生活更轻松。如果需要,请将它们添加到一起。
答案 1 :(得分:1)
在表格中添加一个新列,用于定义类别的分组方式:
| id | categorie | number | group
| 1 | a | 123 | 1
| 2 | b | 23 | 2
| 3 | c | 65 | 2
| 4 | b | 102 | 3
| 3 | d | 65 | 3
| 4 | e | 102 | 3
| .. | ... | ... | 4
和
| categories | Sum | Group
| a | 123 | 1
| b;c | 190 | 2
| many categories | ... | 3
比使用SUMIF:
SUMIF(范围,标准,[sum_range])
在您的情况下,它将是:
SUMIF(GROUPCOLUMN, "=THATLINEGROUPCELL", NUMBERCOLUMN)
答案 2 :(得分:1)
这是公式解决方案。
假设您输入要在单元格F2中求和的类别。例如,您输入F2:a;b
然后在G2中输入以下公式:
=SUM(C2:C7*IFERROR(B2:B7=MID(F2,COLUMN(OFFSET($A$1,,,,LEN(F2))),1),0))
这是一个数组公式,必须使用 Ctrl + Shift + Enter 确认。
您应该调整对B2:B7
和C2:C7
的引用,以匹配您的来源列表。
您可以将此公式用于任意组合的单字母类别名称,以生成这些类别的总和。
答案 3 :(得分:-1)
我打算调用你的列(忽略ID)A和B,数据行从2开始,然后转到第7行。因为我假设你想要一个表,你可以在引用类别的同时向下拖动公式a,b,c ......让我们说这些标签从A10(下面)开始:
在单元格B10中
=SUMIF($A$2:$A$7,"<="&A10,$B$2:$B$7)
然后用你的标签向下拖动它(显然根据需要改变参考)
对于组合,只需执行sumif()+ sumif()。
我打算建议一个sumproduct数组,但这很容易。