Use nomes de intervalo dinâmico no Excel para listas suspensas flexíveis

As planilhas do Excel(Excel) geralmente incluem listas suspensas de células para simplificar e/ou padronizar a entrada de dados. Esses menus suspensos são criados usando o recurso de validação de dados para especificar uma lista de entradas permitidas.

Para configurar uma lista suspensa simples, selecione a célula onde os dados serão inseridos, clique em Validação de Dados(Data Validation) (na guia Dados ), selecione (Data)Validação de Dados(Data Validation) , escolha Lista(List) (em Permitir(Allow) :) e insira os itens da lista (separados por vírgulas ) no campo Source : (veja a Figura 1).

Nesse tipo de menu suspenso básico, a lista de entradas permitidas é especificada na própria validação de dados; portanto, para fazer alterações na lista, o usuário deve abrir e editar a validação dos dados. Isso pode ser difícil, no entanto, para usuários inexperientes ou em casos em que a lista de opções é longa.

Outra opção é colocar a lista em um intervalo nomeado dentro da planilha(named range within the spreadsheet) e, em seguida, especificar esse nome de intervalo (prefaciado com um sinal de igual) no campo Source : da validação de dados (como mostrado na Figura 2(Figure 2) ).

Esse segundo método facilita a edição das opções na lista, mas adicionar ou remover itens pode ser problemático. Como o intervalo nomeado ( FruitChoices , em nosso exemplo) se refere a um intervalo fixo de células ($H$3:$H$10 como mostrado), se mais opções forem adicionadas às células H11 ou abaixo, elas não aparecerão no menu suspenso (já que essas células não fazem parte do intervalo FruitChoices ).

Da mesma forma, se, por exemplo, as entradas Peras(Pears) e Morangos(Strawberries) forem apagadas, elas não aparecerão mais no menu suspenso, mas o menu suspenso incluirá duas opções "vazias", pois o menu suspenso ainda faz referência a todo o intervalo FruitChoices, incluindo as células vazias H9 e H10 .

Por esses motivos, ao usar um intervalo nomeado normal como fonte de lista para uma lista suspensa, o próprio intervalo nomeado deve ser editado para incluir mais ou menos células se as entradas forem adicionadas ou excluídas da lista.

Uma solução para esse problema é usar um nome de intervalo dinâmico(dynamic) como a origem das opções suspensas. Um nome de intervalo dinâmico é aquele que se expande (ou se contrai) automaticamente para corresponder exatamente ao tamanho de um bloco de dados à medida que as entradas são adicionadas ou removidas. Para fazer isso, você usa uma fórmula(formula) , em vez de um intervalo fixo de endereços de células, para definir o intervalo nomeado.

Como configurar um intervalo dinâmico(Dynamic Range) no Excel

Um nome de intervalo normal (estático) refere-se a um intervalo especificado de células ($H$3:$H$10 em nosso exemplo, veja abaixo):

Mas um intervalo dinâmico é definido usando uma fórmula (veja abaixo, retirada de uma planilha separada que usa nomes de intervalo dinâmico):

Antes de começarmos, certifique-se de baixar nosso arquivo de exemplo do Excel  (as macros de classificação foram desabilitadas).

Vamos examinar essa fórmula em detalhes. As opções para Frutas estão em um bloco de células diretamente abaixo de um título ( FRUTAS(FRUITS) ). Esse título também recebe um nome: FruitsHeading :

A fórmula inteira usada para definir o intervalo dinâmico para as opções de Frutas é:(Fruits)

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

FruitsHeading refere-se ao título que está uma linha acima da primeira entrada na lista. O número 20 (usado duas vezes na fórmula) é o tamanho máximo (número de linhas) para a lista (isso pode ser ajustado conforme desejado).

Observe que, neste exemplo, há apenas 8 entradas na lista, mas também há células vazias abaixo delas, onde entradas adicionais podem ser adicionadas. O número 20 refere-se ao bloco inteiro onde as entradas podem ser feitas, não ao número real de entradas.

Agora vamos dividir a fórmula em partes (codificando cada parte por cores), para entender como ela funciona:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

A peça “mais interna” é OFFSET(FruitsHeading,1,0,20,1) . Isso faz referência ao bloco de 20 células (abaixo da célula FruitsHeading ) onde as opções podem ser inseridas. Esta função OFFSET basicamente diz: Comece na célula FruitsHeading , desça 1 linha e mais de 0 colunas, depois selecione uma área com 20 linhas de comprimento e 1 coluna de largura. Isso nos dá o bloco de 20 linhas onde as opções de Frutas(Fruits) são inseridas.

A próxima parte da fórmula é a função ISBLANK :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(the above),0,0),0)-1,20),1)

Aqui, a função OFFSET (explicada acima) foi substituída por “a acima” (para facilitar a leitura). Mas a função ISBLANK está operando no intervalo de 20 linhas de células que define a função OFFSET .

ISBLANK então cria um conjunto de 20 valores TRUE e FALSE , indicando se cada uma das células individuais no intervalo de 20 linhas referenciado pela função OFFSET está em branco (vazio) ou não. Neste exemplo, os primeiros 8 valores no conjunto serão FALSE , pois as primeiras 8 células não estão vazias e os últimos 12 valores serão TRUE .

A próxima parte da fórmula é a função INDEX :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(the above,0,0),0)-1,20),1)

Novamente, “o acima” refere-se às funções ISBLANK e OFFSET descritas acima. A função INDEX retorna um array contendo os 20 valores TRUE / FALSE criados pela função ISBLANK .

INDEX é normalmente usado para selecionar um determinado valor (ou intervalo de valores) de um bloco de dados, especificando uma determinada linha e coluna (dentro desse bloco). Mas definir as entradas de linha e coluna para zero (como é feito aqui) faz com que INDEX retorne uma matriz contendo todo o bloco de dados.

A próxima parte da fórmula é a função MATCH :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,the above,0)-1,20),1)

A função MATCH retorna a posição do primeiro valor TRUE , dentro da matriz que é retornada pela função INDEX . Como as primeiras 8 entradas na lista não estão em branco, os primeiros 8 valores na matriz serão FALSE e o nono valor será TRUE (já que a 9ª linha do intervalo está vazia).

Assim, a função MATCH retornará o valor de 9 . Neste caso, no entanto, realmente queremos saber quantas entradas estão na lista, então a fórmula subtrai 1 do valor MATCH (que dá a posição da última entrada). Então, finalmente, MATCH ( TRUE , o acima, 0)-1 retorna o valor de 8 .

A próxima parte da fórmula é a função SEERRO(IFERROR) :

=OFFSET(FruitsHeading,1,0,IFERROR(the above,20),1)

A função SEERRO(IFERROR) retorna um valor alternativo, se o primeiro valor especificado resultar em um erro. Esta função está incluída, pois, se todo o bloco de células (todas as 20 linhas) estiver preenchido com entradas, a função MATCH retornará um erro.

Isso ocorre porque estamos dizendo à função MATCH para procurar o primeiro valor TRUE (na matriz de valores da função ISBLANK ), mas se NENHUMA(NONE) das células estiver vazia, a matriz inteira será preenchida com valores FALSE . Se MATCH não puder encontrar o valor alvo ( TRUE ) no array que está procurando, ele retornará um erro.

Portanto, se a lista inteira estiver cheia (e, portanto, MATCH retornar um erro), a função SEERRO(IFERROR) retornará o valor 20 (sabendo que deve haver 20 entradas na lista).

Finalmente, OFFSET(FruitsHeading,1,0,the above,1) retorna o intervalo que estamos realmente procurando: Comece na célula FruitsHeading , desça 1 linha e mais de 0 colunas e selecione uma área que tenha quantas linhas há entradas na lista (e 1 coluna de largura). Portanto, a fórmula inteira em conjunto retornará o intervalo que contém apenas as entradas reais (até a primeira célula vazia).

Usar esta fórmula para definir o intervalo que é a origem da lista suspensa significa que você pode editar livremente a lista (adicionando ou removendo entradas, desde que as entradas restantes comecem na célula superior e sejam contíguas) e a lista suspensa sempre refletirá o atual lista (veja a Figura 6(Figure 6) ).

O arquivo de exemplo (Listas Dinâmicas) usado aqui está incluído e pode ser baixado neste site. As macros não funcionam, no entanto, porque o WordPress não gosta de livros do Excel(Excel) com macros neles.

Como alternativa para especificar o número de linhas no bloco de lista, o bloco de lista pode receber seu próprio nome de intervalo, que pode ser usado em uma fórmula modificada. No arquivo de exemplo, uma segunda lista ( Names ) usa esse método. Aqui, todo o bloco de lista (abaixo do cabeçalho “NAMES”, 40 linhas no arquivo de exemplo) recebe o nome do intervalo NameBlock . A fórmula alternativa para definir a NamesList é então:

=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),1)

onde NamesBlock substitui OFFSET ( FruitsHeading,1,0,20,1 ) e ROWS(NamesBlock) substitui o 20 (número de linhas) na fórmula anterior.

Portanto, para listas suspensas que podem ser facilmente editadas (inclusive por outros usuários que podem ser inexperientes), tente usar nomes de intervalo dinâmico! E observe que, embora este artigo tenha sido focado em listas suspensas, os nomes de intervalo dinâmico podem ser usados ​​em qualquer lugar que você precise fazer referência a um intervalo ou lista que pode variar em tamanho. Aproveitar!



About the author

Sou um especialista em computadores com mais de 10 anos de experiência e me especializei em ajudar as pessoas a gerenciar seus computadores em seus escritórios. Escrevi artigos sobre tópicos como otimizar sua conexão com a Internet, como configurar um computador para a melhor experiência de jogo e muito mais. Se você está procurando ajuda com qualquer coisa relacionada ao seu trabalho ou vida pessoal, eu sou a pessoa para você!



Related posts