【问题标题】:Counting the Amount with Multiplication Condition用乘法条件计算数量
【发布时间】:2017-07-31 14:39:51
【问题描述】:

我有一个如下所示的 Excel 列表:

我需要计算 C 行中具有 Finished 值的行数。但如果 B 列中的 T 值包含 分号 必须计数 double,如果它包含 2 个分号,则必须计数 3 等等...

她是一张显示计数应该如何工作的图片。

我将无法在工作表中添加另一列,所以我正在锁定矩阵公式或类似的东西。

到目前为止,我尝试使用 Countif 和 Countifs 公式,但没有奏效。 有人可以给我一个提示如何做这个或 waht Fomula 是最好用的吗?

【问题讨论】:

  • 我坚信在 excel 中使用公式而不是 VBA.. 在可能的情况下。但我想不出一个可以做到这一点的公式。 VBA 不是一种选择吗?
  • 为简单起见,我将使用单独的 D 列来计算每个单元格中的分号数,然后进行 sumproduct
  • @Dan 是的,我也想到了一个单独的列,但我认为必须有一种方法来使用公式。 ^^

标签: excel excel-formula


【解决方案1】:

对于您的“已完成”总数,请使用以下公式(根据需要调整范围以适合您的实际数据):

=SUMPRODUCT((LEN($B$5:$B$28)-LEN(SUBSTITUTE($B$5:$B$28,";",""))+1)*($C$5:$C$28="Finished"))

对于您的“待处理”总数,如果需要相同的处理,请使用以下公式:

=SUMPRODUCT((LEN($B$5:$B$28)-LEN(SUBSTITUTE($B$5:$B$28,";",""))+1)*($C$5:$C$28="Pending"))

【讨论】:

  • 这就是我一直在寻找的。非常感谢。
【解决方案2】:

您是否允许使用/创建新工作表(包含数据的工作表除外)?如果是,您始终可以计算在单独的工作表中工作所需的值,然后使用单元格引用将值拉回原始工作簿。因此,在 Sheet2(例如)中,我将有两列:

待处理:=IF(Sheet1!$C4="Pending",1+LEN(Sheet1!$B4)-LEN(SUBSTITUTE(Sheet1!$B4,";","")),0)

已完成:=IF(Sheet1!$C4="Finished",1+LEN(Sheet1!$B4)-LEN(SUBSTITUTE(Sheet1!$B4,";","")),0)

根据需要填写该公式。

然后,在您想要输入总和的原始工作表上(我在上面的公式中将其称为 Sheet1,您将执行 =SUM(Sheet2!$B$1:$B$25) 来填充待处理金额单元格并使用 =SUM(Sheet2!$A$1:$A$25) 来填充已完成金额。

** 如果不允许您使用新的工作表,我会说 VB 脚本将是唯一的选择。

已编辑 最好的解决方案是之前提供的 SUMPRODUCT 公式。

【讨论】:

  • Sumproduct 函数将内部语句转换为数组版本(不需要 ctrl+shift+enter),这就是允许 Len 函数接受一系列单元格以提供正确答案的方式。我可以验证提供的公式计算是否正确。
  • 我的立场是正确的 :) 你每天都会学到新东西。不知道为什么我第一次测试它时它没有给出正确的答案。我会谦虚地为你的答案投票
猜你喜欢
  • 2013-02-19
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多