Hola a todos!
He estado trabajando sobre la forma de consolidar la información de todas las hojas de un libro en una hoja utilizando Typescript.
He realizado pruebas usando matrices y varios loops, pero francamente, el proceso es demasiado lento (lentíssssssimo), y he optado por ser práctico e intentarlo con el procedimiento de copia y pega, y la verdad es que ha salido bastante bien.
Aquí os muestro las 3 hojas a consolidar:

Y llevaremos el resultado completo a la hoja RESULTADO donde agruparemos los 30 registros con su información.
El código que vamos a usar es el siguiente:
async function main(workbook: ExcelScript.Workbook) {
var nHojas = workbook.getWorksheets();
var resultado = workbook.getWorksheet("RESULTADO");
//creamos títulos
var titulos = ["ID", "NOMBRE COMPLETO", "SECCIÓN", "NACIMIENTO", "2º IDIOMA", "ESTUDIOS"]
resultado.getRange("A1:F1").setValues([titulos])
//por cada hoja que no sea RESULTADO
nHojas.forEach((sheet) => {
var hoja = sheet.getName()
if (hoja != 'RESULTADO') {
var filas = sheet.getUsedRange().getRowCount();
var columnas = sheet.getUsedRange().getColumnCount();
var mFila = +resultado.getUsedRange().getRowCount();
//copiamos rango de hoja con datos y lo pegamos en hoja RESULTADO
resultado.getRange("A" + (mFila + 1)).copyFrom(sheet.getRangeByIndexes(1, 0, filas, columnas), ExcelScript.RangeCopyType.all);
resultado.activate();
}
});
}
Como podéis observar, añadimos títulos a la hoja RESULTADO y a continuación mediante un loop vamos copiando y pegando según el rango seleccionado. Nos ayudaremos del método .getRangeByIndexes() para realizar las selecciones.
El resultado es el siguiente:

Y ya tendríamos la información de las tres hojas totalmente consolidada!!.
Y esto es todo, espero que sea de utilidad 🙂
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies