为表格excel/vba中的每一列命名
我试图通过标题来命名excel电子表格中的每一列。例如,如果一列的标题为“cat”,我希望该列命名为“cat”。这样我就可以在公式中引用cat,而不是用a:a指定列 我只需要一列就可以很好地做到这一点,但当我尝试用许多列来实现这一点时,我的过程失败了。这是我的密码为表格excel/vba中的每一列命名,vba,excel,loops,named,Vba,Excel,Loops,Named,我试图通过标题来命名excel电子表格中的每一列。例如,如果一列的标题为“cat”,我希望该列命名为“cat”。这样我就可以在公式中引用cat,而不是用a:a指定列 我只需要一列就可以很好地做到这一点,但当我尝试用许多列来实现这一点时,我的过程失败了。这是我的密码 Sub defineName() Dim numColumns As Long Range("A1").Select numColumns = ActiveSheet.Cells(1, Columns.Count).End(xlTo
Sub defineName()
Dim numColumns As Long
Range("A1").Select
numColumns = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Columns("A:A").Select
For cat = 0 To numColumns
Selection.Offset(0, I).Select
ActiveWorkbook.Names.Add Name:=cat1, RefersToR1C1:="activesheet.cat1"
Next cat
End Sub
我很确定我的问题是这部分
Name:=cat1, RefersToR1C1:="activesheet.cat1"
它不像我想的那样迭代
我几乎希望我能
Name:=[cat]1, RefersToR1C1:="activesheet.[cat]1"
但这也不起作用。有人有什么想法吗?请参阅我的建议,但这里有其他代码。但是命名整个列似乎不是很有效。看过汤姆的建议后,我认为这是一个更好的办法
Sub defineName()
Dim numColumns As Long, cat As Long
numColumns = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
For cat = 1 To numColumns
Columns(cat).Name = Cells(1, cat)
Next cat
End Sub
您可以直接从“公式”菜单使用“从选择创建”,当然也可以转换为VBA。我认为这不是您想要做的。您可能会注意到这样做会带来巨大的性能冲击。在公式中使用
A:A
时,Excel会查找最后一行(如果它不是数组公式),并且只考虑数据范围的开始到结束,而不是所有1048576单元格;命名范围时,它将使用该范围内的每个单元格进行计算。现在可以做的是将数据集转换为表。然后,您可以像Table1[[#All],[cat]]
那样引用它,这也会自动满足您的要求,因此不需要VBAI就可以建议XL97中出现的自然语言公式。。。。但它在XL07中再次消失。这是@Tom建议的一个更穷的表兄弟。我不知道这个功能。谢谢你@tom