执行 sumif() 时 char(60) 出现问题

执行 sumif() 时 char(60) 出现问题

如果我使用 sumif 内置函数(Excel Microsoft Office Home & Student 2016 版本 1708),我会出现以下行为:

amount    description
4         '<Sydney
4         '<Melbourne
=sumif(b1:b3,"'<Sydney",a1:a3)

Sumif 返回 8。

这是不正确的。 sumif 应该返回 4。

在单元格中输入文本时,请注意使用 ' 进行字符串转义。

知道我在这里做错了什么吗?

值得注意的是,该问题似乎与使用尖括号 (char(60)) 有关。我很高兴可以使用 substitute() 函数解决此问题 - 但我想了解此问题的原因以及如何告诉 excel 将 char(60) 视为字符串。

有任何想法吗?

请注意 - 如果仅使用连字符 (char(45)),则 sumif 不会出现任何问题。例如:

amount    description
4         '-Sydney
4         '-Melbourne
=sumif(b1:b3,"'-Sydney",a1:a3)

这个数字正确地加起来是 4。

答案1

问题在于

=sumif(b1:b3,"<Sydney",a1:a3)

(我假设条件参数"<Sydney"不是"'<Sydney"问题中所述的,因为它将返回 0。)

条件参数将前导字符<视为“小于”比较。因此,条件"<Sydney"将被解释为小于字符串的 ASCII 值(或 Unicode 值?)。因此,以、 和Sydney为前导字符的字符串都“小于”字符串。AR<Sydney

要修复此问题,您可以将函数更改为:

=sumif(b1:b3,"=<Sydney",a1:a3)

=条件参数将告诉 Excel“仅对单元格是平等的<Sydney,因此返回正确的结果。

为了进一步说明,请尝试以下示例数据:

          [Col A]  [Col B]
[Row 1]     1          <
[Row 2]     2          A
[Row 3]     4          S
[Row 4]     8          Z

=SUMIF(B1:B4,"<S",A1:A4)    [3]
=SUMIF(B1:B4,"<=S",A1:A4)   [7]
=SUMIF(B1:B4,"=S",A1:A4)    [4]
=SUMIF(B1:B4,">S",A1:A4)    [8]

=sumif(b1:b3,"-Sydney",a1:a3)按预期工作,因为-没有任何意义,因此 Excelsumif默认将 B1:B3 中的每个单元格与整个字符串进行比较-Sydney,并且仅当两个字符串相同时才求和。

相关内容