如果我使用 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 值?)。因此,A
以R
、 和為前導字元的字串<
都「小於」字串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
,並且僅當兩個字串相同時才求和。