如何使用excel文件的文件名来更改单元格列?

Jon*_*nny 1 excel vba excel-vba

我正在尝试编写一个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"
Run Code Online (Sandbox Code Playgroud)

'冻结顶行

Rows("1:1").Select
With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
End With
ActiveWindow.FreezePanes = True
Run Code Online (Sandbox Code Playgroud)

'保存文件

ActiveWorkbook.Save
Run Code Online (Sandbox Code Playgroud)

'将内容添加到名称+类型列

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
Run Code Online (Sandbox Code Playgroud)

'自动调整所有列

Columns("A:AK").Select
Selection.Columns.AutoFit
Run Code Online (Sandbox Code Playgroud)

结束子

*另外一条评论.我修改了你在宏中提供的代码,但是在我运行它之后的每个单元格中,以下代码在k列中:

=LEFT(MID(CELL("filename",J2),SEARCH("[",CELL("filename",J2))+1,SEARCH("]",CELL("filename",J2))-SEARCH("[",CELL("filename",J2))-1),5)&J2
Run Code Online (Sandbox Code Playgroud)

*最后一点.文件名保存为48GHY_fjfdkjfe33.RHRH-msadklfjeiojo#csv.txt(这可能与它有什么关系吗?)

Sid*_*out 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

  • 很好 - 您可能希望在Scott建议的CELL函数的第二个参数中添加引用,以便在您使用另一个工作簿活动时重新计算时工作簿名称保持不变. (2认同)