利用宏命令实现多表格合并之备忘录

关于多表格合并以及批量文件改名,此前在文章《懒人意识和工具思维》中有过记录,当时并未附代码,而且文字描述不够清晰,导致回看时无法快速掌握。因此有必要再次重温这个老生常谈的问题——多表格合并,今天使用宏录制的方式来解决。操作环境以Mac版Excel 2010为例。

首先新建名为“合并”的表格文件,另存为启用宏的工作簿格式(xlsm),跟需要合并的表格文件存放在同一个文件夹里,这时全选文件并复制,在“合并”中A1单元格右键粘贴,文件名可以直接粘贴到表格里,原来没有试过这个功能,有点意思。当前页签Sheet1命名为“所有文件名列表”,新建页签Sheet2命名为所有数据,将需要合并的表格里的标题行复制到Sheet2,光标停留在A2单元格。切换到Sheet1所有文件名列表,光标停留在A1单元格。准备工作完成。

开始录制宏。右键打开超链接,链接到文件夹内相应的文档1,打开超链接,选择需要复制的内容,这里需要注意的是,用键盘完成选择,先用“CTrl+↑”使光标回到最初A1单元格的位置,下移一格,用Ctrl+Shift+➡️全选当前行数据,保持Ctrl+Shift不松开再按下箭头↓,全选表格内数据,右键复制。打开“所有数据”页签,右键粘贴,注意用Ctrl+↓操作光标,使其停留在数据行下最左侧单元格。回到“所有文件名列表”页签,光标下移一位到文档2。

录制完成,修改代码。将默认的地址改为ActiveCell.Value,同时增加语句TextToDisplay = ActiveCell.Value,功能是实现文件名与文档的对应关系。此时代码可以实现的功能是,点击一次执行,合成一个文档。如果文档数量足够多,就比较麻烦。因此增加IF语句,判断当前单元格是否为空,如果单元格不为空,说明还有未合并的文档,继续执行主体代码,单元格为空则结束。

15分钟的视频,我学习了一个多小时,来回调试好多次,终于成功。代码是自动生成的,部分内容根据视频略作调整,相信这一次我彻底搞定了多表格合并。

其实,Excel有一个插件Power Query,可以完美解决这个问题,有时间体验一下。另外,还可以采用石墨文档或WPS云文档等方式,完成多人协作。不过由于我们的工作环境有特殊要求,以上均难以实现,只有继续使用原始的手工重复劳动,或者试着利用代码解决。


附代码如下:
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(“数据”).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

(0)

相关推荐