Respuestas:
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í:
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
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.
=INDIRECT("'SHEET 001'!" &cell_name())
para que esto funcione para usted.
Se me ocurrió una solución rápida, aunque ciertamente, un poco limitada.
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.
=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,A1
es decir, estáA2
en otra hoja. Defino celdas con nombres, para quesales
tengan el mismo valor en todo el libro.