在Excel中,当另一列为特定值时,对每行中一个列中的所有值求和。

46

我想知道是否有简单的方法可以实现我需要的功能。基本上,我在Excel 2011中有一个资产负债表,其中包含大量数据。我希望始终显示一条特定信息,即未报销的金额。换句话说,我有一个用于支付金额的列,另一个用于记录是否已经报销(是/否)。我想求出所有支付金额的总和,其中未报销字段等于“否”。

我知道可以对整个列求和,并过滤掉已报销的部分,但我希望它不受任何筛选器的影响,始终显示完整的金额。

我无法找到关键字来向Google描述这种情况,所以我在这里提问。我希望在Excel中完成此操作,而不是在外部程序或脚本中。

3个回答

114
如果A列包含待报销的金额,B列包含表示是否已经报销的“Yes/No”,那么以下两种方法都可以使用,但第一种方法更加推荐:
=SUMIF(B:B,"No",A:A)
或者
=SUMIFS(A:A,B:B,"No")

这里有一个例子,它将显示一组小样本数据的支付金额和未支付金额。

 A         B            C                   D
 Amount    Reimbursed?  Total Paid:         =SUMIF(B:B,"Yes",A:A)
 $100      Yes          Total Outstanding:  =SUMIF(B:B,"No",A:A)
 $200      No           
 $300      No
 $400      Yes
 $500      No

Excel计算的结果


1
第二个公式也适用于Google电子表格。第一个公式不知道为什么不能用... - Yogesh
栈从不让我失望。 - Jim O.
1
一个澄清点。该条件可以是表达式、函数、通配符等,例如">32",TODAY(),"*es",甚至像这样的东西:=SUMIF(A2:A6,">" & D4,B2:B6)。 - RayInNoIL

18

您可以使用 SUMIF 函数来实现此操作。该函数允许您根据特定条件对另一个单元格中的值进行求和。以下是示例:

 -   A         B
 1   100       YES
 2   100       YES
 3   100       NO

使用公式:=SUMIF(B1:B3, "YES", A1:A3),您将获得结果为200

以下是我刚在Excel中完成的一个工作示例的截图:

Excel SUMIF Example


2
您可以使用 IF 函数来实现这一点。其语法为 =IF(条件, 如果条件成立则返回的值, 如果条件不成立则返回的值)。如果您想要添加一个额外的列,只显示未报销的金额,您可以使用类似以下的公式:
=IF(B1="No", A1, 0)

并将它们求和。可能有一种方法可以将其包含在列下方的单个单元格中,但我脑海中想不出任何简单的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接