我正在尝试编写一个 excel 宏/VBA 代码来根据文件的标题调整列的内容。目前,我有一个宏设置,可以根据我输入的 URL 下载 csv 文件。宏会自动格式化和命名文件。我想使用文件名/标题的前 5 个字符来自动格式化其他单元格。
例如,文件名是 48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。我的文件中有一个名为 name+type 的列。我想将“名称”行与标题结合起来并让它填充字段。下面的两张图片提供了之前和之后的情况。
目前,我必须在单独的字段中输入前 5 个字符,然后使用:="48GHY"&a2 函数。
有没有办法在 excel/VBA 中做到这一点?
最初的问题已得到解答,但现在我在尝试将其放入宏时寻求更多帮助。因为它仍然是同一个问题,所以我认为它不需要另一个帖子。
这是我正在使用的当前宏/VBA。当我运行它时,它只会显示#VALUE!在细胞中。两组代码之间唯一不同的是 A 和 B 列现在是 J 和 K。
' 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"
' 冻结第一行
Rows("1:1").Select
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
'保存文件
ActiveWorkbook.Save
'将内容添加到名称+类型列
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
' 自动调整所有列
Columns("A:AK").Select
Selection.Columns.AutoFit
结束子
*附加评论。我修改了您在宏中提供的代码,但是在我运行它之后的每个单元格中,以下代码位于 k 列中:
=LEFT(MID(CELL("filename",J2),SEARCH("[",CELL("filename",J2))+1,SEARCH("]",CELL("filename",J2))-SEARCH("[",CELL("filename",J2))-1),5)&J2
*最后一点。文件名被保存为 48GHY_fjfdkjfe33.RHRH-msadklfjeiojo#csv.txt (这可能与它有关吗?)