Nombre definido de la celda de retorno de fórmula

Nombre definido de la celda de retorno de fórmula

Necesito una fórmula para usar la dirección de la celda y devolver el nombre definido de la celda, es decir

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

Necesito que esto ADDRESS(ROW(),COLUMN()se refiera al nombre definido de la celda actual
, es decir, "ventas" y no$A$1

Respuesta1

Se me ocurrió una solución rápida, aunque hay que reconocer que un poco limitada.

  1. haga una Lista de pegado de todos los nombres definidos en un área clara de una hoja.
  2. La siguiente fórmula creará una cadena que se asemeja a la dirección de celda completa que está buscando, la hará coincidir en la lista y devolverá el nombre de la celda de la columna adyacente =INDEX(NameList,MATCH("='"&SUBSTITUTE(CELL(" nombre de archivo"),"nombre_de_archivo_completamente_calificado","")&"'!"&CELL("dirección"),NombreReferencias,0))

Obviamente, está limitado a nombres que apuntan a una sola celda, pero podría ampliarse para buscar rangos de celdas.

A mí me funciona porque el nombre de la celda que muestra los datos es el nombre del campo de datos, por lo que no importa dónde lo ponga, la referencia siempre será correcta.

Mientras trabajo en el proyecto, incluí una declaración en una macro que se ejecuta con frecuencia y que actualiza la lista de Nombres para mantenerla actualizada.

Respuesta2

No puedo atribuirme el mérito de haber escrito este código, pero hace precisamente lo que necesita. Necesitaba la misma característica hace algunos años y me topé con este código en algún lugar del ciberespacio, tal vez lo modifiqué un poco, pero no lo recuerdo de ninguna manera. A mí me ha funcionado muy bien.

Funciona así:

  1. Pegue el siguiente código en un módulo VBA de un libro de Excel habilitado para macros (*.xlsm).
  2. Luego, escriba en una celda de una hoja de cálculo de Excel algo como "=NombreCelda(F19)" y devolverá algo como "rngSomeNamedCell".

Aquí está el 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

Respuesta3

No creo que exista una función de Excel integrada que haga esto. Podría utilizar una función definida por el usuario para devolver el nombre de la celda.

Las dos funciones siguientes devolverán el nombre de la celda. Uno toma una referencia de celda, el otro toma una fila y una columna. Ambos solo están configurados para funcionar en la hoja local en este momento, pero puede agregar una variable opcional para tomar un nombre de hoja de trabajo si es necesario.

La primera función se llamaría con=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

la segunda función devuelve el nombre de la celda de una fila y columna determinadas

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

Primera función editada para trabajar en la celda activa.

información relacionada