O nome de um intervalo nomeado pode ser dinâmico?

2

Gostaria que o nome de um intervalo nomeado no Excel fosse dinâmico (ao contrário para o intervalo em si!). Eu gostaria de saber se / como eu posso definir um intervalo nome usando uma fórmula ou célula de referência, para que o nome mude quando o conteúdo da célula de referência é alterado.

Por exemplo, se eu escrever uma lista em uma coluna e escrever o título da lista no topo da coluna da seguinte forma:

     A
1 *Colours*
2  Red
3  Yellow
4  Blue

Em seguida, nomeie o intervalo de células da lista (A2: A4) após o título de na lista (A1), eu quero que o nome do intervalo mude automaticamente se o título de uma lista é alterado (por exemplo, Nome do intervalo = A1 e o nome muda se o conteúdo de A1 mudar).

Informações adicionais sobre meu caso específico: estou usando intervalos nomeados para criar várias listas suspensas dependentes e dinâmicas em um excel planilha que é para alguém usar. Está tudo pronto para que se o usuário deseja adicionar itens a listas existentes (nas listas de suporte planilha), em seguida, as listas suspensas (na planilha da tabela principal) mudar automaticamente. No entanto, meu próximo desafio é facilitar para o usuário adicionar novas listas. Meu plano é fornecer lista de reposição colunas (na planilha de listas de suporte) já configuradas para que quando estiver preenchido, ele será automaticamente convertido em uma lista suspensa (na planilha da tabela principal). Toda a validação de dados as fórmulas (usando intervalos nomeados) são configuradas para criar as listas suspensas na planilha da tabela principal, a etapa ausente é a nomenclatura automática da lista varia quando o usuário insere um novo título de lista. Meus dados As fórmulas de validação precisam usar intervalos nomeados porque as listas suspensas mostradas na tabela principal dependem das seleções anteriores dos usuários.

Eu ficaria muito grato por qualquer dica!

    
por Joanna McMillan 27.11.2013 / 16:49

1 resposta

2

Isso pressupõe que o valor em A1 será inserido em vez de definido por uma fórmula. Digite a seguinte macro de eventos na área de código da planilha:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String
    str = Range("A1").Text
    If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub
    Dim n As Name
    For Each n In ActiveWorkbook.Names
        If n.RefersTo = "=Sheet1!$A$2:$A$4" Then
            n.Delete
        End If
    Next n
    ActiveWorkbook.Names.Add Name:=str, RefersTo:="=Sheet1!$A$2:$A$4"
End Sub

Por ser um código de planilha, é muito fácil de instalar e usar automaticamente:

  1. clique com o botão direito do mouse no nome da guia próximo à parte inferior da janela do Excel
  2. selecione Exibir código - isso abre uma janela do VBE
  3. cole o material e feche a janela do VBE

Se você tiver alguma dúvida, tente primeiro em uma planilha de teste.

Se você salvar a pasta de trabalho, a macro será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx

Para remover a macro:

  1. abrir as janelas do VBE como acima
  2. limpe o código
  3. feche a janela do VBE

Para saber mais sobre macros em geral, consulte:

link

e

link

Para saber mais sobre macros de eventos (código da planilha), consulte:

link

As macros devem estar ativadas para que isso funcione !

EDIT # 1 :

para usar A1 & B1 como o nome, apenas substitua:

str = Range("A1").Text

com:

str = Range("A1").Text & Range("B1").Text
    
por 27.11.2013 / 18:32