Hola a todos:
Y este es el último de los post que convierto a modelo actual a partir de un script asíncrono. Aunque ha sido interesante, espero que este tipo de modificaciones no se conviertan en algo habitual, porque entonces, francamente, dudaré mucho de la utilidad de este lenguaje y su planteamiento.
El post que he modificado es el siguiente: TRABAJAR CON FUNCIONES DE EXCEL EN TYPESCRIPT
Y el código actualizado es el siguiente:
async function main(workbook: ExcelScript.Workbook) {
//asignamos variables para hojas INICIO y PERSONAL
let MiHoja = workbook.getWorksheet("INICIO");
let Personal = workbook.getWorksheet("PERSONAL");
//cargamos valores de filas y columna
let MiRangoRow = MiHoja.getUsedRange();
let MiRangoCol = MiHoja.getUsedRange();
let MiRangoRow_Personal = Personal.getUsedRange();
//Pasamos valores a variables
let FinRow = MiRangoRow.getRowCount();
let FinCol = MiRangoCol.getColumnCount();
let FinRow_Personal = MiRangoRow_Personal.getRowCount();
//Antes de proceder limpiamos contenido
MiHoja.getRangeByIndexes(1, 1, FinRow, FinCol).clear(ExcelScript.ClearApplyTo.all);
// Escribimos títulos
MiHoja.getCell(0, 1).setValues([
["Nº OFICINA"]
]);
MiHoja.getCell(0, 2).setValues([
["PERSONAL"]
]);
MiHoja.getCell(0, 3).setValues([
["TIPO OFICINA"]
]);
MiHoja.getCell(0, 4).setValues([
["OBJETIVOS"]
]);
for (let i = 1; i < FinRow; i++) {
// Ejecutamos combinación de fórmulas para extraer última posición
MiHoja.getCell(i, 1).setFormulas([
["=RIGHT(A" + (i + 1) + "," + "LEN(A" + (i + 1) + ")" + "-" + "SEARCH(\" \"" + "," + "A" + (i + 1) + "," + 1 + "))"]
]);
// Ejecutamos Buscarv para traer número de personas en oficina
MiHoja.getCell(i, 2).setFormulas([
["=VLOOKUP(A" + (i + 1) + "," + "'PERSONAL'!" + "A2:B" + FinRow_Personal + ",2,0"]
]);
}
//Cargamos valores de columna PERSONAL
let CPersonal = MiHoja.getRangeByIndexes(1, 2, FinRow - 1, 1).getValues();
//Creamos variables para condicional
let x: number = 5
let j: number = 10
let h: number = 15
let Obj: number = 3
//Iniciamos bucle for
for (let i = 1; i < FinRow; i++) {
//Pasamos valores Personal a matriz
let Of_Personal = CPersonal[i - 1];
//y utilizamos condicional para determinar tipo de oficina
if (Of_Personal[0] <= x) {
MiHoja.getCell(i, 3).setValues([
["OFICINA PEQUEÑA"]
])
} else if (Of_Personal[0] > x && Of_Personal[0] <= j) {
MiHoja.getCell(i, 3).setValues([
["OFICINA MEDIANA"]
])
} else if (Of_Personal[0] > j && Of_Personal[0] <= h) {
MiHoja.getCell(i, 3).setValues([
["OFICINA MEDIANA PLUS"]
])
} else {
MiHoja.getCell(i, 3).setValues([
["OFICINA GRANDE"]
])
}
// Multiplicamos PERSONAL por 3
let Objetivos: number
Objetivos = Of_Personal[0] * Obj;
MiHoja.getCell(i, 4).setValues([
[Objetivos]
])
}
}
Es un código extenso en el que trabajamos con varias funciones, Buscarv, Hallar, Largo y Derecha. Como podéis observar podemos programar estas funciones con TypeScrip perfectamente.
Y esto es todo, 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