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:
- clique com o botão direito do mouse no nome da guia próximo à parte inferior da janela do Excel
- selecione Exibir código - isso abre uma janela do VBE
- 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:
- abrir as janelas do VBE como acima
- limpe o código
- feche a janela do VBE
Para saber mais sobre macros em geral, consulte:
e
Para saber mais sobre macros de eventos (código da planilha), consulte:
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