如何在Excel中自动创建命名引用?我想要每行的第一个字段作为我的参考

时间:2009-03-09 18:05:31

标签: excel excel-2007

我的电子表格的第一列是一个唯一的密钥(数据明智,与excel无关)。我的另一列包含指向其他行的链接(指向该行的唯一键)。当我插入这些超链接时,我需要指向“已定义的名称”,因为行顺序会随着时间的推移而变化。

每次插入新行时,我都不想创建定义的名称。有没有办法自动将列的文本定义为“已定义的名称”?

我希望这很清楚。

非常感谢。

2 个答案:

答案 0 :(得分:2)

您应该查看Workbook.NamesWorksheet.Names(如果您希望将定义的名称限制在工作表中)。

上面链接中显示的示例非常好。在您的情况下,您可能希望使用单元格中的Range.Value或Range.Text作为Names.Add()方法的'Name'参数传入的字符串。

使用VBA可能看起来像这样:

ThisWorkbook.Names.Add _
    Name:=Sheet1.Range("A1").Text, _
    RefersTo:=Sheet1.Range("A:A"), _
    Visible:=True 

以上将A列的定义名称设置为标题单元格A1中的值(文本)。

希望这有帮助!

麦克

答案 1 :(得分:0)

知道了。 Mike R.让我走上正轨。感谢。

请注意,需要删除名称的非字母数字字符。此外,复制名称只会覆盖旧引用。

Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 1 And Target.Text <> "" And Target.Cells.Count = 1) Then
        ThisWorkbook.Names.Add _
            Name:=StripChar(Target.Text), _
            RefersTo:=Target, _
            Visible:=True
    End If
End Sub

Function StripChar(s As String) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .ignorecase = True
        .Pattern = "[^\dA-Z]"
        StripChar = .Replace(s, "")
    End With
End Function