關于多表格合并以及批量文件改名,此前在文章《懶人意識和工具思維》中有過記錄,當時并未附代碼,而且文字描述不夠清晰,導致回看時無法快速掌握。因此有必要再次重溫這個老生常談的問題——多表格合并,今天使用宏錄制的方式來解決。操作環(huán)境以Mac版Excel 2010為例。
首先新建名為“合并”的表格文件,另存為啟用宏的工作簿格式(xlsm),跟需要合并的表格文件存放在同一個文件夾里,這時全選文件并復制,在“合并”中A1單元格右鍵粘貼,文件名可以直接粘貼到表格里,原來沒有試過這個功能,有點意思。當前頁簽Sheet1命名為“所有文件名列表”,新建頁簽Sheet2命名為所有數(shù)據(jù),將需要合并的表格里的標題行復制到Sheet2,光標停留在A2單元格。切換到Sheet1所有文件名列表,光標停留在A1單元格。準備工作完成。
開始錄制宏。右鍵打開超鏈接,鏈接到文件夾內相應的文檔1,打開超鏈接,選擇需要復制的內容,這里需要注意的是,用鍵盤完成選擇,先用“CTrl+↑”使光標回到最初A1單元格的位置,下移一格,用Ctrl+Shift+??全選當前行數(shù)據(jù),保持Ctrl+Shift不松開再按下箭頭↓,全選表格內數(shù)據(jù),右鍵復制。打開“所有數(shù)據(jù)”頁簽,右鍵粘貼,注意用Ctrl+↓操作光標,使其停留在數(shù)據(jù)行下最左側單元格。回到“所有文件名列表”頁簽,光標下移一位到文檔2。
錄制完成,修改代碼。將默認的地址改為ActiveCell.Value,同時增加語句TextToDisplay = ActiveCell.Value,功能是實現(xiàn)文件名與文檔的對應關系。此時代碼可以實現(xiàn)的功能是,點擊一次執(zhí)行,合成一個文檔。如果文檔數(shù)量足夠多,就比較麻煩。因此增加IF語句,判斷當前單元格是否為空,如果單元格不為空,說明還有未合并的文檔,繼續(xù)執(zhí)行主體代碼,單元格為空則結束。
15分鐘的視頻,我學習了一個多小時,來回調試好多次,終于成功。代碼是自動生成的,部分內容根據(jù)視頻略作調整,相信這一次我徹底搞定了多表格合并。
其實,Excel有一個插件Power Query,可以完美解決這個問題,有時間體驗一下。另外,還可以采用石墨文檔或WPS云文檔等方式,完成多人協(xié)作。不過由于我們的工作環(huán)境有特殊要求,以上均難以實現(xiàn),只有繼續(xù)使用原始的手工重復勞動,或者試著利用代碼解決。
附代碼如下:
Sub 宏6()
'
' 宏6 宏
'
'
If ActiveCell.Value <> Empty Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=ActiveCell.Value
TextToDisplay = ActiveCell.Value //此語句為新增,沒有自動生成,非常關鍵
Sheets(“所有文件名列表”).Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range(“A1:E4”).Select
Selection.Copy
ActiveWindow.Close
Sheets(“數(shù)據(jù)”).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Range(“A1”).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range(“A1”).Select
Sheets(“所有文件名列表”).Select
ActiveCell.Offset(1, 0).Range(“A1”).Select
Call 宏6
End If
End Sub
聯(lián)系客服