Se eu estiver usando a função interna sumif (Excel Microsoft Office Home & Student 2016 versão 1708), obtenho o seguinte comportamento:
amount description
4 '<Sydney
4 '<Melbourne
=sumif(b1:b3,"'<Sydney",a1:a3)
Sumif retorna 8.
Isso está incorreto. A soma deve retornar 4.
Observe o uso do ' para escape de string ao inserir texto na célula.
Alguma idéia do que estou fazendo de errado aqui?
Vale a pena notar que o problema parece estar relacionado ao uso do colchete angular (char(60)). Agradeço por ter conseguido contornar esse problema usando a função replace() - mas gostaria de entender qual é a causa desse problema e como dizer ao Excel para tratar char(60) como uma string.
Alguma ideia?
Observe que não há problemas com o sumif se apenas o hífen (char(45)) for usado. Por exemplo:
amount description
4 '-Sydney
4 '-Melbourne
=sumif(b1:b3,"'-Sydney",a1:a3)
Isso soma corretamente 4.
Responder1
O problema reside
=sumif(b1:b3,"<Sydney",a1:a3)
(Presumo que o parâmetro de condição seja "<Sydney"
o "'<Sydney"
indicado na pergunta, pois retornará 0.)
O parâmetro de condição tratará a <
comparação inicial como "menor que". A condição "<Sydney"
será, portanto, interpretada como menor que a string Sydney
pelo seu valor ASCII (ou valor Unicode?). Portanto, as strings com caracteres iniciais A
até R
, e <
são todas "menores que" a string Sydney
.
Para corrigir o problema, você pode alterar a função como:
=sumif(b1:b3,"=<Sydney",a1:a3)
O =
parâmetro na condição dirá ao Excel para "soma apenas a célulaé igualpara <Sydney
, retornando, portanto, o resultado correto.
Para ilustrar melhor, experimente estes dados de amostra:
[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)
funciona conforme o esperado, pois -
não significa nada e, portanto, o Excel, sumif
por padrão, compara cada célula em B1:B3 com a string inteira -Sydney
e soma apenas se as duas strings forem idênticas.