Cuando recolectamos nombres y correos en encuestas y formas de contacto, es muy probable que algunos de estos datos se repitan o queden en blanco y a la hora de querer usarlos, tengamos que limpiar esa base de datos, lo que consume bastante tiempo. Vamos a usar algunas fórmulas de manejo de datos de Google Sheets (Hojas de Cálculo de Google) para arreglar esta situación fácilmente.

Preparando nuestros datos

Vamos a poner un ejemplo en donde vemos una lista de nombres y correos, y como puedes ver, hay algunos registros repetidos y peor aún, algunos nombres que no tienen asociado un correo. Lo primero que haremos es deshacernos de los repetidos, y asumir que si un nombre no tiene asociado un correo, no nos sirve.

La solución más básica y directa es seleccionar el rango e ir al menú Datos – Borrado de datos – Quitar duplicados

Como puedes ver, esto nos ayuda un poco pero no totalmente, pues elimina los datos completamente y si se agregaran más datos a la misma lista, tendríamos que usar este menú constantemente. No es muy práctico.

Vamos a intentar hacer esto de forma más precisa y automática usando fórmulas que nos permiten mantener los datos intactos y nos funcionará para cualquier set de datos solo copiando las fórmulas.

Filtrando repetidos con la fórmula UNIQUE()

Entonces, si aplicamos la fórmula UNIQUE() en una celda diferente usando el rango que contiene los correos, podemos aislar la lista sin repetidos:

=UNIQUE(B2:B)

Fíjate cómo solo necesitas hacerlo en una celda, en este caso será D2, porque la fórmula regresa un arreglo de datos y los despliega hacia abajo

Filtrando filas en blanco con FILTER()

Ya no tenemos repetidos, pero todavía tendremos por lo menos un espacio en blanco. Vamos a usar una fórmula muy poderosa, en una forma muy básica, pero es perfecto para conocerla, me refiero a FILTER().

=FILTER( rango , condición )

Para la condición, requerimos indicarle que NO queremos un espacio en blanco, entonces usamos la fórmula NOT() en combinación con ISBLANK(), de esta manera:

=FILTER( D2:D , NOT(ISBLANK(D2:D) )

Si quieres combinarlo todo en una sola fórmula que obtenga los datos desde la columna original, sería así:

=UNIQUE(FILTER(B2:B,NOT(ISBLANK(B2:B))))

Obtener los nombres a partir de la nueva lista con XLOOKUP()

Ahora queremos los nombres asociados a cada correo. Para eso usaremos la fórmula XLOOKUP, que nos permite buscar un dato en una tabla considerando cualquier columna como índice.

Si tienes muchos años usando Excel, seguramente te preguntarás ¿por qué no simplemente usar VLOOKUP (BUSCARV)? La respuesta es que en nuestros datos, la columna que usaríamos como índice (el correo) está después de lo que queremos buscar, y eso no es posible directamente en VLOOKUP. Podríamos cambiar de orden las columnas, pero puede que esto no siempre no sea posible.

Entonces, usamos XLOOKUP así:

=XLOOKUP(I2,$B$2:$B,$A$2:$A)

XLOOKUP de I2, que es el correo que buscamos, en el rango de B2 a B, que es donde están los correos, y A2 a A como el rango resultante. También usamos la opción de escribir un valor vacío en caso de no encontrar nada, ya que si no hacemos esto podría dar error.

Y arrastramos la fórmula hacia abajo.

O, si quieres una sola fórmula mágica que lo resuelve todo desde la misma celda sin columnas de ayuda intermedias ni arrastrando fórmulas, te la comparto acá 😉

=LET(nombres,$A$2:$A, correos,$B$2:$B, ARRAYFORMULA(XLOOKUP(UNIQUE(FILTER(correos,NOT(ISBLANK(correos)))),correos,nombres,"")))

Lo único que agregamos fue LET para no repetir el rango de los correos 3 veces y ARRAYFORMULA para que se despliegue todo de una sola vez

Obtener los nombres a partir de la nueva lista con QUERY()

Por último, hagamos esto mismo pero ahora con la fórmula QUERY, que a veces puede ser una gran opción por su flexibilidad para usar una implementación del conocido lenguaje SQL para consultar datos. Nunca sobra tener opciones para lograr el mismo resultado 😉

=QUERY( rango , consulta, encabezados )

Entonces, usaremos la fórmula de esta manera, eligiendo el rango de datos de ambas columnas A y B, y construyendo nuestra consulta así:

=QUERY( rango , consulta )

=QUERY( $A$2:$B,"select A where (B = '"& I2 &"') limit 1",0 )

  • select A significa que queremos obtener la primera columna del rango (ojo: no siempre A coincidirá con la primera columna)
  • where (B = '"& I2 &"') es la condición, es decir, queremos empatar el correo de la consulta con el correo de la celda I2
  • 0 se refiere a que no queremos que incluya títulos o encabezados

¡Y listo! Ahora ya sabes cómo usar las fórmulas más útiles para limpiar una base de datos con datos repetidos fácilmente. Seguro hay formas más rápidas y eficientes de hacer todo esto, pero en esta guía quería demostrar estas fórmulas para que juntos aprendiéramos a combinarlas.

Plantilla terminada para descargar

Guía en video

Si tienes dudas puedes ver esta misma guía explicada en video

¡Espero que te haya sido útil esta guía! No olvides seguirnos en YouTube para más tips, trucos y guías de productividad.

Si tienes dudas, deja un comentario y con gusto te ayudaremos a resolverlas.

Aprende Sheets: Curso práctico de Hojas de cálculo de Google
Aprende Sheets: Curso práctico de Hojas de cálculo de Google