¿Cómo hacer una operación de configuración simple en la hoja de cálculo de Google Docs?

10

Supongamos que tengo algunos nombres en las celdas B1:B3y una lista completa de todos los nombres A1:A4, ¿es posible que genere una lista de nombres en los A1:A4que no aparecen B1:B3?

Por ejemplo, las celdas A1:A4tienen "A", "B", "C", "D", si B1:B3contienen "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:Bxpueden 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:Bxotra región C1:Cxprimero, luego usé la fórmula anterior pero en contra C1:Cx. Ahora incluso se B1:Bxexpande, la fórmula sigue siendo válida.

grokus
fuente
La solución para el problema en expansión es usar un rango con nombre. Sin embargo, probablemente tomará un poco de trabajo obtener el filtro correctamente.
Lance Roberts
@Lance, encontré una solución y actualicé mi publicación nuevamente. Gracias.
grokus
1
Gran pregunta, la encontré mientras buscaba esta respuesta. Su solución es bastante buena, pero creo que finalmente obtuve exactamente lo que estaba buscando. Mira mi respuesta a continuación.
Anthony DiSanti

Respuestas:

4

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.

Lance Roberts
fuente
1
Descubrí que usar Chrome es mucho mejor cuando se trata de Google Docs.
grokus
Hoy es una locura para mí, pero si puedo recordar, lo haré una semana después (si la respuesta no se ha encontrado para entonces).
Lance Roberts
está bien, pude usar FILTER para obtener los resultados que quería. Gracias.
grokus
@grokus, genial, debes publicar la fórmula que usaste para futuras referencias de lectores.
Lance Roberts
Actualicé mi publicación original.
grokus
4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

COUNTIFcuenta el número de veces que cada jugador en la columna Aaparece en la columna By devuelve una matriz de los recuentos.

NOT convierte los números a valores booleanos (verdadero o falso) y luego toma el inverso.

FILTERelimina a los jugadores que aparecieron en la Blista de respuestas de la columna.

El truco aquí es que NOTarroja 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 elencos Falsey todos los demás números emitidos a True. Por lo tanto, los jugadores que han respondido al mapa Truey aquellos que aún no han respondido al mapa False. NOTluego 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)))

Anthony DiSanti
fuente
genius 20charlimit
Fadeway
0

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 setAy setBse 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 setAen setBdonde las salidas, y filtrando la cerda de eso.

La diferencia es similar, pero se filtra setApara seleccionar solo miembros donde no se encuentra el índice setB.

Crédito adicional

La unión con eliminación duplicada es solo setA + (setB-setA) , así que por lo anterior

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
Marc Meyer
fuente