这是来自这篇文章的另一个问题:如何使用 excel 文件的文件名来更改一列单元格?
我注意到在上一篇文章的代码中它引用了特定的单元格(J2,K2)。但是,在使用代码时,当列更改时出现错误。所以现在我正在寻找一种方法来修改下面的代码,以使用标题列的名称来填充第二列,而不是引用特定的单元格。我认为唯一真正需要调整的行是 myRng 行,但我会提供我正在尝试的所有代码以供参考。
如果您没有阅读其他帖子,我将描述该问题。我正在尝试根据“名称”列和文件名填写第二列(名称+类型)。当我在代码中引用 K 或 J 行时,一切正常,但是当我加载不同的文件并且列位置发生变化时,一切都变得混乱了。
我需要将第二列(名称+类型)填充为与第一列(名称)完全相同的数字或行,这就是我使用范围(“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