Fórmula do Excel: intervalo nomeado dinâmico com INDEX -

Índice

Fórmula genérica

=$A$1:INDEX($A:$A,lastrow)

Resumo

Uma maneira de criar um intervalo nomeado dinâmico no Excel é usar a função INDEX. No exemplo mostrado, o intervalo nomeado "dados" é definido pela seguinte fórmula:

=$A$2:INDEX($A:$A,COUNTA($A:$A))

que resulta no intervalo $ A $ 2: $ A $ 10.

Nota: esta fórmula se destina a definir um intervalo nomeado que pode ser usado em outras fórmulas.

Explicação

Esta página mostra um exemplo de um intervalo nomeado dinâmico criado com a função INDEX junto com a função CONT.valores. Os intervalos nomeados dinâmicos se expandem e contraem automaticamente quando os dados são adicionados ou removidos. Eles são uma alternativa ao uso de uma tabela do Excel, que também é redimensionada conforme os dados são adicionados ou removidos.

A função INDEX retorna o valor em uma determinada posição em um intervalo ou matriz. Você pode usar INDEX para recuperar valores individuais ou linhas e colunas inteiras em um intervalo. O que torna INDEX especialmente útil para intervalos nomeados dinâmicos é que ele realmente retorna uma referência. Isso significa que você pode usar INDEX para construir uma referência mista como $ A $ 1: A100.

No exemplo mostrado, o intervalo nomeado "dados" é definido pela seguinte fórmula:

=$A$2:INDEX($A:$A,COUNTA($A:$A))

que resulta no intervalo $ A $ 2: $ A $ 10.

Como essa fórmula funciona

Observe primeiro que essa fórmula é composta de duas partes que ficam de cada lado do operador de intervalo (:). À esquerda, temos a referência inicial para o intervalo, codificada como:

$A$2

À direita está a referência final para o intervalo, criado com INDEX como este:

INDEX($A:$A,COUNTA($A:$A))

Aqui, alimentamos INDEX com toda a coluna A do array e, em seguida, usamos a função CONT.valores para descobrir a "última linha" no intervalo. COUNTA funciona bem aqui porque há 10 valores na coluna A, incluindo uma linha de cabeçalho. COUNTA, portanto, retorna 10, que vai diretamente para INDEX como o número da linha. INDEX então retorna uma referência a $ A $ 10, a última linha usada no intervalo:

INDEX($A:$A,10) // resolves to $A$10

Portanto, o resultado final da fórmula é este intervalo:

$A$2:$A$10

Uma gama bidimensional

O exemplo acima funciona para um intervalo unidimensional. Para criar um intervalo dinâmico bidimensional em que o número de colunas também seja dinâmico, você pode usar a mesma abordagem, expandida desta forma:

=$A$2:INDEX($1:$1048576,COUNTA($A:$A),COUNTA($1:$1))

Como antes, COUNTA é usado para descobrir o "lastrow" e usamos COUNTA novamente para obter a "última coluna". Eles são fornecidos para indexar como row_num e column_num respectivamente.

No entanto, para a matriz, fornecemos a planilha completa, inserida como todas as 1048576 linhas, o que permite que INDEX retorne uma referência em um espaço 2D.

Observação: o Excel 2003 oferece suporte a apenas 65535 linhas.

Determinando a última linha

Existem várias maneiras de determinar a última linha (última posição relativa) em um conjunto de dados, dependendo da estrutura e do conteúdo dos dados na planilha:

  • Última linha em dados mistos com espaços em branco
  • Última linha em dados mistos sem espaços em branco
  • Última linha nos dados de texto
  • Última linha em dados numéricos

Bons links

The Imposing INDEX (artigo fantástico de Daniel Ferry)

Artigos interessantes...