Office Script - Dois métodos diferentes para mapear a última célula preenchida na coluna



Olá, seguidor e seguidora do blog!

Depois de algum tempo sem escrever nada para o blog sobre o Office Script, resolvi falar um pouco sobre duas técnicas diferentes de marcar a última célula de uma coluna no Excel Online.

No VBA o processo é bem fácil pois podemos utilizar o método END de uma range para descobrir a última célula preenchida. Seja de cima para baixo ou de baixo para cima. Se ficou curioso, o comando para mapear a última célula da coluna B de uma planilha seria:

dim ultcel as range
set ultcel = activesheet.cells(activesheet.rows.count, 2).end(xlup)


A variável ultcel receberá a referência da última célula com dados na coluna B.

Daqui para frente, é só usar a variável para capturar o número da linha, o conteúdo da célula, reposicionar o cursor (offset) para gravar novos dados e o que mais sua criatividade permitir aproveitar do recurso.



Mas, como a instrução pode ser escrita no Office Script para o Excel Online?

Vamos utilizar a planilha abaixo como modelo:



Na coluna A temos nomes e na coluna B sobrenomes. 

Vamos mapear a última célula da coluna A.

let w = workbook.getActiveWorksheet()

let ultcel = w.getCell(w.getRange().getRowCount() - 1, 0).getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex()

console.log(ultcel)

A variável w foi mapeada para a planilha ativa (getActiveWorksheet).

O método acima posiciona o curso na última célula da coluna A (coluna zero, pois o índice de contagem de linhas e colunas no Office Script começa em zero, e não em 1 como no VBA) e, em seguida utilizando o método getRangeEdge dispara a ação KeyboardDirection.up para mapear a última célula.

O último método: getRowIndex permite capturar o número da linha da última célula com dados.

O resultado para essa operação é 18 (observe o resultado na região de console do print abaixo).



A vantagem deste método é que, mesmo havendo células em branco na planilha, o valor sempre mapeará a última célula da coluna.

Vamos ao exemplo 2!

Utilizando os mesmos dados, vou alterar o código:

let w = workbook.getActiveWorksheet() //Mapeamos a planilha ativa

let ultcel = w.getCell(0, 0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex()

console.log(ultcel)

O resultado do código acima, conforme comprovado com o print abaixo, indica 12... Isso aconteceu devido a célula A14 estar em branco.



Apesar de ser mais simples na escrita, a desvantagem é que células em branco entre os dados atrapalham o mapeamento.

No próximo artigo, vou mostrar uma técnica para gravar vários registros de uma única vez na planilha. Para não perder o artigo, siga o blog ou minhas redes sociais clicando aqui.

Agora é sua vez... Pratique um pouco e escreva os dois códigos (não vale copiar e colar!). 
Dessa forma você conseguirá comprovar a técnica...

Que assunto gostaria que eu escrevesse no próximo artigo?
Deixe sua sugestão nos comentários!

Grande abraço, obrigado pela leitura e não deixe de conferir o curso OFFICE SCRIPT FUNDAMENTOS que lancei em 2022. Ele está disponível em meu portal de treinamentos (clique aqui) ou na Udemy (clique aqui).
Para cupons de desconto na Udemy, confira esse outro artigo que escrevi e é atualizado mensalmente com promoções (clique aqui).

✔ Para acesso ao conteúdo programático do curso clique aqui.



Convido você a ler outros artigos que já escrevi sobre o Office Script:


Até o próximo artigo!



Alessandro Trovato
Compartilhando conhecimento, sempre!


#typescript #officescript #excelonline #excelscript #trovato #mvp #mvpbr #cursostrovato #if #elseif

Mais vendidos Amazon

Postagem Anterior Próxima Postagem