これは、この投稿から生じる別の質問です。Excelファイルのファイル名を使用してセルの列を変更するにはどうすればよいですか。
前回の投稿のコードで、特定のセル(J2、K2)を参照していることに気付きました。ただし、コードを使用すると、列が変更されたときにエラーが発生しました。そこで、特定のセルを参照する代わりに、ヘッダー列の名前を使用して2番目の列にデータを入力するように、以下のコードを変更する方法を探しています。本当に調整が必要な行はmyRng行だけだと思いますが、参照しようとしているすべてのコードを提供します。
他の投稿を読んでいない場合は、問題について説明します。「名前」列とファイル名に基づいて2番目の列(名前+タイプ)に入力しようとしています。コードでKまたはJ行を参照しているときは、すべてが正常に機能していましたが、別のファイルをロードして列の位置が変更されると、すべてが台無しになります。
2番目の列(名前+タイプ)を1番目の列(名前)とまったく同じ数または行にする必要があるため、範囲( "K2:K"&lastCell)式を使用しています。
これを行う方法はありますか?
現在試行されているVBAコード:
' Insert Column after name and then rename it name+type
Rows(1).Find("name").Offset(0, 1).EntireColumn.Insert
Rows(1).Find("name").Offset(0, 1).FormulaR1C1 = "name+type"
Dim myRng As Range
Dim lastCell As Long
Dim myOtherRange As Range
Dim column2Range As Range
myOtherRange = Rows(1).Find("name")
column2Range = Rows(1).Find("name+type")
lastCell = Range(myOtherRange).End(xlDown).Row
Set myRng = Range("K2:K" & lastCell)
myOtherRange.FormulaR2C1 = "=LEFT(MID(CELL(""filename""),SEARCH(""["",CELL(""filename""))+1, SEARCH(""]"",CELL(""filename""))-SEARCH(""["",CELL(""filename""))-1),5)&RC[-1]"
myOtherRange.FormulaR2C1.Select
Selection.Copy
myRng.Select
ActiveSheet.Paste
最初のドラフトVBAコード:
' Insert Column after name and then rename it name+type
Rows(1).Find("name").Offset(0, 1).EntireColumn.Insert
Rows(1).Find("name").Offset(0, 1).FormulaR1C1 = "name+type"
'Add the contents to the name+type column
Range("K2").Select
ActiveCell.FormulaR1C1 = "=LEFT(MID(CELL(""filename"",RC[-1]),SEARCH(""["",CELL(""filename"",RC[-1]))+1,SEARCH(""]"",CELL(""filename"",RC[-1]))-SEARCH(""["",CELL(""filename"",RC[-1]))-1),5)&RC[-1]"
Range("K2").Select
Selection.Copy
Range("K2:K8294").Select
ActiveSheet.Paste