Supongamos que tengo algunos nombres en las celdas B1:B3
y una lista completa de todos los nombres A1:A4
, ¿es posible que genere una lista de nombres en los A1:A4
que no aparecen B1:B3
?
Por ejemplo, las celdas A1:A4
tienen "A", "B", "C", "D", si B1:B3
contienen "A", "C", "D", entonces quiero obtener "B".
Miré a través de la lista de funciones pero no pude encontrar la manera de hacerlo.
Actualización : con la ayuda de Lance, la fórmula que se me ocurrió fue:
FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)
Esto da el resultado correcto, sin embargo, todavía tengo un problema. El problema es que mis células B1:Bx
pueden expandirse. Estoy administrando un equipo deportivo y utilizo un formulario de Google Docs para que las personas lo envíen, seleccionan su nombre de una lista de selección y seleccionan un botón de opción "Sí" (puedo jugar) o "No" (estoy fuera). Lo que quiero lograr aquí es mostrar en mi hoja de cálculo a las personas que no han respondido. El objetivo es actualizar esta lista automáticamente después de cada nuevo envío. Desafortunadamente, cuando se completan nuevas filas en la hoja de cálculo, la fórmula se arruinaría. No estoy seguro de si hay una solución para esto.
Actualización 2 : encontré una solución alternativa. Copié las células de B1:Bx
otra región C1:Cx
primero, luego usé la fórmula anterior pero en contra C1:Cx
. Ahora incluso se B1:Bx
expande, la fórmula sigue siendo válida.
fuente
Respuestas:
WOW, iba a buscarte una solución exacta, Google Docs es muy frustrante. Script-loop City.
Puede hacer esto con la función de hoja de trabajo FILTER, con su arrayCondition_1 siendo una fórmula de funciones que proporciona un valor verdadero para cada línea que no está duplicada. Pude ver que la función MATCH no se podía usar.
fuente
COUNTIF
cuenta el número de veces que cada jugador en la columnaA
aparece en la columnaB
y devuelve una matriz de los recuentos.NOT
convierte los números a valores booleanos (verdadero o falso) y luego toma el inverso.FILTER
elimina a los jugadores que aparecieron en laB
lista de respuestas de la columna.El truco aquí es que
NOT
arroja los conteos a los booleanos. Si un jugador no ha respondido, aparecerá 0 veces en la lista de respuestas. Si han respondido, aparecerán 1 o más veces (tal vez un jugador que intenta cambiar su respuesta enviando la encuesta por segunda vez). 0 a elencosFalse
y todos los demás números emitidos aTrue
. Por lo tanto, los jugadores que han respondido al mapaTrue
y aquellos que aún no han respondido al mapaFalse
.NOT
luego toma el inverso, dándote una máscara de esos jugadores que aún no han respondido.Esta solución admite una lista creciente de envíos que pueden incluir filas en blanco o envíos duplicados. Para limitar el rango específico descrito en la pregunta, use:
=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))
fuente
Aquí hay una hoja de cálculo que muestra cómo se puede hacer esto fácilmente:
Establecer operaciones en hojas de cálculo de Google
La unión es
={setA; setB}
La diferencia es
=filter(setA, iferror(MATCH(setA, setB, false)))
La intersección es
=filter(setA; MATCH(setA, setB, false))
Explicación
setA
ysetB
se pueden denominar rangos o puede usar la notación de rango normal. Los rangos con nombre solo aclaran esto.Union es solo una nueva gama hecha al yuxtaponer ambas gamas.
Intersección (más fácil siguiente) depende en busca de indicios de
setA
ensetB
donde las salidas, y filtrando la cerda de eso.La diferencia es similar, pero se filtra
setA
para seleccionar solo miembros donde no se encuentra el índicesetB
.Crédito adicional
La unión con eliminación duplicada es solo setA + (setB-setA) , así que por lo anterior
fuente