執行 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)) 有關。我很高興我可以使用 Replace() 函數來解決這個問題 - 但我想了解這個問題的原因是什麼以及如何告訴 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"將被解釋為小於字串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)按預期工作,因為-沒有任何意義,因此 Excel預設sumif會將 B1:B3 中的每個儲存格與整個字串進行比較-Sydney,並且僅當兩個字串相同時才求和。

相關內容