【问题标题】:How can I use sumif with len and if statments如何将 sumif 与 len 和 if 语句一起使用
【发布时间】:2019-05-01 16:02:43
【问题描述】:

客户希望在 Excel 中以一种简洁的方式(无辅助列)根据分配给它的项目对另一个工作表上的表中的数据求和

他们将项目编码为“aa 1.1 sap”、“aa 1.1 ar”、“aa 1.2”、...、“aa 1.10”、“aa 1.11”等。只有 1.1 后面有附加字符,但他们希望将所有 1.1、1.2、1.10 等视为一个组。我创建了一个辅助列,只提取数字并在它们上使用 sumif,但他们不想要那个辅助列(非常令人沮丧,因为我可以将它隐藏在表格中)。我尝试了 sumif 与 len 和 if 语句的各种组合,但没有成功。他们也不想要数据透视表。只是一个简单的表格,上面有项目编号(1.1、1.2、1.15)和旁边的总数。我也遇到了 Excel 混淆 1.10 和 1.1 的问题,但我应该能够弄清楚这一点。

Name    Amount  Type
proj13  42  it 1.1 sap
proj14  4444    it 1.1 sap
proj15  566565  it 1.1 ar
proj16  4566    it 1.1 ar
proj8   0.1 it 1.10
proj9   2646    it 1.2
proj10  6546    it 1.2
proj11  46451   it 1.13
proj12  77556   it 1.15
proj13  42  it 1.15

因此,辅助列在 D 列中,公式为 =IF(IF(LEN(C2)=7,MID(C2,4,4),MID(C2,4,3))="1.10",1.01,IF(LEN(C2)=7,MID(C2,4,4),MID(C2,4,3)))

(现在我把 1.10 变成 1.01 是在作弊) 这将返回一列,仅显示项目代码中的数字

总数使用=SUMIF(D:D,"="&K2,B:B),其中 K 存储基于数字的值(1.1、1.2、1.3 等)

总数应该相等:

1.1     575617
1.10    0.1
1.2     9192
1.13    46451
1.15    77598

我可以通过辅助列得到这个,但我不知道是谁将它全部放入一个单元格中的一个公式中。我试图避免使用 VBA 或宏,因为这也是他们不想要的。

【问题讨论】:

  • 他们如何看待 UDF?
  • 应该可以使用 SUMIF 和通配符。
  • 问题在于将1.11.101.11区分开来
  • 寻找1.1 - 后面有一个空格。
  • 是的,但我注意到proj9 在字符串末尾有1.2。一个好的MCVE 在这里会很有用

标签: excel excel-formula


【解决方案1】:

您可以使用SUMIF 和通配符。

对于1.1的特殊情况,使用空格+通配符:

=SUMIF(C:C,"*"&E2&" *",B:B)

对于所有其他情况:

=SUMIF(C:C,"*"&E3,B:B)

【讨论】:

  • 谢谢大本。这看起来像赢家!
  • 太棒了!很高兴能帮忙。很抱歉听到没有帮助列,我不确定我明白为什么:)
【解决方案2】:

对于单个公式,需要更改为 SUMPRODUCT:

=SUMPRODUCT(--ISNUMBER(SEARCH(" "&E2&" "," "&$C$2:$C$11&" ")),$B$2:$B$11)

【讨论】:

  • 非常好,是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多