Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

146
Views
Iterar sobre un rango rápido en Excelscript para web

Quiero verificar que un rango de celdas esté vacío o tenga algún valor, uso esto for loop :

 for (let i = 0; i <= namesRange.getCellCount(); i++) { if (namesRange.getCell(i,0).getText() == "") { break; } bookedCount += 1; }

Sin embargo, esta iteración es extremadamente lenta (al igual que el uso de Range.getValue , pero la consola le advierte que la iteración con .getValue es lenta, no le advierte con getText ). Se tarda varios segundos en iterar sobre una lista muy corta de 10 elementos. .

¿Hay alguna forma de verificar los valores de una celda de manera rápida usando ExcelScripts?

¿Significa esto que, incluso si desarrollo un UDF o un complemento de cinta con office.js y Node.js, también será extremadamente lento para iterar sobre las celdas?

¿Hay alguna manera de hacer esto más rápido?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Otra alternativa a la primera respuesta es usar el enfoque forEach para cada celda en el rango de valores.

Puede reducir la cantidad de variables que necesita para lograr el resultado deseado.

 function main(workbook: ExcelScript.Workbook) { let worksheet = workbook.getActiveWorksheet(); let usedRange = worksheet.getUsedRange().getValues(); usedRange.forEach(row => { row.forEach(cellValue => { console.log(cellValue); }); }); }
about 4 years ago · Juan Pablo Isaza Report

0

La razón por la que es probable que su código funcione lentamente es que las llamadas a getCell() y getText() son costosas. En lugar de realizar estas llamadas cada vez en el ciclo, puede probar un enfoque diferente. Un enfoque es obtener una matriz de los valores de celda e iterar sobre eso. Puede usar su variable namesRange para obtener la matriz de valores. Y también puede usarlo para obtener el recuento de filas y el recuento de columnas para el rango. Con esta información, debería poder escribir bucles for anidados para iterar sobre la matriz. He aquí un ejemplo de cómo podrías hacerlo:

 function main(workbook: ExcelScript.Workbook) { let namesRange: ExcelScript.Range = workbook.getActiveWorksheet().getRange("A1"); let rowCount: number = namesRange.getRowCount(); let colCount: number = namesRange.getColumnCount(); let vals: string[][] = namesRange.getValues() as string[][]; for (let i = 0; i < rowCount; i++) { for (let j = 0; j < colCount; j++) { if (vals[i][j] == "") { //additional code here } } } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!