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
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);
}
}
}
Hola!
Complejo!
Pudiste solucionar?
Saludos!
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 .
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!