【问题标题】:How to sum values in the same column based on other values in the same row如何根据同一行中的其他值对同一列中的值求和
【发布时间】:2019-03-08 00:34:44
【问题描述】:

我在 Excel 电子表格中有三列:名称、类型和金额。 (我有更多,但其他与这个问题无关)。每行包含一张扑克牌的名称、它的类型以及一副牌中包含的副本数量:

在此表之外的其他单元格中,我有卡片的总数。例如,“范围”类型的牌的总数。

=COUNTIF(D2:D70; "*ranged*")

这向我显示的只是有多少不同类型的“远程”牌,而不是有多少“远程”牌实际上会包含在牌组中。

我想要一种计算“远程”卡片数量的方法。意思是,所有“远程”卡的“数量”之和。

在 for 循环中,这将是:如果 Type in row 2 = "ranged," 将第 2 行中的 Amount 添加到总数中,然后对所有行重复此操作。

我已经使用 VBA 完成了此操作,但是,我必须手动更新它。另外,“类型”列中不能有多个不同的值,因为 x 必须 100% 等于单元格的内容才能注册它。

Sub Cardtypetotal()
 result = 0
 x = InputBox("SortBy", "Enter_Info")
  For i = 2 To 63
   If Cells(i, 3).value = x Then
    result = result + Cells(i, 5).value
   End If
  Next
 ActiveCell.value = result
End Sub

有没有办法用excel公式做到这一点?谢谢。

我尝试使用:

=SUMIF(E2:E63; D2:D63 = "*ranged*")

但显然,这不算什么,因为我需要比较单个单元格,而不是数组。

【问题讨论】:

  • 你试过 sumifs() 了吗?
  • 我已经尝试过使用 countif。我不知道如何制作一个通用公式来比较每一行的“类型”列并仅在类型符合条件时才计算“金额”。如果你知道怎么做,请与我分享。
  • 按照您自己的说法,您需要“所有‘远程’卡片的‘金额’之和”——这准确地SUMIF/SUMIFS 所做的。 你试过了吗?
  • Sumif() 将添加您在问题中指定的卡片值,而不仅仅是计算单元格的数量。您可以查看文档herethis 解释了如何将函数与通配符结合
  • 我以“不清楚”投票结束,因为标题是关于乘法,正文是关于计数,以及明显的要求每个人都明白是关于添加。请edit 澄清 - 另请注意,垂直=列,水平=行。

标签: excel vba excel-formula excel-2007


【解决方案1】:

查看SUMIFS 函数here 的文档可以解决您对该函数的大部分问题。

您上面的 sumifs 语句使用了错误的语法。你应该使用逗号,而不是分号,你的等号也应该是一个逗号,并且你不应该在“ranged”前面使用星号。那么你的公式就可以正常工作了。

如果上图显示了 A、B 和 C 列,它会是这样的

 =SUMIFS(C:C,B:B,"ranged")

【讨论】:

  • 谢谢!这似乎有效!我使用的是不同的本地化,所以对我来说是分号,而不是逗号。
  • 谢谢!解决了我的问题。投反对票的人显然很困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 2021-05-12
  • 2021-01-09
  • 2014-08-10
  • 2019-03-09
  • 2014-05-07
相关资源
最近更新 更多