在Excel中检索单元名称

时间:2009-04-09 07:10:41

标签: excel

有没有办法在另一个单元格中显示特定单元格的单元格名称?我想在相邻的单元格中显示单元格名称,以便用户能够识别单元格名称而无需单击它。

...谢谢

11 个答案:

答案 0 :(得分:9)

ADDRESS(ROW(),COLUMN())会为您提供地址,例如$ 1美元的当前单元格。从行/列值(数字)中加/减以引用您所在的单元格。

如果你不想要$那么你可以找到并用SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$","")替换它,例如只获得A1

答案 1 :(得分:8)

此函数将给出单元格所属的NamedRange的名称:

Public Function CellName(oCell As Range) As Variant  
Dim oName As Name  
For Each oName In ThisWorkbook.Names  
    If oName.RefersToRange.Parent Is oCell.Parent Then  
        If Not Intersect(oCell, oName.RefersToRange) Is Nothing Then  
           CellName = oName.Name  
           Exit Function  
        End If  
    End If  
Next  
CellName = CVErr(xlErrNA)  
End Function  

它循环遍历工作簿中的所有名称,然后为每个名称检查它是否引用了此输入参数中的任何内容。如果是,则检查输入单元格和名称引用的范围是否相交。如果他们这样做,则返回范围的名称。

答案 2 :(得分:6)

在Excel 2013中,也可能在某些旧版本中, ADDRESS()接受第三个参数,该参数定义要返回的地址格式,并带有以下值:

1 - 绝对(默认)

2 - 绝对行/相对列

3 - 相对行/绝对列

4 - 相对

所以我们在单元格A1中说。

    function custom_walker_nav_menu_start_el($item_output, $item, $depth, $args){
      $output = '<div class="buttons-'.$item->ID.'" title="some_title">';
      $output .= $item_output;
      $output .= '</div>';
      return $output;
    }
    add_filter( 'walker_nav_menu_start_el', 'custom_walker_nav_menu_start_el' , 10, 4 );

 $menu_middle_left = array(
            'theme_location' => 'middle-left',
            'menu' => '',
            'container' => '',
            'container_class' => '',
            'container_id' => '',
            'menu_class' => '',
            'menu_id' => '',
            'echo' => true,
            'fallback_cb' => 'wp_page_menu',
            'link_before' => '',
            'link_after' => '',
            'walker' => new Walker_Nav_Menu()
        );

        wp_nav_menu($menu_middle_left);

如果要在单元格A1类型中显示单元格D3的名称:

ADDRESS(ROW();COLUMN()) //outputs $A$1
ADDRESS(ROW();COLUMN();1) //outputs $A$1
ADDRESS(ROW();COLUMN();2) //outputs A$1
ADDRESS(ROW();COLUMN();3) //outputs $A1
ADDRESS(ROW();COLUMN();4) //outputs A1

答案 3 :(得分:1)

我从Adarsha的上述答案中得到了一些“建议”。我得到了与下面代码类似的结果,包含该循环和一些改进。然而,我的'excel'宏的提示是让你的调试器成为你最好的朋友。

'
Functionname_of(clls)
'
    name_of = ""
' 
    Dim  nam As String
    Dim  rg  As Range
    Set  rg = clls
'
    nam = rg.Name.Name
'
    name_of = nam
'
End Function 'name_of
'

一点耐心和毅力,给了我我正在寻找的东西 - 用户定义的函数给我一个单元格的定义名称。如果同一个Cell有多个名称,会发生什么?试试看,看看。这是一个简单的测试,所以我想留给你实验,学习和传授你的新知识。

享受,...... W

答案 4 :(得分:1)

ActiveWorkbook.Sheets.Item(1).Cells(row,col).Name.Name

答案 5 :(得分:0)

这似乎不太可能,这很奇怪。您认为cell()函数应该提供获取名称的方法,但事实并非如此。长号。

答案 6 :(得分:0)

这将在非常基本的情况下工作:

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

如果单元格是命名区域的一部分,它将不起作用,它不会显示单元格的多个名称,它不适用于命名公式中包含的单元格(如=OFFSET()范围,对于例)。

"=" & cel.Parent.Name & "!" & cel.Address

事情也非常笨重。可能有更好的方法来进行检查。从RefersTo创建一个Range对象并使用Intersect()可能会有效。

答案 7 :(得分:0)

Excel确实有一个“Cell()”函数,您可以从中获取某些属性。

您可以使用= Cell(“row”,K9)并返回第9行,并且有一个等效的“col”参数,但它返回列号(11)而不是字母。

答案 8 :(得分:0)

在另一个单元格中引用指定单元格,在这种情况下为E12,然后使用以下公式:=“'”&amp; FORMULATEXT(E12)。这会将撇号放在前面,因此它会将名称或公式显示为文本。

答案 9 :(得分:0)

从技术上讲,如果您不介意在工作表中添加隐藏列,可以将SUBSTITUTE()和新的FORMULATEXT()函数组合起来执行此操作。

假设单元格A1被命名为 FOO 在B1中将简单的参考公式添加到指定的单元格 = FOO 在C1中添加公式 = SUBSTITUTE(FORMULATEXT(B2),“=”,“”) 隐藏B栏

单元格C1将包含值FOO(或未命名单元格的RC引用)

根据需要进行调整,您的里程(或公里数)可能会有所不同。

答案 10 :(得分:-1)

您可以将光标放在空单元格中,键入=然后单击指定的单元格。它将显示单元格内容。然后将单元格的格式更改为文本,它将显示=