在Excel中使用公式获取区域名称

4

我已经在Excel中给一些列命名了。

现在我想使用公式在单元格中获取列的名称。

例如,如果A:A被命名为“日期”,我希望能够在一个单元格中输入一个公式,如=RangeName(A:A),返回“日期”这个词。

我已经找到了如何对单个单元格执行此操作的示例,但没有针对单元格范围的示例。

以下是我找到的单个单元格的示例:

    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
1个回答

3
听起来需要使用Intersect函数:
Public Function CellName(cel As Range) As Variant
    Dim nm As Name
    For Each nm In Names
        If Not Intersect(cel, nm.RefersToRange) Is Nothing Then
            CellName = nm.Name
            Exit Function
        End If
    Next
    CellName = CVErr(xlErrNA)
End Function

好的 - 逻辑对我来说是有意义的,但它似乎没有起作用。如果我尝试调试并逐步进入代码,它会第一次到达 If Not 行,然后就在不经过 For Each 循环或到达 Exit Function 的情况下结束。 - bpmccain
在一个干净的工作簿中使用有限的命名区域尝试该函数。如果可以正常运行,那么检查你的第一个工作簿是否存在可能导致此问题的问题。需要注意 On Error ... 和名称管理器。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接