【问题标题】:*EXCEL* If a range of cells contain *STRING* then extract the sum of decimal numbers from positive cells*EXCEL* 如果一系列单元格包含 *STRING*,则从正单元格中提取十进制数字的总和
【发布时间】:2020-09-29 22:29:47
【问题描述】:

我现在花了很长时间试图弄清楚这一点,但到目前为止没有任何进展。所以我想要做的是收集在表格列中的一系列字符串中找到的所有十进制数字的总和,这可以使用以下公式单独完成:

=LOOKUP(9.9E+307,--LEFT(MID(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0}, $A2&"1023456789")),999),ROW(INDIRECT("1:999"))))

我不希望在表中添加专用列的原因是,这仅用于财务跟踪器上非常特定的用例,其中订单已包含多件商品,而单件商品后来被退款,然后表格将被更新,如下所示:

预退款: Amazon Marketplace // £110

退款后: Amazon Marketplace [R-50.20] // £110

所以使用上面的公式,我可以从字符串中提取 50.20。现在,我需要做的是类似于下面的事情,这不起作用,但我不确定什么公式可以帮助解决这个问题:

SUM(SUMIF(AprilActivity[ITEM],"*[R-*",LOOKUP(9.9E+307,--LEFT(MID(AprilActivity[ITEM],MIN(FIND({1,2,3,4,5,6,7,8,9,0}, $AprilActivity[ITEM]&"1023456789")),999),ROW(INDIRECT("1:999"))))))

【问题讨论】:

  • 您能否告诉我们您的数据是什么样的(例如电子表格的屏幕截图?
  • ^ 包括预期输出!
  • 您好,很抱歉延迟回复,我需要在发布之前混淆一些数据,我已经安排了我的文档描述以及一些 imgur 上的屏幕截图,如果还有什么可以使用的,请告诉我. imgur.com/a/v7OzWJt

标签: excel excel-formula data-manipulation


【解决方案1】:

您只提供了一个示例,其中您希望返回的数字似乎是两个子字符串之间的数字:

  • [R-
  • ]

如果这是你真正想要的,那么:

=SUM(--MID(myRange,FIND("[R-",myRange)+3, FIND("]",myRange)-FIND("[R-",myRange)-3))

将添加myRange 中符合这些规范的所有数字。

例如,您可以将myRange 替换为AprilActivity[ITEM]

【讨论】:

  • 谢谢你,我知道我的问题措辞不当,所以我感谢你试图理解我的问题的努力。尽管在范围内的每个单元格都包含退款 ([R-....]) 的情况下这将完美运行,但如果单元格不包含退款标识符,则最终会引发错误, 要通过这个 IFERROR 可以使用,如下所示:=SUM(IFERROR(--MID(myRange,FIND("[R-",myRange)+3, FIND("]",myRange)-FIND("[R-",myRange)-3),0))
  • 我很高兴您可以根据您的实际问题调整我提供的内容。将来,请注意,如果您提供的数据不能充分包含数据的真实性质,则所提供的解决方案不太可能是最佳的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多