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

StackOverflow https://stackoverflow.com/questions/627377

  •  06-07-2019
  •  | 
  •  

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

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

我希望这很清楚。

非常感谢。

有帮助吗?

解决方案 2

知道了。 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

其他提示

您应该查看 Workbook.Names Worksheet.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中的值(文本)。

希望这有帮助!

麦克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top