27 julio, 2026

PASAR DATOS A FILAS SEGÚN ELEMENTOS ENTRE GUIONES UTILIZANDO TYPESCRIPT

Hola a todos!

Después de haber realizado el ejercicio de pasar datos de una columna a filas por cada elemento entre guiones, con VBA y con Power Query, hoy lo voy a realizar con Typescript, estos son los dos post anteriores:

PASAR DATOS A FILAS SEGÚN ELEMENTOS ENTRE GUIONES UTILIZANDO POWER QUERY

PASAR DATOS A FILAS SEGÚN ELEMENTOS ENTRE GUIONES UTILIZANDO VBA

Para realizar el ejemplo con typescript vamos a usar el mismo ejemplo:

El código usando es el siguiente:

function main(workbook: ExcelScript.Workbook) {
    const wsOrigen = workbook.getWorksheet("Hoja1");
    const wsDestino = workbook.getWorksheet("Hoja2");
    wsDestino.getUsedRange()?.clear(); // Limpia la hoja destino
    // Obtenemos todos los datos de origen a la vez
    const dataOrigen: (string | number | boolean)[][] = wsOrigen.getUsedRange().getValues(); 
    // Preparamos un nuevo conjunto de datos para destino
    const newData: (string | number | boolean)[][] = []; 
    // Procesa cada fila
    dataOrigen.forEach((row, index) => {
        if (index === 0) {
            newData.push(row); // Agregamos los encabezados
            return;
        }
        // Accedemos al valor de la segunda columna de la fila actual
        const cellValue = row[1];
        // Verificamos si el valor de la celda es una cadena
        if (typeof cellValue === 'string') {
            // Dividimos el contenido de la celda por cada guión
            const partes = cellValue.split("-");
            // Iteramos sobre cada parte del split
            partes.forEach(parte => {
                // Creamos una nueva fila copiando los valores de la fila original
                const newRow = [...row]; // Copiamos la fila original
                // Sustituimos el valor de la celda que tenía guiones por cada fragmento obtenido del split en iteraciones sucesivas
                newRow[1] = parte; // Sustituimos la columna de guiones
                // Agregamos la nueva fila modificada al arreglo de nuevas filas
                newData.push(newRow);
            });
        }
    });
    // Escribimos los nuevos datos en destino
    const destinoRange = wsDestino.getRangeByIndexes(0, 0, newData.length, newData[0].length);
    destinoRange.setValues(newData);
    destinoRange.getFormat().autofitColumns(); // Ajustamos las columnas
    console.log("EL PROCESO FINALIZADO, LOS DATOS HAN PASADO A LA HOJA2");
}

El código está muy comentado, lo he detallado por cada línea de código.

Una vez aplicado el script obtenemos el resultado esperado:

Y esto es todo, espero que sea de utilidad.

Comparte este post

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