根据条件或同一张纸上的SUMIFS得出同一张纸上的SUM列

时间:2020-06-19 16:01:25

标签: excel excel-formula

这是一个小样本表

+--------+-------+--------+
| COL 1  | COL 2 | COL 3  |
+--------+-------+--------+
| abc123 | Total |        |
+--------+-------+--------+
| abc123 | cat1  | 100.00 |
+--------+-------+--------+
| abc123 | cat2  | 200.00 |
+--------+-------+--------+
| def123 | Total |        |
+--------+-------+--------+
| def123 | cat1  | 100.00 |
+--------+-------+--------+
| def123 | cat2  | 200.00 |
+--------+-------+--------+

在COL 3中,如果COL 2为“总计”,我需要对COL1中每行相同的COL 3中的所有内容求和。 (例如,COL3的总行应为abc123为300.00,对于def123为300.00)否则,如果COL 2不是“总计”,则需要执行SUMIFS('Sheet3'!N:N,'Sheet3'!A:A,Sheet2!A473,'Sheet3'!Q:Q,Sheet2!Q473)*Sheet4!$U$2)

我该如何完成SUM的第一部分?

编辑:

我认为我的示例过于刻板,看起来像是固定的。

让我看看我能否用更流畅的方式进行解释。我将不得不用数据库术语来描述一下。出于“总计”部分的目的,所有列都在一张纸上。

COL 1是我的分区。 COL 1中的每个“ ID”由57行组成。在这57行中的1行中,另一列为“总计”,在本示例中为COL 2。

所以我有一个大表,在COL 1中有5个不同的ID,每个ID有57行,导致285行。

现在,我拥有一个排序功能,该功能可能会使整个过程变得更容易,但是该功能使excel崩溃了,并且没有对两个必需的排序都进行排序(https://techcommunity.microsoft.com/t5/excel/sort-function-causes-a-crash-and-does-not-perform-secondary-sort/m-p/1477123#M66205

我想如果我能获得排序功能以防止崩溃,excel会变得稍微容易些,因为“ Total”将始终放置在第2、58、116行中,并且我可以将其下的所有内容加起来。现在,由于这种排序不起作用,我必须将COL 3中未分配给COL 2中的“总计”并且在COL1中具有相同ID的所有内容相加。

因此在上面的表abc123中有3行,我需要将abc123的两行加起来不是总计,并让公式将300吐出到COL 3中。

然后def123需要相同的处理。

这是最困难的部分:排序不一致,因为数据来自Redshift查询,因此每个ID的数据都是随机的。 ID本身是随机的。我认为我可以在不使Excel崩溃的情况下使COL 1正常工作,但是具有自定义订单的辅助排序使它崩溃。

1 个答案:

答案 0 :(得分:1)

在尝试对一列求和时,避免循环引用错误的一种方法是使用两个求和,一个在上方,一个在下方。

因此,假设您的第1列,第2列和第3列分别是A,B和C,并且数据从第2行开始(行1为标题),则需要单元格总和上方当前行:

SUMIFS(C$1:C1, A$1:A1, A2)

加上当前行以下 单元格的总和:

SUMIFS(C3:INDEX(C:C, 1+COUNTA(A:A)), A3:INDEX(A:A, 1+COUNTA(A:A)), A2)

(请注意,这实际上会终止数据集上方 的一行)

将其与IF语句一起放置:

=IF(B2="Total", SUMIFS(C$1:C1, A$1:A1, A2) + SUMIFS(C3:INDEX(C:C, 1+COUNTA(A:A)), A3:INDEX(A:A, 1+COUNTA(A:A)), A2), EXISTING_FORMULA_HERE)

或者,您可以尝试编写一个数组公式来直接计算SUM,有点像在MATCH中使用多个条件时,如下所示:(问题中没有足够的信息要做完全是这样

=SUMPRODUCT('Sheet3'!N:N*(COUNTIFS(A:A,'Sheet3'!$A:A)>0)*(COUNTIFS(B:B,'Sheet3'!$Q:Q)>0))

(当当前工作表中存在与A列中的Sheet3!N:N列和B列中的Sheet3!A:A列匹配的行时,Sheet3!Q:Q的总数

请注意,使用数组公式处理整个列的速度相当慢,因此您可能希望将其限制为“已用范围”