¿Cómo puedo referirme a dos columnas diferentes en una función COUNTIF?

11

Haré todo lo posible para explicarlo. Digamos que tengo una hoja que se ve así (en este ejemplo artificial, digamos que estoy enviando correos electrónicos de marketing a varias personas, sé sus edades y códigos postales, y quiero hacer un seguimiento de las tasas de clics en esos correos electrónicos):

        A   |    B        |    C  
  1     Age |    zip code |  click?  
  2     26  |    11111    |  true  
  3     27  |    11112    |  true  
  4     28  |    11111    |  false  
  5     27  |    22222    |  false  
  6     28  |    11112    |  false  
  7     26  |    22222    |  true  

Ahora quiero rastrear varias estadísticas. En este caso, quiero hacer un seguimiento de la tasa de clics por edad y por código postal. Entonces tengo una mesa como esta:

      E         F          G 
 1   Age  |  # sent  | # clicked
 2   26   |
 3   26   |
 4   27   |
 5   28   |

Básicamente, en la columna "# enviado", puedo poner (en F2, por ejemplo):

=COUNTIF(A:A, E2)

Y esto daría como resultado un 2 en la celda F2, porque hubo dos ocurrencias de "26" en la columna A.

Pero ahora, ¿qué pasa si quiero saber cuántos clics? Quiero decir algo como:

=COUNTIF(A:A == E2  AND  C:C == True, for the same row where A:A matched E2)

Sé que puedo agregar otra columna D con una fórmula como

=IF(C2, A2, "")

Lo cual solo será la edad en la columna D si la columna C es verdadera. Pero puedo tener potencialmente muchos criterios y no parece que deba agregar otra columna "falsa" para cada columna de criterios que tengo.

¿Hay alguna forma de hacer esto? Si no está en Google Docs, ¿en Excel?

Jer
fuente
Nota: la respuesta para las nuevas Hojas de cálculo de Google está ahí abajo .

Respuestas:

11

Utilice una combinación de ARRAYFORMULA, SUM y operaciones aritméticas.

Aquí está la función para contar todos los clics de una persona de 26 años:

=ARRAYFORMULA(sum((A:A=26) * (C:C="true")))

Hay 3 partes en esta operación.

  • El ARRAYFORMULA se encarga de recorrer el rango especificado
  • El SUM logra contar todos los resultados verdaderos

Esencialmente, verdadero se convierte en 1 y falso se convierte en 0. La lógica booleana se realiza mediante operaciones aritméticas.

Una operación AND usa la multiplicación:

  • (1 * 1) = 1 - (Verdadero && Verdadero) = Verdadero
  • (1 * 0) = 0 - (Verdadero && Falso) = Falso
  • (0 * 0) = 0 - (Falso && Falso) = Falso

Una operación OR utiliza una combinación de la función * SIGN y la suma:

  • signo (1 + 1) = 1 - (Verdadero || Verdadero) = Verdadero
  • signo (1 + 0) = 1 - (Verdadero || Falso) = Verdadero
  • signo (0 + 0) = 0 - (Falso || Falso) = Falso

Nota: La función de signo es necesaria debido a la forma en que la suma booleana funciona de manera diferente a la suma aritmética. Básicamente, en la suma booleana 1 + 1 = 1, en la suma aritmética 1 + 1 = 2. Obviamente, la suma aritmética desordenará el recuento, por lo que debe ejecutar los resultados de las operaciones de suma a través de una función de signo. La función de signo devuelve 1 si el valor es positivo, 0 si el valor es 0 y -1 si el valor es negativo.

Digamos que desea contar los clics para todos los usuarios entre 20 y 25 años:

=ARRAYFORMULA(sum(sign((A:A=20) + (A:A=21) + (A:A=22) + (A:A=23) + (A:A=24) + (A:A=25)) * (C:C="true")))
Evan Plaice
fuente
SIGN no es obligatorio aquí, ¿verdad? ninguna celda individual puede ser both20 y 23, por ejemplo, por lo que la suma nunca le daría un valor> 1 en este caso. SIGN solo se requiere si las condiciones no son mutuamente excluyentes. Además, ¿no se podría hacer más fácilmente entre 20 y 25 con esta versión? =arrayformula(sum((A:A>=20)*(A:A<=25)*(C:C=TRUE)))
barry houdini
Intentaba explicar el uso general de la lógica OR. Si las pruebas no fueran exclusivas (contenidas en la misma columna), entonces sería necesaria la función SIGN. En este caso no lo es. Y sí, su ejemplo sería el mejor enfoque, pero no demuestra el uso de OR. Estaba tratando de pensar en un enfoque simplista para demostrar el uso de OR que encajaba con la pregunta del OP, pero obviamente no soy muy bueno para encontrar ejemplos extraños. Si tienes algunos ejemplos mejores, te animo a editar / mejorar la respuesta.
Evan Plaice
Disculpas, Evan, no lo entendí, es un excelente ejemplo.
barry houdini
puede evitar = verdadero, entonces: = ARRAYFORMULA (sum ((A: A = 26) * C: C))
tic
1
@tic No estaba usando el verdadero booleano (que es VERDADERO en las hojas de cálculo de Google) Me refería a 'verdadero' la cadena que el operador utilizó en su pregunta. Pruébelo, estoy bastante seguro de que si prueba los valores de C: C, siempre devolverá VERDADERO en una cadena no vacía. En las celdas de la hoja de cálculo, Google se adhiere a las reglas de Excel sobre JavaScript. Bienvenido al divertido mundo de las abstracciones con fugas.
Evan Plaice
10

A partir de ahora, las nuevas Hojas de cálculo de Google son compatibles con COUNTIFS, que pueden manejar directamente el trabajo requerido.

=COUNTIFS(A:A, E2, C:C, "true")

Liste todos los rangos y la comparación para hacer separados por comas.

swarajk1
fuente
44
Gracias por recompensarme desplazándome hacia abajo. Esta es la respuesta cuando se trabaja con las nuevas hojas de google.
Christiaan Westerbeek
3

En Excel, usaría SUMPRODUCT en Excel 2003 o COUNTIFS (con una "S") en Excel 2007 o posterior ....... pero en Google Docs intente esto

=arrayformula(sum((A:A=E2)*(C:C=TRUE)))

barry houdini
fuente
3
=COUNTA( IFERROR( FILTER('Guest List'!$G:$G ; 'Guest List'!$G:$G = "Yes" ; 'Guest List'!$L:$L = "USA" ) ) )

Esto fue para dos columnas, estoy usando esto para mi lista de invitados a la boda, en este caso, tabulando "Sí" al enviar una fecha de guardado y "EE. UU." Para la ubicación, para poder calcular el franqueo más tarde. Puede haber una fórmula más corta, pero parece funcionar, ¡así que no me estoy metiendo con ella!

Conteo feliz

Shef
fuente
1

En Excel, olvidaría las fórmulas y usaría tablas dinámicas.

Es posible que deba agregar una columna de "contador", que podría usarse una y otra vez como la variable que suma para obtener resultados.

MaryC.fromNZ
fuente
0

Puede agregar la matriz que desea probar en {}.

En el siguiente ejemplo:

=countif({F2,H2,J2,L2,N2,P2,R2,T2,V2,W2},"TRUE")
Stuart Murless
fuente