6 febrero, 2025

UTILIZANDO TYPESCRIPT PARA FORMATEAR Y MOVER DATOS ENTRE HOJAS

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:

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:

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:

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies