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"
ではなく、0 を返すものと想定します。)"'<Sydney"
条件パラメータは、先頭の を<
「より小さい」比較として扱います。したがって、条件は、 ASCII 値 (または Unicode 値?) によって"<Sydney"
文字列より小さいと解釈されます。したがって、先頭の文字が、、Sydney
である文字列はすべて、文字列 より小さいです。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
、2 つの文字列が同一の場合のみ合計します。