Excel 在字段上循环公式

Excel 在字段上循环公式,excel,excel-formula,excel-2010,excel-2007,Excel,Excel Formula,Excel 2010,Excel 2007,我在Excel中有如下数据: | id | categorie | number | | 1 | a | 123 | | 2 | b | 23 | | 3 | c | 65 | | 4 | b | 102 | | 3 | d | 65 | | 4 | e | 102 | | .. | ... | ... | 我正

我在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    | ... |

如何使用公式循环和拆分单元格的值以计算总和?

如果不使用VBA,则无法在Excel中“循环”;然而,“循环”并不是你真正需要的

SUMIFS公式具有以下参数:

=SUMIFS(SUM_Range,CRITERIA1_Range,CRITERIA1,CRITERIA2_Range,CRITERIA2...)
简言之,它添加SUM_范围内的所有项目,其中其他范围内的匹配单元格符合其标准

即:

这将为您提供第C列的总计,其中该行的B列与“a”匹配。假设“a”在单元格D1中,所有其他术语如下。您可以按如下方式重新键入,然后向下拖动:

=SUMIFS(C:C,B:B,D1)

请注意,您的搜索区域中有多个术语-我建议您将这些术语拆分为单独的行;这会让你的生活更轻松。如果需要,请在之后将它们添加到一起。

向表中添加一个新列,用于定义类别的分组方式:

| 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

而不是使用:

SUMIF(范围、标准、[总和范围])

在您的情况下,它将是:

SUMIF(GROUPCOLUMN, "=THATLINEGROUPCELL", NUMBERCOLUMN)

我将调用列(忽略ID)A和B,数据行从2开始,转到第7行。因为我假设你想要一个表格,你可以在引用类别a,b,c的同时向下拖动公式。。。假设这些标签从A10开始(如下所示):

在B10细胞中
=SUMIF($A$2:$A$7),这是公式解决方案

假设您在单元格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
的引用,以匹配源代码列表


您可以将此公式用于单字母类别名称的任意组合,以生成这些类别的总和。

您是要键入报表的第一列?还是希望公式同时生成两列?我将键入报表中所需的类别,例如col 1:a和col 2:bc以及col 3:a;c;每个兴趣ng-我从未见过使用COLUMN(OFFSET…)创建这样的编号结果数组。
SUMIF(GROUPCOLUMN, "=THATLINEGROUPCELL", NUMBERCOLUMN)
=SUM(C2:C7*IFERROR(B2:B7=MID(F2,COLUMN(OFFSET($A$1,,,,LEN(F2))),1),0))