这确实让我们误解了很长一段时间,即使我们已经找到了如何获得正确的结果,我们真的想知道为什么SUMIF
会产生不正确的结果,而SUMPRODUCT
在使用时产生精确的结果相同的条件。
以下是两个公式:
=SUMPRODUCT((Calcul!$J$2:$J$15000=Sommaire!J2)*(Calcul!$K$2:$K$15000))
=SUMIF(Calcul!$J$2:$J$15000,Sommaire!J2, Calcul!$K$2:$K$15000)
如您所见:完全相同的范围,完全相同的比较,完全相同的和范围。
关于数据的更多信息:在这两个表格中(' Sommaire'和Calcul')单元格包含的数据类似于仅包含数字但序列为文本的序列号。这个数字来自A,B,C,D,E和I列的连接数据,公式为:
=IFERROR(A2&B2&C2&D2&E2&I2, "ERREUR")
以两种不同的方式使用过滤器(直接过滤密钥或"序列号"以及第二种过滤器直接过滤密钥的每个组件),我们得到完全相同的数据集,当手动计算时,给我们的值与SUMPRODUCT
返回的值相同。
有什么想法吗?我们真的无法提出返回结果不同的任何理由。
感谢。
答案 0 :(得分:0)
我们终于找到了解决方案。似乎由于某种原因SUMIF
强制将数字字符串处理为数字。由于我们的密钥相当大,所以它达到某种整数容量并溢出并不是不可能的。如果我们只是在它前面添加一个字母,我们会得到与使用SUMPRODUCT
时相同的结果。
溢出的密钥示例:
01003046014910111616
01000145950198116308
这些键具有完全相同的公式(前面只附加了一个C),返回预期的结果:
C01003046014910111616
C01000145950198116308