Combina tablas rápidamente en Google Sheets con arreglos

Arreglos en Google Sheets
— by

En este artículo verás que son los arreglos y como te pueden ayudar en Google Sheets con un par de ejemplos prácticos

¿Qué son los arreglos?

En programación el arreglo es un listado de elementos que se ve así

=[1,2,3,4]

También pueden haber arreglos de arreglos, o arreglos bidimensionales, que se verían así

=[[1,2,3,4],[5,6,7,8]]

En el contexto de Sheets, cada uno de estos elementos se veria reflejado en una celda.

El primer ejemplo, se vería así

Y el segundo se veria asi

Para que sirven los arreglos

Si acabas de ver el ejemplo anterior, no le vas a ver la utilidad a los arreglos

La verdadera utilidad surge cuando empezamos a usar referencias y a unir rangos diferentes

Por ejemplo tengo estas dos tablas

Y me gustaría poder consolidarlas de manera dinámica, es decir que sin importar si se modifican, se agregan datos o se eliminan datos, mi consolidado siempre va a poder actualizarse

Y no solo eso, sino que las dos tablas podrían estar en diferentes hojas y hasta en diferentes archivos

Digamos que tengo mis clientes separados en distintas pestañas y me gustaría poder unirlos a todos en una lista maestra de clientes. Aquí si que son útiles los arreglos

Asi mismo, los arreglos, en conjuncion con ArrayFormula me pueden ayudar a expandir funciones como el BUSCARV

Pero antes de llegar a esos ejemplos un poco mas complejos, pero donde radica la verdadera utilidad de los arreglos, tenemos que empezar por lo básico

Como construyo un arreglo

El arreglo se construye con los brackets o corchetes, así

={}

Empecemos con el arreglo mas sencillo, con un solo numero

={3}

Ahora, compliquemonos un poco, agregando columnas

Las columnas se agregan con el simbolo \ (para Estados Unidos, Mexico e Inglaterra se usa la coma ,)

Pongamos 3 numeros en nuestro arreglo

={3\4\5}

Ahora hagamos filas

Las filas se agregan con «;», Así

={1;2;3}

Ahora mezclemos columnas y filas; para esto tenemos que hacer arreglos dentro de arreglos

Empecemos con dos filas

={{1\2\3};{4\5\6}}

Tambien podemos hacerlo de otra manera, es decir juntar dos columnas, así

={{1;2;3}\{4;5;6}}

Cabe aclarar que en los arreglos no solo podemos incluir números sino también textos asi

={«Andres»\»Juan»\»Pedro»}

Referencias

Ahora viene lo mas interesante: juguemos con referencias.

De nuevo empecemos con un arreglo de un solo valor

={A1}

De una columna

={C1:C3}

O de una fila

={C1:F1}

O una tabla

={V1:W3}

Podemos tambien transformar una columna en fila asi

={J1\J2\J3}

O una fila en columna asi

={P1;Q1;R1}

Reordenando Tablas

Podemos obtener una tabla y reordenar las columnas así

={AC1:AC3\AB1:AB3}

También podemos reordenar filas

={AH3:AI3;AH2:AI2;AH1:AI1}

A diferencia de las constantes, los rangos ya son arreglos, por lo que no tenemos que «meterlos» en otro arreglo, aunque si lo hacemos no pasa nada. Podemos entonces reescribir los dos ejemplo anteriores así

={{AC1:AC3}\{AB1:AB3}}

={{AH3:AI3};{AH2:AI2};{AH1:AI1}}

Y aunque no es necesario, funciona

Así mismo podríamos juntar constantes con referencia, teniendo en cuenta que las constantes siempre deben estar dentro de arreglos. Algo asi podemos hacer:

={AN1:AO1;{«Juan»\»Guzman»}}

Conclusión

Los arreglos son una función avanzada pero no tan difícil de entender, que nos puede ayudar para combinar nuestros datos. Las aplicaciones son múltiples y espero estar incluyendo y mas y mas ejemplos de su uso

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

Boletín

Nuestras últimas noticias en tu correo electrónico

Respuestas

  1. Avatar de Jose Luis Robles
    Jose Luis Robles

    Que tal Juan

    Antes que nada agradesco tu contenido el cual me ha servido demaciado, eres un master..

    Por otro lado en base a tus videos he generado un sistemita que se requeria en mi lugar de trabajo.. te platico!!

    Trabajo para una Tequilera en Guadalajara Jalisco y se requeria de manera inmediata algo para poder llevar el control de las barricas ( cuando se llenavan, cuando se vaciaban, cuando se movian , los litros, litros convertidos etc etc..

    Asi que al estar viendo tus videos se me ocurrio y levante la mano para poder hacerlo jajaja

    Todo iba bien, ingreso una barrica mediante un formulario, modifico la barrica mediante otro formulario en donde tambien la vacio y la muevo de tarima o linea.

    Tube que meter una hoja como tabla para trabajar los status de las barricas y poder sacar las que estan vacias etc etc

    Genere los reportes en litro, el reporte de expediente de barricas perooooo!!! o mi sorpresa cuando me dijeron.. esta padre pero necesitamos llenar barricas por LOTE de 500…. y yo ups!! el sistema solo va de una a una..

    asi que comenze a trabajar con arreglos EN BASE A TUS VIDEOS por lo que ya podia tomar 500 barricas e insertarlas en sistema como vacias o como nuevas..

    el tema esta en la tabla u hoja que manejo de status cuando vacio un lote de 500 barricas tomo como referenca el numero de lote asi que le digo .. si el lote es X entonces con el for ubicalos y ponles el status V y borra el numero de lote.. y esto lo hace correcto.. te dejo mi codigo..

    function VaciarBarricasPorLoteCambioStatus() {
    var ss = SpreadsheetApp.openById(«1vwk-OcwXeS6Pppj1HDJMmK0WGyaLaNVUWKD5C0gX00c»)
    var hojaOrigen = ss.getSheetByName(«VACIAR_X_LOTE»);
    var hojaDestino = ss.getSheetByName(«BARRICASTATUS»);
    var lote = hojaOrigen.getRange(5, 3).getValue();
    Logger.log(lote);
    //var lote = hojaDestino.getRange(5, 2).getValue();
    //var values = hojaOrigen.getSheetValues(9, 3, hojaOrigen.getLastRow(), hojaOrigen.getLastColumn());
    var values2 = hojaDestino.getSheetValues(2, 1, hojaDestino.getLastRow(), hojaDestino.getLastColumn());
    //console.log(values2);
    for (i = 0; i <= values2.length – 1; i++) {
    if (lote == values2[i][4]) {

    var statusV = 'V'
    hojaDestino.getRange(i + 2, 3).setValue(statusV);
    hojaDestino.getRange(i + 2, 5).setValue('');

    console.log(lote);
    console.log(i);
    }
    }

    El problema es cuando quiero insertar un lote de 500 barricas en las que ya tienen un status V de vacias.. ya que no puedo recorrer el arreglo..

    mi tabla origen la arme en sheets para poder tomar los datos de ahi y compararlos con la tabla de status.. el codigo que arme solo funciona si estan seguidas o iguales en ambas tablas pero si yo pongo en mi tabla origen barrica 1, 20, 35, 41 y en la destino estan todas mis barricas… el arreglo solo modifica la 1 y no va hacia la 20, 35 y 41.. para cambiarles el Status de V a A asi como ponerle el lote asignado.. TENGO ATORADO COMO 4 DIAS Y YA NO SE QUE HACER.. PODRIAS APOYARME.. TE DEJO MI CODIGO.. SE QUE SERA UNA TONTERIA PERO NO HE PODIDO HACERLO

    // ACTUALIZA EL ESTATUS DE LA BARRICA EN BASE AL LLENADO
    function ActualizarBarricasPorLoteCambioStatus() {
    var ss = SpreadsheetApp.openById("1vwk-OcwXeS6Pppj1HDJMmK0WGyaLaNVUWKD5C0gX00c")
    var hojaOrigen = ss.getSheetByName("LLENAR_X_LOTE");
    var hojaDestino = ss.getSheetByName("BARRICASTATUS");
    var barricas = hojaOrigen.getSheetValues(9, 18, hojaOrigen.getLastRow(), 4);
    var values = hojaDestino.getSheetValues(2, 2, hojaOrigen.getLastRow(), 4);

    var lote = hojaOrigen.getRange(5, 3).getValue();
    /*console.log(barricas)
    console.log(values)
    console.log(values[0][0]);
    console.log(barricas[0][0]);*/

    for (i = 0,e = 0 ; i <= barricas.length – 1,e <= values.length – 1; i++,e++) {

    if (barricas[i][0] == values[e][0] && barricas[i][0] != 0 ) {

    var statusA = 'A'
    hojaDestino.getRange(i + 2, 3).setValue(statusA);
    hojaDestino.getRange(i + 2, 5).setValue(lote);

    }

    }
    }

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola!

      Complejo!

      Pudiste solucionar?

      Saludos!

  2. Avatar de Juan Pablo
    Juan Pablo

    buenas tardes

    Me a sido de gran ayuda pero hoy no estoy pudiendo solucionar; he unido varias query con arreglos pero tengo el problema de que si alguna de las consultas no tiene datos me tira error. Eso como se podría modificar .

    1. Avatar de jsguzmanb
      jsguzmanb

      Hola Juan Pablo

      Acabo de hacer ese video

      La próxima semana lo encuentras en el canal. Mientras tanto te dejo una fórmula que te puede ayudar

      =QUERY({SI.ERROR(QUERY(Colombia!A2:J;»WHERE A IS NOT NULL»);{«»\»»\»»\»»\»»\»»\»»\»»\»»\»»});SI.ERROR(QUERY(Ecuador!A2:J;»WHERE A IS NOT NULL»);{«»\»»\»»\»»\»»\»»\»»\»»\»»\»»});SI.ERROR(QUERY(Peru!A2:J;»WHERE A IS NOT NULL»);{«»\»»\»»\»»\»»\»»\»»\»»\»»\»»})};»WHERE Col1 IS NOT NULL»;0)

      Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This