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"ではなく、0 を返すものと想定します。)"'<Sydney"

条件パラメータは、先頭の を<「より小さい」比較として扱います。したがって、条件は、 ASCII 値 (または Unicode 値?) によって"<Sydney"文字列より小さいと解釈されます。したがって、先頭の文字が、、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)-は何も意味しないので、期待どおりに動作し、Excel はsumifデフォルトで B1:B3 の各セルを文字列全体と比較し-Sydney、2 つの文字列が同一の場合のみ合計します。

関連情報