En este artículo vemos como combinar hojas en Google Sheets, consolidando todos nuestras tablas en una sola pestaña.
Aquí pueden ver el tutorial en video:
¿Para que consolidar?
Muchas veces, tenemos los datos repartidos en distintas bases, bien sea porque así se hizo desde el principio o porque lo decidimos así, separándolo por años, o por países, o por categorías, o lo que sea.
Pero si resulta que después queremos hacer un reporte o gráfica o tabla dinámica de todos mis datos, para esto necesito juntar o consolidar todas esas tablas que tenemos separadas, en una sola.
La manera manual
La manera más fácil es copiar y pegar, una por una.
Esto está bien si solo lo necesitamos una vez, pero si es un informe que queremos hacer cada semana o cada mes, o si es un informe en tiempo real que queremos realizar, entonces debemos encontrar alguna manera de poder juntar estos datos más fácilmente.
Uniendo con arreglos
Con la ayuda de los símbolos {} podemos unir fácilmente diferentes rangos.
Por ahora solo debemos tener en cuenta que para separar filas usamos el punto y coma (;) y para separar columnas usamos el slash hacia adelante (\).
Nota: Para Estados Unidos, Inglaterra y México, el separador de columnas es «,»
Entonces en un caso muy sencillo, como el siguiente:

Simplemente abro mis corchetes, selección el primer rango, ingreso el separador, en este caso «;» y después escojo el siguiente rango.
Y ya está. Ya combinamos nuestros primeros rangos.
Lo más importante a saber por ahora es que cuando juntemos filas, el número de columnas de todos los rangos debe ser igual.
Varias hojas
Siguiendo la misma lógica, vamos a abrir nuestro corchete, pero vamos a escoger rangos de distintas pestañas como en el siguiente ejemplo:
={Colombia!A1:J112;Ecuador!A1:J128;Peru!A1:J85}

Si bajamos a la fila donde empieza Ecuador nos encontramos con un error

Y es que está trayendo todos los encabezados. Esto lo solucionamos empezando los arreglos de Ecuador y Perú desde la fila 2. Quedaría así:
={Colombia!A1:J112;Ecuador!A2:J128;Peru!A2:J85}
Rangos abiertos
Esto esta muy bien para cuando los rangos son cerrados o fijos.
Por ejemplo, en el caso de arriba, el rango en la pestaña «Colombia» siempre va a ir hasta la fila 112, ni una más ni una menos. Lo mismo para las demás.
Pero como esto no siempre es así, tenemos que prever que nuestras bases pueden cambiar y no queremos estar siempre teniendo que cambiar manualmente los rangos
Para esto, vamos a dejar los rangos abiertos, es decir sin fila final. Nuestra fórmula cambiaria a:
={Colombia!A1:J;Ecuador!A2:J;Peru!A2:J}

En principio nada cambia, pero si bajamos un poco, nos damos cuenta de un error

La formula tal como está nos trae no solo los datos, sino las filas vacías.
Hay varias formas de solucionar esto:
Ordenar
Si ordenamos de manera sencilla el arreglo que acabamos de construir, nos va a dejar los vacíos de último. La fórmula sería:
=SORT({Colombia!A1:J;Ecuador!A1:J;Peru!A1:J})
En este caso vamos a encontrar un error similar a lo que ya nos había sucedido con los encabezados: Como dejamos formulado el encabezado de Colombia, al ordenarlo, lo va a bajar a la última fila

Para solucionar esto, también vamos a quitarle el encabezado a Colombia. pegar como valores el encabezado, es decir la primera fila, y empezamos nuestra fórmula desde la fila 2 y no desde la 1 como antes.
=SORT({Colombia!A2:J;Ecuador!A2:J;Peru!A2:J})

Y listo!
Filtrar con un Query
Otra forma de filtrar sin necesidad de ordenar es usando un QUERY donde solo mostramos las filas que en alguna columna especifica no tengan valores.
Como QUERY es una función tan potente, pero intimidante sobre todo si no la conocemos antes, les dejo todo un tutorial de introducción a QUERY
Es importante escoger una columna que estemos seguros de que siempre va a tener un valor.
En nuestro caso vamos a escoger la B de «Producto». Pero como le estamos «dando» a QUERY un arreglo creado, la columna no la vamos a llamar B, sino Col2.
El QUERY quedaría así:
=QUERY({Colombia!A2:J;Ecuador!A2:J;Peru!A2:J};"SELECT * WHERE Col2<>''")
Otra manera alternativa de hacerlo es usar el comando IS NOT NULL que traduce «no es nulo». Quedaría así:
=QUERY({Colombia!A2:J;Ecuador!A2:J;Peru!A2:J};"SELECT * WHERE Col2 IS NOT NULL")
Hacer un arreglo de QUERIES
Otra forma de hacerlo, es primero filtrar cada una de nuestras bases y después, hacemos el arreglo.
En otras palabras es invertir el orden de la fórmula anterior.
Primero hagamos un QUERY para Colombia donde quitemos los vacíos:
=QUERY(Colombia!A2:J;"SELECT * WHERE B<>''")
Lo mismo que el anterior, pero la columna ahora si es B y no es Col2
Hacemos lo mismo para Perú y Ecuador
=QUERY(Peru!A2:J;"SELECT * WHERE B<>''")
=QUERY(Ecuador!A2:J;"SELECT * WHERE B<>''")
Por ultimo juntamos estos 3 QUERIES con un arreglo
={QUERY(Colombia!A2:J;"SELECT * WHERE B<>''");QUERY(Ecuador!A2:J;"SELECT * WHERE B<>''");QUERY(Peru!A2:J;"SELECT * WHERE B<>''")}

Hacer un arreglo de FILTERS
Es lo mismo que el caso anterior pero lo podemos hacer con funciones FILTER
La función FILTER para Colombia sería
=FILTER(Colombia!A2:J;Colombia!B2:B<>"")
Las de Ecuador y Perú quedarían así:
FILTER(Ecuador!A2:J;Ecuador!B2:B<>"")
FILTER(Peru!A2:J;Peru!B2:B<>"")
Y el arreglo final quedaría así:
={FILTER(Colombia!A2:J;Colombia!B2:B<>"");FILTER(Ecuador!A2:J;Ecuador!B2:B<>"");FILTER(Peru!A2:J;Peru!B2:B<>"")}
La ventaja de usar QUERY en vez de FILTER es que dentro del mismo QUERY podemos después ordenar y hacer cosas más avanzadas
Conclusión
Como ven, hay varias maneras de combinar pestañas para consolidar nuestros datos.
Todo depende de detalles específicos de sus bases, y de su objetivo final.
Cuéntenme casos específicos donde esto no funcione y cualquier otra sugerencia.
Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script
Deja una respuesta