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

我正在尝试编写一个Excelmacros/ VBA代码来调整列的内容基于文件的标题。 目前,我有一个macros设置来下载基于我input的URL的CSV文件。macros自动格式化和命名文件。 我想使用文件名称/标题的前5个字符来自动格式化其他单元格。

例如,文件名是48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。 我在我的文件中有一个名为name + type的列。 我想结合“名称”行和标题,并填充字段。 下面的两个图像提供了一个前后。

数据库之前

数据库后

目前,我必须input前5个字符到一个单独的字段,然后使用:=“48GHY”&a2函数。

有没有办法在Excel / VBA中做到这一点?


原来的问题已经回答了,但是现在我试图把它放在一个macros中寻求额外的帮助。 因为这个问题还是一样的,所以我觉得还不如另一个post。

这是当前使用的macros/ 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 

'将内容添加到名称+types列

 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 

结束小组

*一个额外的评论。 我修改了你在macros中提供的代码,但是在我运行它之后的每个单元格中,以下代码在列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(可能与它有什么关系?)

把这个放在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()根据指定的字符数返回文本string中的第一个或多个字符。

HTH

也许你甚至不需要VBA。 这样的事情为我工作。

 =MID(CELL("filename",A2),FIND("[",CELL("filename",A2))+1,5) & A2 

查找单元格公式以了解文件名的工作原理。