Hola a todos! Siguiendo con el ejemplo de la semana pasada en el que utilizamos Power Query y anteriormente VBA para formatear y mover datos entre hojas, hoy le toca a Typescript. Os dejo aquí los post indicados:
- UTILIZANDO MÉTODO RANGE.FIND PARA LOCALIZAR COLUMNA Y FORMATEAR DATOS
- UTILIZANDO POWER QUERY PARA CREAR CONSULTAS Y FORMATEAR DATOS
Pues bien, vamos a realizar el mismo ejercicio y utilizando condicionales para formatear los datos mientras ejecutamos un bucle. Y antes de nada hago una consideración,en typescript podemos, al igual que en otros lenguajes, mover los datos de un campo o columna de una hoja a otra sin necesidad de utilizar un loop haciendo que el proceso sea mucho más rápido, pero como debemos modificar la información en función de cada registro utilizar un loop resulta muy práctico.
Dicho esto podemos continuar, en el ejemplo que seguimos tenemos la siguiente información:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2021/10/UTILIZANDO-TYPESCRIPT-PARA-FORMATEAR-Y-MOVER-DATOS-ENTRE-HOJAS.png?resize=726%2C817&ssl=1)
y lo que deseamos hacer es lo que hemos visto en los ejemplos anteriores, agrupar el campo de la EDAD en varios grupos de edad y el campo SEXO renombrarlo por GÉNERO y HOMBRE por MASCULINO y MUJER por FEMENINO.
Para poder realizarlo como hemos comentado utilizaré este script:
async function main(workbook: ExcelScript.Workbook) {
let Origen = workbook.getWorksheet("ORIGINAL");
let Destino = workbook.getWorksheet("FORMATEADA");
let MiRangoRow = Origen.getUsedRange();
let MiRangoColumn = Origen.getUsedRange();
let FinRow = MiRangoRow.getRowCount();
let FinColumn = MiRangoColumn.getColumnCount();
//Cargamos todos los campos de la hoja ORIGINAL
let Campo = Origen.getRangeByIndexes(1, 0, FinRow - 1, FinColumn).getValues();
//Añadimos encabezados para la hoja Formateada
Destino.getCell(0, 0).setValues([
["ID"]
])
Destino.getCell(0, 1).setValues([
["EDAD"]
])
Destino.getCell(0, 2).setValues([
["GENERO"]
])
Destino.activate();
for (let i = 1; i < FinRow; i++) {
let MiCampo = Campo[i - 1];
//Pasamos ID
Destino.getCell(i, 0).setValues([
[MiCampo[0]]
])
//Pasamos edad y agrupamos
if (MiCampo[3] >= "18" && MiCampo[3] <= "25") {
Destino.getCell(i, 1).setValues([
["18 a 25"]
])
} else if (MiCampo[3] >= "26" && MiCampo[3] <= "35") {
Destino.getCell(i, 1).setValues([
["26 a 35"]
])
} else if (MiCampo[3] >= "36" && MiCampo[3] <= "45") {
Destino.getCell(i, 1).setValues([
["36 a 45"]
])
} else if (MiCampo[3] >= "46" && MiCampo[3] <= "55") {
Destino.getCell(i, 1).setValues([
["46 a 55"]
])
} else if (MiCampo[3] >= "56" && MiCampo[3] <= "65") {
Destino.getCell(i, 1).setValues([
["56 a 65"]
])
}
//Pasamos Sexo y renombramos
if (MiCampo[4] == "HOMBRE") {
Destino.getCell(i, 2).setValues([
["MASCULINO"]
])
} else
Destino.getCell(i, 2).setValues([
["FEMENINO"]
])
}
}
Y el resultado de aplicar el código es el siguiente:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2021/10/UTILIZANDO-TYPESCRIPT-PARA-FORMATEAR-Y-MOVER-DATOS-ENTRE-HOJAS1.png?resize=1024%2C469&ssl=1)
El mismo resultado que el resto de publicaciones. No obstante, creo que aún sería posible automatizarlo un poco más 🙂
Espero que os 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