2012-06-25 34 views
1

我想寫一個Excel宏/ VBA代碼來調整列的內容基於文件的標題。目前,我有一個宏設置,可以根據輸入的URL下載一個csv文件。宏會自動格式化並命名文件。我想使用文件名稱/標題的前5個字符來自動格式化其他單元格。如何使用excel文件的文件名來更改一列單元格?

例如,文件名是48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。我在我的文件中有一個名爲name + type的列。我想將「名稱」行與標題結合起來並讓它填充字段。下面的兩張圖片提供了一個前後的圖片。

Before Database

After Database

目前,我有前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(莫非有什麼關係呢?)

回答

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)

取出只是文件名從上面給你​​

Left()返回第一個字符或文本字符串,基於您指定的字符數。

HTH

+0

+1我們去了,同時發佈了幾乎相同的東西。 –

+0

如果文件名不是保存在本地,還是隻讀? – Jonny

+0

@Jonny:你不必輸入文件名:)只需複製並粘貼公式:) –

3

也許你甚至不需要VBA。像這樣的東西爲我工作。

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

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

+0

+ 1是。同樣的時機再次:) –

+0

是的,但在這一個去了額外的英里,但。 –

+1

一旦我在本地保存文件,代碼就工作得很好,但是當您爲您讀取只讀文件 – Jonny

相關問題