Nombre definido de celda de retorno de fórmula

0

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 esto ADDRESS(ROW(),COLUMN()para referirme al nombre actual de celda definido,
es decir, "ventas" y no$A$1

2ool
fuente

Respuestas:

1

No puedo tomar el crédito por escribir este código, pero hace precisamente lo que necesita. Necesitaba la misma función 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 recuerdo de ninguna manera. 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 la hoja de cálculo de Excel algo así como "= CellName (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
Ilan
fuente
0

No creo que haya una función de Excel integrada que haga esto. Puede usar una función definida por el usuario para devolver el nombre de la celda.

Las dos funciones a continuación devolverán el nombre de la celda. Uno toma una referencia de celda, el otro toma una fila y columna. Ambos solo están configurados para funcionar en la hoja local en este momento, pero puede agregar una variable opcional para tomar el nombre de una 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 dada

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.

gtwebb
fuente
=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))Esta fórmula funciona como referencia de celda especial. se referirá a su propio nombre de dirección de celda pero en la hoja 001. mientras tengo diferentes ubicaciones de celda, A1es decir, está A2en otra hoja. Defino celdas con nombres, para que salestengan el mismo valor en todo el libro.
2ool
He cambiado la primera fórmula para trabajar en la celda con la fórmula en ella. Debería poder utilizar la función =INDIRECT("'SHEET 001'!" &cell_name())para que esto funcione para usted.
gtwebb
0

Se me ocurrió una solución rápida, aunque ciertamente, 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 totalmente calificada que está buscando, que coincide en la lista y devuelve el nombre de la celda de la columna adyacente = INDEX (NameList, MATCH ("= '" & SUBSTITUTE (CELL (" nombre de archivo ")," nombre_archivo_calificado_completo "," ") &" '! "& CELL (" dirección "), NameReferences, 0))

Obviamente se limita a los nombres que apuntan a una sola celda, pero podría extenderse para buscar rangos de celdas.

Funciona para mí 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 coloque, la referencia siempre será correcta.

Mientras estoy trabajando en el proyecto, incluí una declaración en una macro de ejecución frecuente que actualiza la lista de nombres para mantenerla actualizada.

Franco
fuente