Estoy intentando hacer un CONTAR.SI en los siguientes datos donde el criterio es específico de la fila y no se vincula a un valor o celda específica.
Por ejemplo, en el siguiente ejemplo, intento contar las filas donde la columna B es el doble de la columna A.
A | B |
---|---|
1 | 5 |
2 | 6 |
5 | 3 |
Supongo que la sintaxis correcta es "=CONTAR.SI(B:B, "="&A:A *2) para verificar si la columna B en cada fila es el doble de la columna A, pero siempre obtengo 0. El resultado correcto sería 2.
Parece que solo se permiten # discretos o una referencia de celda única ("="&A2, por ejemplo), sin embargo, me gustaría que la condición a comparar sea específica de cada fila.
¿Existe una función diferente o algunos errores de sintaxis que me impiden hacer esto? Gracias
Respuesta1
Respuesta2
Sus datos de ejemplo no tienen instancias (filas) donde la columna B es el doble que el valor en A
=SUM(IF(B1:B3 =A1:A3*2,1,0))
ya que una fórmula 3D/matriz lo hará por usted.
Se debe ingresar una fórmula matricial con CTRL+ SHIFT+ ENTERen LibreOffice; No estoy del todo seguro si es lo mismo en Excel(y no tengo medios para intentarlo).
Respuesta3
El único problema con la fórmula original es que es necesario resumirla de alguna manera. Una forma es cómo cybernetic.nomad
lo hizo. Otra es simplemente encerrar la fórmula del cartel en una SUM()
función.
Hay otras formas de lograr una lista de unos y ceros para determinar si los valores de la columna B cumplen la condición. Hannu
muestra uno que, francamente, habría sido mi "goto" porque nunca encontré mucha utilidad para la COUNT
familia de funciones. (Mi limitación, lo sé, ya que en los últimos ocho años aproximadamente buscando sitios de ayuda de Excel me ha mostrado muchos usos "no autorizados", además de formas más directas de obtener resultados que siempre usé IF()
).
Sin embargo, también hay otras formas de hacerlo, una de las cuales es una prueba simple de VERDADERO/FALSO para cada valor que no se utiliza IF()
en su funcionamiento, por lo que probablemente sería más rápido en un conjunto de datos grande:
=SUM( (B1:B4 = A1:A4*2) *1)
Es sólo una simple comparación, generando una serie de resultados VERDADEROS/FALDOS. Entonces uno puede usar los --
operadores, como cybernetic.nomad
lo hace, o como *1
lo hago yo aquí. Esto convierte los elementos literales de la matriz VERDADERO/FALSO en elementos de la matriz 1/0, lo que permite SUM()
luego agregarlos. (Mi preferencia es *1
porque es fácil no sumar al final de la expresión si la expresión tiene su propia multiplicación, ya que esa multiplicación (o suma si se hace an OR
en lugar de an AND
) es suficiente para la conversión. Por supuesto, ya sea funciona muy bien, y para muchos --
parece más claro y, por lo tanto, les resultaría más fácil de mantener que nosotros, *1
los humanos somos así y para cada uno, lo mejor para él).
Sin embargo, la COUNT
familia produce los 1/0 directamente, por lo que tiene un buen valor. Sin embargo, algo todavía tiene que resumir las cosas cuando se aplica así en un rango.