Snowflake Asked: 2019-11-29 06:00:10 +0800 CST2019-11-29 06:00:10 +0800 CST 2019-11-29 06:00:10 +0800 CST SUMIFS 函数如何相互比较字符串,为什么以下不起作用? 772 我想知道如果我执行SUMIFS. 在 J7 和 J8 中首先放置以下值:'17168850000110001和'17168850000110000。现在将值放在 K7 和 K8 列中,以下值:95和85。如果你按如下方式设置,你应该得到下表: 接下来,在一个单元格中输入以下公式: =SUMIFS($K$7:$K$8;$J$7:$J$8;J7) 这应该返回 的值95,但它180在我的 Excel 中返回 的值。是我的Excel“坏了”吗? microsoft-excel 1 个回答 Voted Best Answer user385793 2019-11-29T06:27:30+08:002019-11-29T06:27:30+08:00 tldr; SUMIFS在其标准中交换了各种各样的功能,以换取在极少数和精选的情况下失败。 Excel 的 SUMIFS 试图将“看起来像数字的文本”解释为15 位有效数字限制内的数字。在该限制内,它们看起来都像171688500001100<the rest doesn't matter>. 如果您将值更改为无法解释为数字的值(例如A17168850000110000和A17168850000110001),那么您会得到正确的结果。 SUMIFS 的文本到数字解释是字符串喜欢">="&10或"<"&TODAY()作为标准工作的原因。这似乎是某种形式的 Excel 原生Application.Evaluate 方法¹,它采用“看起来像方程的字符串”并将它们解析为结果。它极大地增加了 SUMIF 和 SUMIFS 功能,但是当它适得其反时,会有一些流氓案例(比如你的案例)。 为了使用您的数据实现伪 SUMIFS,您需要一个工作表函数来进行文字比较,而不是解释比较。SUMPRODUCT 会这样做。 =SUMPRODUCT((J$7:J$8=J7)*(K$7:K$8)) ¹在开发 TEXTJOINIFS UDF 时,我自己使用了 Application.Evaluate 方法。
Excel 的 SUMIFS 试图将“看起来像数字的文本”解释为15 位有效数字限制内的数字。在该限制内,它们看起来都像
171688500001100<the rest doesn't matter>
.如果您将值更改为无法解释为数字的值(例如
A17168850000110000
和A17168850000110001
),那么您会得到正确的结果。SUMIFS 的文本到数字解释是字符串喜欢
">="&10
或"<"&TODAY()
作为标准工作的原因。这似乎是某种形式的 Excel 原生Application.Evaluate 方法¹,它采用“看起来像方程的字符串”并将它们解析为结果。它极大地增加了 SUMIF 和 SUMIFS 功能,但是当它适得其反时,会有一些流氓案例(比如你的案例)。为了使用您的数据实现伪 SUMIFS,您需要一个工作表函数来进行文字比较,而不是解释比较。SUMPRODUCT 会这样做。
¹在开发 TEXTJOINIFS UDF 时,我自己使用了 Application.Evaluate 方法。