Olá, seguidor e seguidora do blog!
Neste sexto artigo do retomo um tema que tem sempre me desafiado: o Office
Script.
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.
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 é:
mapeamento é:
w.Cells(w.Rows.count, 1).end(xlup)
Onde:
w – é uma variável mapeada para uma planilha da pasta de
trabalho;
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.
partir da 2007.
1 – coluna A, onde vamos verificar a última célula preenchida com
conteúdo.
conteúdo.
.end(xlup) – Similar ao CTRL + Seta para cima, para mapear a última
célula com conteúdo.
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.
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:
function main(workbook: ExcelScript.Workbook) {
let w = workbook.getActiveWorksheet() //Mapeamos a planilha ativa
let ultCel = w.getCell(0, 0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex()
console.log(ultcel)
}
Na primeira linha, mapeamos a variável w para a planilha ativa
(getActiveWorksheet).
(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.
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).
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)
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.
+ 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).
(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.
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)).
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.
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() – 1, 0).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.
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.
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.
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.
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.
Convido você a ler outros artigos que já escrevi sobre
o Office Script:
Office Script | TypeScript – Método reduce para array
(dica)
Office Script | TypeScript – Método reduceRight para array
Office Script | Que tal estudar esta tecnologia agora?
Office Script | Estrutura de decisão IF … ELSE IF … ELSE
… – Artigo 1
(dica)
Office Script | TypeScript – Método reduceRight para array
Office Script | Que tal estudar esta tecnologia agora?
Office Script | Estrutura de decisão IF … ELSE IF … ELSE
… – Artigo 1
Office Script | Estrutura de decisão IF … ELSE IF … ELSE
… – Artigo 2
Office Script | Estrutura de decisão SWITCH … CASE – Artigo 1
… – Artigo 2
Office Script | Estrutura de decisão SWITCH … CASE – Artigo 1