![公式返回单元格定义名称](https://linux22.com/image/1388310/%E5%85%AC%E5%BC%8F%E8%BF%94%E5%9B%9E%E5%8D%95%E5%85%83%E6%A0%BC%E5%AE%9A%E4%B9%89%E5%90%8D%E7%A7%B0.png)
我需要一个公式来使用单元格地址并返回单元格定义的名称,即
=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))
我需要它ADDRESS(ROW(),COLUMN()
来引用当前单元格定义的名称
,即“销售”,而不是$A$1
答案1
我想到了一个快速的解决方法,尽管不可否认的是,它还是有点局限性。
- 在工作表的空白区域粘贴所有已定义名称的列表。
- 以下公式将创建一个类似于您要查找的完全合格的单元格地址的字符串,在列表中匹配它,并从相邻列返回单元格名称 =INDEX(NameList,MATCH("='"&SUBSTITUTE(CELL("filename"),"fully_qualified_filename","")&"'!"&CELL("address"),NameReferences,0))
它显然仅限于指向单个单元格的名称,但可以扩展到搜索单元格范围。
它对我有用,因为显示数据的单元格的名称是数据字段的名称,所以无论我把它放在哪里,引用总是正确的。
当我在处理该项目时,我在经常运行的宏中包含了一条语句,该语句会刷新名称列表以使其保持最新。
答案2
我不能承担编写此代码的功劳,但它确实满足了您的需求。几年前,我需要同样的功能,并在网络空间的某个地方偶然发现了此代码,也许对其进行了一点修改,但我记不清了。它对我来说非常有用。
它的工作原理如下:
- 将以下代码粘贴到启用 Excel 宏的工作簿 (*.xlsm) 的 VBA 模块中。
- 然后,在 Excel 工作表单元格中输入类似“=CellName(F19)”的内容,它将返回类似“rngSomeNamedCell”的内容。
以下是代码:
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
答案3
我不相信有内置的 excel 函数可以做到这一点。您可以使用用户定义的函数返回单元格名称。
下面的两个函数将返回单元格的名称。一个函数接受单元格引用,另一个函数接受行和列。目前,这两个函数都只能在本地工作表上使用,但您可以添加一个可选变量来接受工作表名称(如果需要)。
第一个函数将被调用=cell_name()
戈登
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
第二个函数返回给定行和列的单元格名称
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
编辑第一个函数以在activecell上工作。