在执行sumif()时char(60)的问题


1

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

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

Sumif返回8。

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

请注意在将文本输入单元格时使用'for string escape。

我在这里做错了什么想法?

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

有任何想法吗?

请注意 - 如果仅使用hypen(char(45)),则sumif没有问题。例如:

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

这正确地总和为4。

Answers:


1

问题在于

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

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

条件参数将前导<视为“小于”比较。"<Sydney"因此,条件将被解释为小于字符串Sydney的ASCII值(或Unicode值?)。因此与前导字符的字符串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)按预期工作,因为-没有任何意义,因此sumif默认情况下Excel 将B1:B3中的每个单元格与整个字符串进行比较,-Sydney并且只有在两个字符串相同时才进行求和。


你先生是绅士和学者!谢谢 - 这很有效。
肖恩,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.