0
我想通過它們的標題來命名Excel電子表格中的每一列。例如,如果一列有標題「貓」,我希望該列被命名爲「貓」。這樣我可以在公式中引用貓,而不是用A:A指定列。名稱表中的每一列excel/vba
我可以做到這一點很好,只有一列,但當我嘗試做很多我的程序失敗。這是我的代碼。
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
Im相當肯定我的問題是這部分
Name:=cat1, RefersToR1C1:="activesheet.cat1"
,並沒有像迭代我覺得是。
我真希望我能
Name:=[cat]1, RefersToR1C1:="activesheet.[cat]1"
但這並不工作。有人有想法嗎?
您可以直接從公式菜單,使用從選擇中創建,並且當然可以轉換爲VBA。 – SJR
我不認爲這是你想做的。你可能會注意到這樣做的巨大性能。當您在公式中使用「A:A」時,Excel會查找最後一行(如果它不是數組公式),並且只考慮數據範圍的開始和結束,而不是全部1048576個單元格;當您命名範圍時,將使用該範圍內的每個單元格進行計算。現在你可以做的就是將你的數據集轉換成表格。然後你可以像'Table1 [[#All],[cat]]一樣引用它''這也會自動執行你所要求的,所以不需要VBA – Tom
我正在建議出現在XL97中的自然語言公式......但它在XL07中又一次消失了。 @Tom表示,這是表中較差的兄弟姐妹。 https://bettersolutions.com/excel/named-ranges/natural-language-formulas.htm –