Pessoal, não achei isso no fórum.
Intervalo dinâmico com DESLOC já é bem conhecido, e com ÍNDICE, o nosso amigo Fernando também já apresentou a pouco tempo no fórum.
Vide os links:
Intervalo Dinâmico com DESLOC
Intervalo Dinâmico com ÍNDICE
Porém, por acaso, percebi que poderia fazer intervalo dinâmico com INDIRETO.
E para que, então, usar INDIRETO?
Bom, a resposta, na verdade, eu não tenho, mas acredito que seja mais rápido do que ÍNDICE ou DESLOC.
Para referenciar apenas uma coluna, creio que seja até mais simples.
Vejamos, se eu fizesse o intervalo dinâmico de uma lista na coluna A, usando DESLOC, seria algo assim:
=DESLOC($A$1;0;0;CONT.VALORES($A:$A))
Se fosse com ÍNDICE, seria assim:
=$A$1:ÍNDICE($A:$A;CONT.VALORES($A:$A);1)
E com INDIRETO:
=INDIRETO("A1:A"&CONT.VALORES($A:$A))
A mesma lógica, porém, como temos menos informações para serem processadas ao usar INDIRETO, creio que deva ser mais rápido.
Se eu quiser estabelecer uma matriz com várias colunas, também é possível, basta indicar as colunas, por exemplo, da coluna B até a coluna G:
=INDIRETO("B1:G"&CONT.VALORES($A:$A))
Eu apenas não achei uma forma legal de estabelecer um intervalo dinâmico, que seja dinâmico para linhas e colunas.
É possível fazer, aninhando funções como SE + CARACT + INT + MOD.
Enfim, só por ai dá pra ver que não vale a pena, mas, a título de curiosidade, segue a fórmula:
=INDIRETO("A1:"&SE(CONT.VALORES(1:1)-1<26;CARACT(MOD(CONT.VALORES($1:$1)-1;26)+65);SE(CONT.VALORES(1:1)-1<((26*26)+26);CARACT(SE(INT(((CONT.VALORES($1:$1)-1)-26)/26)<26;INT(((CONT.VALORES($1:$1)-1)-26)/26);MOD(INT(((CONT.VALORES($1:$1)-1)-26)/26);26))+65)&CARACT(MOD(CONT.VALORES($1:$1)-1;26)+65);CARACT(SE(INT(((CONT.VALORES($1:$1)-1)-((26*26)+26))/(26*26))<26;INT(((CONT.VALORES($1:$1)-1)-((26*26)+26))/(26*26));MOD(INT(((CONT.VALORES($1:$1)-1)-((26*26)+26))/(26*26));26))+65)&CARACT(SE(INT(((CONT.VALORES($1:$1)-1)-26)/26)<26;INT(((CONT.VALORES($1:$1)-1)-26)/26);MOD(INT(((CONT.VALORES($1:$1)-1)-26)/26);26))+65)&CARACT(MOD(CONT.VALORES($1:$1)-1;26)+65)))&CONT.VALORES($A:$A))
É enorme, e, como eu disse acima, totalmente inviável. Coloquei apenas a título de curiosidade mesmo. (Claro que poderia reduzir um pouco, mas fiz questão de deixar dessa forma para ficar bem visual os valores como 26 - as letras de A a Z, e o número 65 - o código para a letra A).
Bem, resumindo, Quando fizer intervalo dinâmico daqui pra frente, se tiver uma coluna única (ou colunas fixas), vou dar a preferência para INDIRETO, se tiver colunas variáveis, vou preferir DESLOC.
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Postado : 05/02/2014 11:37 pm