
Preciso de uma fórmula para usar o endereço da célula e retornar o nome definido pela célula, ou seja
=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))
Preciso que isso ADDRESS(ROW(),COLUMN()
se refira ao nome definido na célula atual
, ou seja, "vendas" e não$A$1
Responder1
Eu encontrei uma solução rápida, embora reconhecidamente um pouco limitada.
- faça uma lista de colagem de todos os nomes definidos em uma área limpa de uma planilha.
- A fórmula a seguir criará uma string semelhante ao endereço de célula totalmente qualificado que você está procurando, combinando-o na lista e retornando o nome da célula da coluna adjacente =INDEX(NameList,MATCH("='"&SUBSTITUTE(CELL(" nome do arquivo"),"nome_do_arquivo_totalmente_qualificado","")&"'!"&CELL("endereço"),NomeReferências,0))
Obviamente, está limitado a nomes que apontam para uma única célula, mas pode ser estendido para pesquisar intervalos de células.
Funciona para mim porque o nome da célula que exibe os dados é o nome do campo de dados, então não importa onde eu coloque, a referência estará sempre correta.
Enquanto trabalho no projeto, incluí uma instrução em uma macro executada com frequência que atualiza a lista de Nomes para mantê-la atualizada.
Responder2
Não posso receber o crédito por escrever este código, mas ele faz exatamente o que você precisa. Eu precisava do mesmo recurso há alguns anos e me deparei com esse código em algum lugar do ciberespaço, talvez o tenha modificado um pouco, mas não consigo me lembrar de nenhuma maneira. Funcionou muito bem para mim.
Funciona assim:
- Cole o código abaixo em um módulo VBA de uma pasta de trabalho habilitada para macro do Excel (*.xlsm).
- Em seguida, digite em uma célula da planilha do Excel algo como "=CellName(F19)" e retornará algo como "rngSomeNamedCell".
Aqui está o código:
Public Function CellName(cel As Range) As Variant
Dim nm As Name
For Each nm In Names
If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
CellName = nm.Name
Exit Function
End If
Next
CellName = CVErr(xlErrNA)
End Function
Responder3
Não acredito que exista uma função integrada do Excel que faça isso. Você poderia usar uma função definida pelo usuário para retornar o nome da célula.
As duas funções abaixo retornarão o nome da célula. Um usa uma referência de célula, o outro usa uma linha e uma coluna. Ambos estão configurados apenas para funcionar na planilha local no momento, mas você pode adicionar uma variável opcional para obter um nome de planilha, se necessário.
A primeira função seria chamada com=cell_name()
Gordon
Function cell_name() As String
dim rng as Range
On Error Resume Next
set rng = activeCell
If Len(rng.Name.Name) < 0 Then
cell_name = "No named Range"
Exit Function
End If
cell_name = rng.Name.Name
if instr("cell_name","!")>0 then
cell_name = Right(cell_name, Len(cell_name) - InStr(cell_name, "!"))
end if
End Function
a segunda função retorna o nome da célula de uma determinada linha e coluna
Function cell_name2(r As Long, c As Long) As String
Dim rng As Range
Set rng = Cells(r, c)
On Error Resume Next
If Len(rng.Name.Name) < 0 Then
cell_name = "No named Range"
Exit Function
End If
cell_name2 = rng.Name.Name
End Function
Editada a primeira função para funcionar na célula ativa.