Problemas com char (60) ao fazer um sumif ()

1

Se eu estiver usando a função sumif builtin (Excel Microsoft Office Home e 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. O resumo deve retornar 4.

Por favor, note o uso do 'para string escapando ao inserir texto na célula.

Alguma idéia do que estou fazendo errado aqui?

Vale notar que o problema parece estar relacionado ao uso do colchete angular (char (60)). Eu aprecio que eu poderia contornar este problema usando a função substitute () - mas eu gostaria de entender qual é a causa desse problema e como dizer ao excel para tratar char (60) como uma string.

Alguma idéia?

Por favor note - não há problemas com o sumif se apenas o hypen (char (45)) for usado. Por exemplo:

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

Isso soma corretamente para 4.

    
por Sean 27.09.2017 / 08:52

1 resposta

1

O problema está em

=sumif(b1:b3,"<Sydney",a1:a3)

(Eu suponho que o parâmetro de condição seja "<Sydney" em vez de "'<Sydney" conforme declarado na pergunta, pois retornará 0.)

O parâmetro de condição tratará a comparação < como "menor que". A condição "<Sydney" será, portanto, interpretada como menor que a string Sydney por seu valor ASCII (ou valor Unicode?). Portanto, as strings com os caracteres iniciais A to 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 = no parâmetro de condição dirá ao Excel para "somar apenas a célula é igual a <Sydney , portanto, retornando 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 como 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 sequências forem idênticas.

    
por 27.09.2017 / 09:38