Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

278
Visualizações
Hojas de cálculo de Google: busque la última columna con datos en una matriz

Estoy tratando de encontrar la última columna en un rango, pero el problema es que no puedo especificar la secuencia de comandos para verificar solo dentro de una matriz en lugar de toda la hoja. Pude usar este fragmento de código para encontrar la última fila, pero tengo problemas para entender cómo se puede cambiar esto para encontrar la columna en lugar de la fila.

 function findLastRow() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Sheet1'); const data = sh.getRange("A:K").getValues(); const mR = sh.getMaxRows(); const indexes = []; data[0].forEach((_,ci)=>{ let col = data.map(d => d[ci]); let first_index = col.reverse().findIndex(r=>r!=''); if(first_index!=-1){ let max_row = mR - first_index; indexes.push(max_row); } }); last_row = indexes.length > 0 ? Math.max(...indexes) : 0; console.log(last_row); }

Fuente de este código

¿Alguien puede explicarme cómo se podría cambiar un poco esta función para buscar la columna en lugar de la fila?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Descripción

Encontrar la última fila o columna que contiene datos de un rango se puede simplificar con el uso de Range.getNextDataCell().

Aquí hay una hoja de cálculo con celdas escasamente pobladas.

ingrese la descripción de la imagen aquí

Código.gs

 function test() { try { let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test"); let range = sheet.getRange("A1:D10"); let lastRow = range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); console.log("lastRow = "+lastRow); range = sheet.getRange("A1:E5"); lastColumn = range.getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn(); console.log("lastColumn = "+lastColumn); } catch(err) { console.log(err); } }

Registro de ejecución

 6:14:50 PM Notice Execution started 6:14:51 PM Info lastRow = 4 6:14:51 PM Info lastColumn = 4 6:14:51 PM Notice Execution completed

Referencia

  • Rango.getNextDataCell()
about 4 years ago · Juan Pablo Isaza Relatório

0

En su situación, ¿qué tal la siguiente modificación?

Guión modificado:

 function findLasColumn() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Sheet1'); const range = sh.getRange("A:K"); const offset = range.getColumn(); const maxColumn = Math.max(...range.getDisplayValues().map(r => r.reduceRight((n, c, i) => { if (!n && c) n = i; return n }, null))); const lastColumn = maxColumn + offset; console.log(lastColumn); }
  • Cuando se ejecuta este script, desde "A:K" , se devuelve el último número de columna.
  • Si usa "B:K" , el último número de columna se devuelve como el número de columna válido.

Referencia:

  • reducirDerecha()
about 4 years ago · Juan Pablo Isaza Relatório

0

Enfoque alternativo

También puede usar el método de transposición para poder obtener la última columna en su rango.

Guión modificado:

 function findLastColumn() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Sheet1'); const range = sh.getRange("C1:H18"); const data = transpose(range).map((values,index) => values[0].length ? index+range.getColumn() : null).filter(d => d); //The 'index+range.getColumn()' part returns the number of a non-empty col console.log(data[data.length-1]); } function transpose(range){ return range.getValues()[0].map((_, colIndex) => range.getValues().map(row => row[colIndex])); }

Hoja de muestra:

ingrese la descripción de la imagen aquí

  • Después de ejecutar la función findLastColumn()

ingrese la descripción de la imagen aquí

Referencia:

  • Transponer una matriz en JavaScript
  • Mapa de matriz de JavaScript ()
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda