Office Script - Maneiras de mapear uma última célula

Imagem como o texto em destaque sobre o Office Script

Olá, seguidor e seguidora do blog!

Neste sexto artigo do retomo um tema que tem sempre me desafiado: o Office Script.

Desta vez não vamos tratar deu um assunto complexo, mas funcional. Algo que precisamos fazer em diversas das nossas rotinas: mapear a última célula com conteúdo de uma coluna.

Se você é um usuário do VBA, o comando que utilizando para fazer o mapeamento é:

w.Cells(w.Rows.count, 1).end(xlup)

Onde:

w - é uma variável mapeada para uma planilha da pasta de trabalho;
Cells - Conjuntos de células da planilha
Rows.count - total de linhas da planilha ou 1.048.576 nas versões a partir da 2007.
1 - coluna A, onde vamos verificar a última célula preenchida com conteúdo.
.end(xlup) - Similar ao CTRL + Seta para cima, para mapear a última célula com conteúdo.

Traduzindo tudo isso: A instrução situa o cursor na última célula da coluna A (A1048576) e aplica um CTRL + Seta para cima, parando o curso na última célula preenchida com dados.

Agora é a vez de fazer isso no Office Script.

Monte sua planilha com a estrutura abaixo:

Print alternativo com 11 nomes e uma linha de título para teste do script

Agora, no seu script, crie a função abaixo:

function main(workbook: ExcelScript.Workbook) {
    let w = workbook.getActiveWorksheet() //Mapeamos a planilha ativa
    let ultCel = w.getCell(00).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex()

    console.log(ultcel)
}

Na primeira linha, mapeamos a variável w para a planilha ativa (getActiveWorksheet).

Na segunda linha, mapeamos a variável ultCel. Essa variável não vai guardar a referência da célula mapeada, mas somente o número da linha que está com o último conteúdo. 

Olhando a instrução com detalhes:

getCell(0,0) - Captura a referência da célula A1. Lembre-se que no Office Script, a primeira linha e a primeira coluna começam a contar com o número 0 (zero).

getRangeEdge - Método para definir e obter o intervalo selecionado na API Javascript do Excel (documentação Microsoft)

ExcelScript.KeyboardDirection.down - É como se utilizássemos o CTRL + Seta para baixo para navegar entre as células com conteúdo a partir de A1. Parando na última célula com dados.

getRowIndex - Captura o número da linha da célula ativa (mapeada como sendo a última célula com conteúdo).

A única desvantagem desse método é que, se houver alguma linha ou célula em branco na coluna A, a célula imediatamente acima será mapeada como última célula.

Ao executarmos o código acima, no console será informada a linha 10 (olhe a imagem das células, apesar do número da linha ser a 11, o resultado é 10 devido a base 0 (zero)).

Para não ter esse problema no momento do mapeamento, utilizo essa instrução com uma pequena alteração. Eu mapeio a última célula da planilha e utilizo o deslocamento para cima. Dessa forma, a última célula preenchida da coluna será mapeada.
 
let ultCel = w2.getCell(w.getRange().getRowCount() - 10).getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex();

A mudança no código é a referência da célula base: ao invés de mapear a célula A1, usamos o código w.getRange().getRowCount() que retorna 1048576. O menos 1 (-1) da fórmula é utilizado para compensar a base 0 e retornar o mesmo resultado anterior: 10.

Se você quer mais informações e um curso para seguir para aprender a utilizar o Office Scripts, tenho um curso completo em meu portal. Um excelente meio de entrar para o mundo do desenvolvimento de Scripts para sua planilha Online.

Utilize o cupom: ARTIGOTROVATO e ganhe um desconto de 30% no valor do curso. Esse cupom deve ser utilizado na hora do pagamento e é exclusivo para você que leu o artigo e acompanha meus trabalhos por aqui. 

Você não vai ver a divulgação deste cupom em lugar nenhum mais.

Clique aqui para adquirir o curso com 30% de desconto.


Agora é sua vez... Pratique um pouco e escreva o código deste artigo (Não vale copiar e colar!). 

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

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

Imagem com uma representação do Office Script

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 #excelonlinescript




Mais vendidos Amazon





Postagem Anterior Próxima Postagem