SUMIFS 函数如何比较字符串以及为什么以下操作不起作用?

SUMIFS 函数如何比较字符串以及为什么以下操作不起作用?

我想知道如果我在 Excel 中执行 ,会出现什么问题SUMIFS。首先在 J7 和 J8 中分别放置以下值:'17168850000110001'17168850000110000。现在在 K7 和 K8 列中放置以下值:9585。如果您按如下方式设置,您应该会得到下表:

模板

接下来,在单元格中输入以下公式:

=SUMIFS($K$7:$K$8;$J$7:$J$8;J7)

这应该返回 的值95,但是在我的 Excel 中它返回 的值180。是不是我的 Excel“坏了”?

展示

公式

答案1

太长不看; 统计分析系统以其标准中的多种功能来换取在极少数特定情况下的失败。


Excel 的 SUMIFS 试图将“看起来像数字的文本”解释为15 位有效数字限制。在那个限制内,它们看起来都像171688500001100<the rest doesn't matter>

如果将值更改为不能解释为数字的值(例如A17168850000110000A17168850000110001),那么您将得到正确的结果。

SUMIFS 的文本到数字解释是字符串像">="&10"<"&TODAY()作为条件的原因。这似乎是 Excel 原生的某种形式应用.评估方法¹ 它接受“看起来像方程式的字符串”并将其解析为结果。它极大地增强了 SUMIF 和 SUMIFS 的功能,但当它适得其反时,也会出现异常情况(例如您的情况)。

为了使用数据实现伪 SUMIFS,您需要一个进行文字比较(而不是解释比较)的工作表函数。SUMPRODUCT 可以做到这一点。

=SUMPRODUCT((J$7:J$8=J7)*(K$7:K$8))

¹我在开发 TEXTJOINIFS UDF 时自己使用了 Application.Evaluate 方法。

相关内容