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

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

Если я использую встроенную функцию 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) как строку.

Есть идеи?

Обратите внимание - проблем с функцией sumif не возникает, если используется только дефис (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)

Параметр =in condition сообщит 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)работает так, как и ожидалось, as -ничего не значит, и поэтому Excel sumifпо умолчанию сравнивает каждую ячейку в диапазоне B1:B3 со всей строкой -Sydneyи суммирует только в том случае, если две строки идентичны.

Связанный контент