Olá, seguidor e seguidora do blog!
Em mais um artigo sobre o Office Script, vamos aprender como selecionar
múltiplas células de uma planilha no Excel Online utilizando uma variável do
tipo Array.
Se você não viu ainda o artigo anterior, deixo
aqui o link
para você acessá-lo e saber um pouco mais o que é um array!
No ambiente web, métodos tradicionais de análise do conteúdo das células
podem ser muito lentos ou simplesmente impossíveis de serem executados, por
isso devemos aprender a trabalhar com o que o ambiente nos oferece.
No Office Script, é possível utilizar um array Multidimensional para
manipular faixas de células, desde a sua associação com o array, quando à
colocação desses dados de volta na planilha. Rotinas inteiras podem ser
escritas para fazer análise em arrays (e uma rotina dessas será tema do
próximo artigo).
Nossa estrutura dos dados
Na Planilha2 há 6.529 linhas com nomes e sobrenomes e o objetivo é exportar todos esses dados para a Planilha1. O botão que você vê ao lado dos dados foi inserido a partir do código pronto...
O código completo e em negrito a parte principal do código:
let w1 = workbook.getWorksheet('Planilha1');
let w2 = workbook.getWorksheet('Planilha2');
let i:number;
let ln:number = 0;
let col:number = 0;
let ultCel = w2.getCell(w2.getRange().getRowCount() - 1, 0).getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex() + 1;
w1.getRange("A:B").getEntireColumn().delete
w1.getCell(ln, col).select()
let rows: (string | boolean | number)[][] = []
rows = w2.getRange("A1:B" + ultCel).getValues()
const range = w1.getCell(ln,col).getResizedRange(rows.length-1,rows[0].length-1)
range.setValues(rows)
O que mais chama a atenção neste caso é o conteúdo entre os parênteses.
Literalmente estamos orientando o Office Script que nosso array pode
receber valores dos tipos string (texto), boolean (lógico) e number
(números). Assim, nosso type annotation não tem apenas um tipo único de
dados, mas sim uma variedade.
Se você quiser que ele armazene apenas textos e números, poderia mudar
o interior da declaração nos parênteses para (string | number) que
funcionaria!
O trecho rows = w2.getRange("A1:B" + ultCel).getValues()
atribui a variável rows o conteúdo das células A1 até B6529.
Não importa se são poucas linhas e colunas ou muitas que a atribuição
será feita de uma única vez. A variável ultCel foi declarada
no início do código e representa a última linha com dados da
Planilha2.
const range = w1.getCell(ln,col).getResizedRange(rows.length-1,rows[0].length-1)
Este trecho cria uma variável do tipo const (constante) e dimensiona a
faixa de células da Planilha1 (w1) que receberá os dados. A
região de destino deve ser exatamente igual (em tamanho). Se não forem,
você receberá um erro em tempo de execução.
range.setValues(rows)
Por fim, este trecho faz a gravação (setValues) dos valores (rows) na faixa definida na constante range.
Não é complicado entender o processo e, em meu curso do Office Scripts em meu portal, há muito material complementar de como você pode trabalhar com arrays. Há dezenas de métodos diferentes que fazem com que seu código, rode muito mais eficientemente.
Por fim, este trecho faz a gravação (setValues) dos valores (rows) na faixa definida na constante range.
Não é complicado entender o processo e, em meu curso do Office Scripts em meu portal, há muito material complementar de como você pode trabalhar com arrays. Há dezenas de métodos diferentes que fazem com que seu código, rode muito mais eficientemente.
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.

Convido você a ler outros artigos que já escrevi sobre o Office Script:
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
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
Office Script | Estrutura de decisão SWITCH ... CASE - Artigo 1
Até o próximo artigo!
Alessandro Trovato
Compartilhando conhecimento, sempre!
#typescript #officescript #excelonline #excelscript #trovato #mvp #mvpbr #cursostrovato #if #elseif #excelonlinescript