【问题标题】:EXCEL: get criteria from a sumif formulaEXCEL:从 sumif 公式中获取标准
【发布时间】:2016-12-12 10:06:09
【问题描述】:

我一直在尝试找到一种方法从 sumif 公式中获取标准,如下所示

=SUMIFS(N:N,G:G,"1670",H:H,"2016")

每个 sumif 都已被硬编码....所以我只想在单元格中提取标准 1(1670)和标准 2(2016)。 excel解决方案或vba都可以

【问题讨论】:

  • 如果I1=1670,m1=2016,那么=SUMIFS(N:N,G:G,I1,H:H,M1)

标签: excel excel-formula sumifs vba


【解决方案1】:

使用适当版本的 excel,您可以使用 FORMULATEXT 函数来获取包含公式的字符串。

要从中获得标准,您必须对公式的格式做出某些假设 - 如果您知道逗号仅出现在参数之间,则很容易将文本拆分为逗号并提取;但是在不同的语言环境中,您可能会发现在您期望逗号的地方使用了分号;范围中可能有逗号;等等

您需要解决方案有多强大?

【讨论】:

  • 合适 = XL 2013 及更高
  • 感谢您提供的遮阳篷,不幸的是我需要为 xl2010 提供解决方案,所以我选择使用 Function FT(mycell As Range); FT = mycell.Formula;结束函数
【解决方案2】:

从@Floris 扩展答案,下面的一组公式为您提供了公式中的标准范围和标准。下面的公式用于删除 "=SUMIF(" & ")"

=SUBSTITUTE(SUBSTITUTE(FORMULATEXT(SUMIF_FORMULA),"=SUMIFS(",""),")","")

FIND 函数查找逗号在公式中的位置。最后一个LEN 函数是获取最后一个条件所必需的。

MID 命令用于获取两个逗号之间的文本。 MID 函数中的 "+1" 和 "-1" 用于从输出中删除逗号。由于无法识别 FORMULATEXT 函数,因此无法生成 Google 表格。

【讨论】:

  • 谢谢你,为了完整性,你可能想添加一个 excel 2010 版本。我选择了 Function FT(mycell As Range); FT = mycell.Formula;结束函数;但您可能有更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多