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