Проблемы с char(60) при выполнении sumif()

Если я использую встроенную функцию sumif (Excel Microsoft Office для дома и учебы 2016 г. версия 1708), я получаю следующее поведение:

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

Сумиф возвращается 8.

Это неверно Sumif должен вернуть 4.

Пожалуйста, обратите внимание на использование 'для экранирования строки при вводе текста в ячейку.

Есть идеи, что я здесь делаю не так?

Стоит отметить, что проблема, похоже, связана с использованием угловой скобки (char(60)). Я ценю то, что смог обойти эту проблему, используя функцию substitute (), но я хотел бы понять, в чем причина этой проблемы и как сказать Excel, чтобы рассматривать char (60) как строку.

Есть идеи?

Пожалуйста, обратите внимание - с sumif проблем нет, если используется только hypen (char(45)). Например:

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 и суммировать, только если две строки идентичны.

Другие вопросы по тегам