宝哥软件园

excel图表如何合并多个工作簿中的数据

编辑:宝哥软件园 来源:互联网 时间:2021-09-19

我们使用代码来快速合并5个以上的Excel工作簿文件。但是,如果要合并的工作簿中的工作表名称不同,则它们位于每个工作簿的第一个工作表中;此外,在合并工作表的第一列输入对应的工作簿文件名,以便知道合并数据来自哪个工作簿文件。

同样,VBA代码可以用来快速解决问题。如果你说的不多,先编码:

子合并()

声明一个变量。

Dim fn,e

将ws设计为工作表

模糊成布尔型

调暗最后一个作为范围

将文件名改为字符串

打开选择文件对话框。

fn=应用。GetOpenFilename _

(“Excel(*”。xls*),*。xls*”,多选:=真)

如果没有选择文件,请退出。

如果不是,则退出接头

向当前工作簿添加新工作表。

设置ws=活动工作簿。工作表。添加

命名新添加的工作表组合。

ws。名称=“组合”

将新添加的工作表分配给变量ws。

设置ws=活动工作簿。工作表(“组合”)

关闭屏幕刷新。

申请。屏幕更新=假

清除工作表中的数据。

ws。细胞,清除

遍历选定的工作簿文件。

对于每个e In fn

打开要从中获取数据的文件。

使用工作簿。打开(e)

选择文档中的第一张工作表。

和。工作表(1)

获取工作表名称并将其分配给变量。

wsName=。名字

如果变量标志值为假,则执行条件语句。

如果不符合,那么

要打开的文件的第一个工作表中的第一行数据。

复制到新添加的合并工作表开头的第一行。行(1)。复制ws。细胞(1)

在合并工作表的开头插入一列。

ws。列(1)。插入

在插入列的第一行输入“Sheetname”。

ws。细胞(1)。Value=“工作表名称”

将变量标志值设置为真。

图=真

如果…就会结束

获取新添加的组合工作表的第2列。

最后一个数据单元格后的空单元格。

请注意,End属性后括号中的2表示最后一个单元格后的单元格。

如果括号中的数字是1,则表示最后一个数据单元格。

设置LastR=ws。单元格(行。计数,2)。结束(xlUp)(2)

打开的工作簿的工作表1中的当前数据区域。

和。范围(“A1”)。当前区域

删除标题行后的数据区。

和。调整大小(. row . count-1)。偏移量(1)

复制到组合工作表。复制LastR

偏移到第1列,并将该区域扩展到相邻列的已用数据区域。

行数相同。注意LastR(,)的用法。

方法获取文件路径的最后一部分。

即不带扩展名的工作簿文件名。

LastR(,)。调整大小(.行数.计数)。值=_

CreateObject("脚本。文件系统对象”)。GetBasename(e)

以…结尾

以…结尾

以…结尾

关闭要从中获取数据的工作簿文件。关闭假

以…结尾

然后

自动调整列宽。

ws。范围(“A1”)。

打开屏幕刷新。

申请。屏幕更新=真

设置ws=无

末端接头

该代码遍历每个选定的工作簿文件,依次将数据添加到新添加的工作表中,并将工作簿文件名添加到工作表的第一列中。我对每一行代码都做了详细的注释,可以参考来理解代码。

有几个代码需要特别说明:

1.代码:

ws。单元格(行。计数,2)。结束(xlUp)(2)

请注意最后一个括号和其中的数字2,它表示工作表第二列最后一个数据单元格之后的空单元格。如果2被修改为1,则表示它是最后一个数据单元格。

2.代码:

LastR(,)

指示由LastR表示的单元格左侧的相邻单元格。

3.代码:

CreateObject("脚本。文件系统对象”)。GetBasename(e)

中的GetBasename方法返回一个字符串,该字符串包含文件路径的最后一部分,没有扩展名。例如,如果文件路径为“c : Excel Excel MBA . xlsm”,则返回“excelvba”。

更多资讯
游戏推荐
更多+