Problemas con char(60) al realizar un sumif()

Problemas con char(60) al realizar un sumif()

Si estoy usando la función incorporada sumif (Excel Microsoft Office Home & Student 2016 versión 1708), obtengo el siguiente comportamiento:

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

Sumif devuelve 8.

Esto es incorrecto. El sumif debería devolver 4.

Tenga en cuenta el uso de ' para escapar de cadena al ingresar texto en la celda.

¿Alguna idea de lo que estoy haciendo mal aquí?

Vale la pena señalar que el problema parece estar relacionado con el uso del corchete angular (char(60)). Aprecio poder solucionar este problema usando la función sustituto(), pero me gustaría entender cuál es la causa de este problema y cómo decirle a Excel que trate char(60) como una cadena.

¿Algunas ideas?

Tenga en cuenta que no hay problemas con sumif si solo se utiliza el guión (char(45)). P.ej:

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

Esto suma correctamente 4.

Respuesta1

El problema radica en

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

(Supongo que el parámetro de condición es "<Sydney"en lugar de "'<Sydney"lo indicado en la pregunta, ya que devolverá 0).

El parámetro de condición tratará la <comparación inicial como "menor que". Por lo tanto, la condición "<Sydney"se interpretará como menor que la cadena Sydneypor su valor ASCII (¿o valor Unicode?). Por lo tanto, las cadenas con caracteres iniciales Aa Ry <son todas "menores que" la cadena Sydney.

Para solucionar el problema, puede cambiar la función como:

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

El =parámetro en la condición le indicará a Excel que "suma solo la celdaes iguala <Sydney, por lo tanto, devuelve el resultado correcto.

Para ilustrarlo mejor, pruebe estos datos de muestra:

          [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 se esperaba, ya que -no significa nada y, por lo tanto, Excel sumifcompara de forma predeterminada cada celda en B1: B3 con la cadena completa -Sydneyy suma solo si las dos cadenas son idénticas.

información relacionada