我正在尝试编写一个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
End Sub
*另外一条评论。我修改了你在宏中提供的代码,但是在我运行它之后的每个单元格中,以下代码在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(这可能与它有什么关系吗?)
答案 0 :(得分:5)
把它放在B2
中 =LEFT(MID(CELL("filename",A2),SEARCH("[",CELL("filename",A2))+1, SEARCH("]",CELL("filename",A2))-SEARCH("[",CELL("filename",A2))-1),5)&A2
修改强>
<强>解释强>
此公式=CELL("filename",A2)
为您提供文件名。例如
C:\Users\Siddharth Rout\Desktop\[Book1.xlsx]Sheet1
和这个公式
=MID(CELL("filename",A2),SEARCH("[",CELL("filename",A2))+1, SEARCH("]",CELL("filename",A2))-SEARCH("[",CELL("filename",A2))-1)
只取出上面的文件名,为您提供Book1.xlsx
Left()
根据您指定的字符数返回文本字符串中的第一个或多个字符。
HTH
答案 1 :(得分:3)
也许你甚至不需要VBA。这样的事情对我有用。
=MID(CELL("filename",A2),FIND("[",CELL("filename",A2))+1,5) & A2
查找单元格公式,了解文件名如何工作。