0
Excelのスプレッドシートの各列のヘッダーの名前を付けようとしています。たとえば、列に "cat"というヘッダーがある場合は、その列の名前を "cat"にします。そうすれば、A:Aで列を指定するのではなく、式でcatを参照できます。テーブル内のすべての列の名前がexcel/vba
私はこれを1列でうまくやることができますが、私が多くの手順を実行しようとすると失敗します。ここに私のコードです。
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"
私はことがしたいが、それはどちらか動作しません。誰かがアイデアを持っていますか?
これは、選択メニューから作成を使用して式メニューから直接行うことができますが、もちろんVBAに変換することができます。 – SJR
私はこれがあなたがしたいことだとは思わない。あなたはおそらくこれを実行する巨大なパフォーマンスヒットに気づくでしょう。数式で 'A:A'を使用すると、Excelは最後の行(配列式でない場合)を見つけ、データ範囲の終わりをすべての1048576セルで終わらないとみなします。範囲を指定すると、その範囲内のすべてのセルを使用して計算されます。データセットを表に変換することができます。あなたはそれを 'Table1 [[All]、[cat]] 'のように参照することができます。これは自動的にあなたが求めていることを行いますので、VBAの必要はありません – Tom
XL97に現れる自然言語の式を提案しようとしていました... XL07で再び消えた。 @Tomが示唆しているテーブルの貧しい兄弟です。 https://bettersolutions.com/excel/named-ranges/natural-language-formulas.htm –