在一个字段上循环一个公式

时间:2015-09-21 20:42:50

标签: 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    |
| .. |     ...   |  ...    |

我正在制作一份报告说:

| categories         | Sum |
|     a              | 123 |
|    b;c             | 190 |
| many categories    | ... |

我怎样才能使用公式,循环并拆分单元格的值来计算总和?

4 个答案:

答案 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:B7C2: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数组,但这很容易。