使用EXCEL中的函数通过地址或引用获取单元格的名称

我搜查了很多,但没有find任何好的答案!

是否有任何内部函数通过传递其地址作为参数返回单元格的Name

如果不是,通过提供地址/引用来获取我们为单元格定义的name的最简单方法是什么?

例如,我将“test_name”定义为单元格B4name ,其内容是“test”。

我想在Excel中的函数,如:CellName(adr),并使用它像CellName(B4),并返回“ test_name

我也search了很多,find一个内置的Excel函数,但没有发现任何东西!

您可以使用UDF (用户定义函数)在Excel实现Cell Name

对于这个行为,我们将使用视觉基础语言(vb)

我发现了一些很好的定义函数,我将解释如何添加。

我已经附加了3种types的VB 代码,你可以自己select其中的一种,并添加它。

脚步


  • 首先,打开所需的物品 :你可以在这里看到这一步或按照下面的方式:

    • 在Excel中打开一个新的工作簿

    • 您应该在应用程序的可视化基础(VBA)中定义所需的function,

    • 打开VB使用短键alt + F11

    • 添加一个新的模块到您的工作簿。

    • 一个新的模块窗口将被打开,用于在那里添加你的代码。


  • 第二,附加代码

    • 复制以下三个代码中的一个:

      1. CellName1(单元格):获取单元格地址并返回单元格的名称

       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 

      2. CellName2(cell):获取单元格地址并返回单元格的名称

       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 

      3. CellName3(row,col):获取单元格的行和列,并返回单元格的名称

       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 

不要忘记保存你粘贴的function!



例子

考虑名称为“test_name”的单元格B4 ,现在可以通过上面定义的每个函数获取它的名称…

图片1

现在假设另一个像D7的单元格。

我们对这个单元格使用第一个函数( CellName1 ),对于结果,“B4”单元格的名称将是“D7”的内容,

图片2

图片3

所以我们将B4作为parameter passing给函数,并获得其名称作为“D7”单元格的内容。

  CellName1(B4) 

要么

  CellName2(B4) 

要么

  CellName3(4,2)