【问题标题】:How to filter String text cell?如何过滤字符串文本单元格?
【发布时间】:2012-07-24 08:44:17
【问题描述】:

我想在工作表的行数未知的情况下使用 SUMPROCUT 函数。

所以公式是=SUMPRODUCT(--F:F,--G:G)写的,按回车键后#VALUE!出现了。

我意识到列名是字符串类型,但它们被包含在计算中,这可能是问题所在。
如何避免 SUMPRODUCT 函数中的字符串文本?或者你有更聪明的方法,请帮忙。 提前感谢!

[更新 - 屏幕截图和原始要求]
客户问我一个公式来计算总和(F列*G列),比如10*470 + 5*350 + 5*5.5 + 25*180 + 4*48 + 6*15 + 80*4.5 + 70*5.44,而且我不知道他们的工作表中有多少行导致他们想要一个通用公式来处理所有 excel 文件

【问题讨论】:

  • 您可以向我们展示您的数据是什么样的(通过屏幕截图或示例),以便我们帮助您解决 root 问题并避免XY Problem跨度>
  • 你真的需要双重否定--吗?没有这些SUMPRODUCT 将忽略包含文本的行。
  • @JMax 你说得对,可能是 XY 问题我已经更新了问题。
  • @rock:你编辑你的问题是绝对正确的:)。我试试看
  • @lori_m -- 我知道你的意思, -- 会处理客户端指示列错误类型如String的情况,会出现异常

标签: excel excel-2007 excel-formula excel-2003


【解决方案1】:

这是一个尝试:

=SUMPRODUCT($F2:INDEX($F:$F,MATCH(9.9999E+307,$F:$F)), $G2:INDEX($G:$G,MATCH(9.9999E+307,$G:$G)))

前提是您的值在同一行结束。

一些解释:

  • index() 可以返回一个引用和一个值(我们在这里使用它作为引用)
  • 9.9999E+307 是一个技巧 - 基本上,如果您在一个数字范围内寻找一个大于任何数字的数字(& 9.9999E+307 大约是 excel 可以处理的最大数字,所以在大多数情况下都有效),match() 将返回列表中最后一个数字的位置,这就是我们想要的

灵感找到了here,但我发现这个技巧非常聪明和聪明:)

【讨论】:

  • 好极了,这太不可思议了......这真的很好,谢谢@JMax,我必须深入研究这两个公式。
【解决方案2】:

只需使用=SUMPRODUCT(F:F,G:G)(即不使用--

【讨论】:

  • 这重复了我的评论...我将响应解释为在将数字作为文本输入的情况下可能需要--,但通常您可以使用转换任何非数字数字工具提示选项。
  • @lori_m 我不得不说你是绝对正确的,抱歉耽误了欣赏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 2019-10-20
相关资源
最近更新 更多