我搜索了很多,但没有找到任何好的答案!
是否有任何内部函数通过将其地址作为参数返回单元格的
Name
?
如果不是,通过提供地址/参考来获取我们为单元格定义的name
的最简单方法是什么?
例如我定义了' test_name'作为单元格name
的{{1}},其内容为:' test'。
我想要一个excel中的函数,例如:CellName(adr)并使用它像 CellName(B4)并返回&#39; test_name &#39; < / p>
答案 0 :(得分:1)
我还搜索了很多东西以找到内置的excel函数,但找不到任何东西!
您可以使用map
(用户自定义函数)在 List[C]
UDF
对于这个行为,我们将使用visual-basic language(vb)
我找到了一些很好的定义函数,我将解释如何添加。
我附加了 3 类型的VB 代码,您可以自己选择其中一个并添加它。
首先,打开所需的项目:您可以看到此步骤here或遵循以下内容:
在Excel中打开一个新的工作簿。
您应该在应用程序的Visual Basic(VBA)中定义所需的功能
要打开 VB ,请使用短键 alt + F11
在工作簿中添加新的模块。
将打开一个新的模块窗口,用于在那里添加您的代码。
SECOND,附加代码:
复制 一个 三个代码:
1。 CellName1(单元格):获取单元格地址并返回单元格名称
Cell Name
2. CellName2(单元格):获取单元格地址并返回单元格名称
Excel
3. CellName3(row,col):获取单元格的行和列并返回单元格的名称
Public Function CellName1(cel As Range) As Variant
Dim nm As name
For Each nm In Names
If nm.RefersTo = "=" & cel.Parent.name & "!" & cel.Address Then
CellName1 = nm.name
Exit Function
End If
Next
CellName1 = CVErr(xlErrNA)
End Function
不要忘记保存您粘贴的功能!
考虑名为“test_name”的单元格 B4 ,现在您可以通过上面定义的每个函数获取它的名称...
现在假设另一个像 D7 的细胞。
我们对此单元格使用第一个函数(Function CellName2(cel As Range) As String
Dim rng As Range
On Error Resume Next
Set rng = cel
If Len(rng.name.name) < 0 Then
CellName2 = "No named Range"
Exit Function
End If
CellName2 = rng.name.name
If InStr("CellName2", "!") > 0 Then
CellName2 = Right(CellName2, Len(CellName2) - InStr(CellName2, "!"))
End If
End Function
),对于结果,“B4”单元格的名称将是“D7”的内容
所以,我们将Function CellName3(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
CellName3 = "No named Range"
Exit Function
End If
CellName3 = rng.name.name
End Function
作为参数传递给函数,并获得其名称作为'D7'单元格的内容。
CellName1(B4)
或
CellName2(B4)
或
CellName3(4,2)