Nome definido da célula de retorno da fórmula

0

Eu preciso de uma fórmula para usar o endereço da célula e retornar o nome definido da célula, ou seja,

=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))

Eu preciso desse ADDRESS(ROW(),COLUMN() para se referir ao nome definido da célula atual
ou seja, "vendas" e não $A$1

    
por 2ool 04.12.2013 / 12:00

3 respostas

1

Não posso receber crédito por escrever este código, mas ele faz exatamente o que você precisa. Eu precisava do mesmo recurso alguns anos atrás, e topei com esse código em algum lugar no ciberespaço, talvez modifiquei um pouco, mas não me lembro de nenhuma das duas formas. Funcionou muito bem para mim.

Funciona assim:

  1. Cole o código abaixo em um módulo VBA de uma pasta de trabalho habilitada para macros do Excel (* .xlsm).
  2. Em seguida, digite em uma célula da planilha do Excel algo como "= CellName (F19)" e ele 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
    
por 11.11.2015 / 17:08
0

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 leva uma referência de célula, o outro leva uma linha e coluna. Ambos estão configurados para trabalhar na planilha local agora, 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

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

Primeira função editada para trabalhar na célula ativa.

    
por 04.12.2013 / 18:05
0

Eu descobri uma solução rápida, embora, reconhecidamente, um pouco limitada.

  1. faça uma lista de pastas de todos os nomes definidos em uma área livre de uma planilha.
  2. A fórmula a seguir criará uma string parecida com o endereço de célula totalmente qualificado que você está procurando, correspondendo-a à lista e retornando o nome da célula da coluna adjacente = INDEX (NameList, MATCH ("= '" & SUBSTITUTE (CELL ("nome de arquivo"), "fully_qualified_filename", "") & "'!" & CELL ("endereço"), NameReferences, 0))

É obviamente 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, portanto, não importa onde eu os coloque, a referência sempre estará correta.

Enquanto estou trabalhando no projeto, incluí uma instrução em uma macro frequentemente executada que atualiza a lista Nomes para mantê-la atualizada.

    
por 28.07.2015 / 21:46