excel图表是怎么合并多个工作簿中的数据

时间:2022-12-28 18:06:19 

我们使用代码快速合并超过5 个Excel工作簿文件,然而,如果要合并的工作簿中工作表的名称不相同,但位于每个工作簿的第1个工作表;并且,要在合并后的工作表的第1列中输入相对应的工作簿文件名,以便知道合并后的数据来自哪个工作簿文件。

同样,可以使用VBA代码快速解决。多的话不说,先上代码:

Sub Combine()

‘声明变量

Dim fn, e

Dim ws As Worksheet

Dim flg As Boolean

Dim LastR As Range

Dim wsName As String

‘打开选择文件对话框

fn = Application.GetOpenFilename _

(“Excel(*.xls*),*.xls*”,MultiSelect:=True)

‘如果没有选取文件,则退出

If Not IsArray(fn) Then Exit Sub

‘在当前工作簿中添加新工作表

Set ws = ActiveWorkbook.Sheets.Add

‘将新添加的工作表命名为Combined

ws.Name = “Combined”

‘将新添加的工作表赋值给变量ws

Set ws =ActiveWorkbook.Sheets(“Combined”)

‘关闭屏幕刷新

Application.ScreenUpdating = False

‘清除工作表中的数据

ws.Cells.Clear

‘遍历选取的工作簿文件

For Each e In fn

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

With Workbooks.Open(e)

‘选取文件中的第1个工作表

With .Sheets(1)

‘获取工作表名并赋给变量

wsName = .Name

‘如果变量flag值为False则执行条件语句

If Not flg Then

‘将打开的文件的第1个工作表中的第1行数据

‘复制到开头新添加的Combined工作表第1行

.Rows(1).Copy ws.Cells(1)

‘在Combined工作表中的开头插入一列

ws.Columns(1).Insert

‘在插入的列的首行输入”Sheetname”

ws.Cells(1).Value =”Sheet name”

‘设置变量flag值为True

flg = True

End If

‘获取新添加的Combined工作表第2列

‘最后一个数据单元格之后的空单元格

‘注意End属性后括号中的2表示最后单元格之后的单元格

‘若括号中的数字为1则表示最后数据单元格

Set LastR =ws.Cells(Rows.Count, 2).End(xlUp)(2)

‘打开的工作簿第1个工作表中当前数据区域

With.Range(“A1”).CurrentRegion

‘除去标题行后的数据区域

With .Resize(.Rows.Count -1).Offset(1)

‘复制到Combined工作表中

.Copy LastR

‘偏移到第1列并将区域扩展到与相邻列已使用数据区域

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

‘GetBasename方法获取文件路径的最后部分

‘即工作簿文件名,不包含扩展名

LastR(, ).Resize(.Rows.Count).Value = _

CreateObject(“Scripting.FileSystemObject”).GetBasename(e)

End With

End With

End With

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

.Close False

End With

Next

‘自动调整列宽

ws.Range(“A1”).CurrentRegion.Columns.AutoFit

‘打开屏幕刷新

Application.ScreenUpdating = True

Set ws = Nothing

End Sub

代码遍历所选择的每个工作簿文件,将数据依次添加到新增加的工作表中,同时在工作表首列添加工作簿文件名。我对每行代码都进行了详细的注释,可以参照来理解代码。

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

1.代码:

ws.Cells(Rows.Count, 2).End(xlUp)(2)

注意到最后的括号和放置在其中的数字2,这表明在工作表第2列中最后一个数据单元格之后的空单元格。如果将2修改为1,则表明是最后一个数据单元格。

2.代码:

LastR(, )

表明LastR代表的单元格左侧的相邻单元格。

3.代码:

CreateObject(“Scripting.FileSystemObject”).GetBasename(e)

中的GetBasename方法返回一个字符串,包含文件路径的最后部分,不包含扩展名。例如,若文件路径为“C:\ Excel\excelvba.xlsm”,则返回“excelvba”。

标签:excel常用函数,excel常见问题,excel技巧,Excel教程
0
投稿

猜你喜欢

  • excel2007导入外部数据时出错了怎么办?

    2022-12-17 00:56:01
  • EXCEL如何设置奇偶页打印页码在同一边

    2023-11-29 19:26:01
  • excel批量修改文件名的神技巧

    2023-11-16 08:41:32
  • Word2007文档中缩小微软雅黑行距的两种教程

    2023-07-18 15:54:38
  • excel怎么没将一年内的水费的用量做成柱状图?

    2022-02-05 06:24:53
  • 怎么批量删除替换Word 2010中回车的方法

    2022-11-10 02:53:29
  • 在Excel2010 中 条件格式超过了三个怎么办?

    2022-10-11 00:04:22
  • Win10系统的窗口遮挡任务栏怎么解决?

    2023-11-24 02:04:28
  • 如何把word转换成pdf格式

    2023-12-08 15:09:56
  • Win10电脑玩一会游戏卡死画面定格如何解决?

    2023-11-24 14:12:16
  • Word文档中自动生成章节号技巧

    2022-11-05 16:13:57
  • Win10专业版一直不断无限重启怎么办?

    2023-11-18 09:30:00
  • 如何给word 2013文档图片设置样式效果

    2022-03-20 02:09:14
  • Word查找和替换高逼格用法技巧

    2023-07-03 04:19:38
  • ​word文档如何删除批注

    2023-08-30 03:27:43
  • word中插入域功能来动态统计文档字数

    2022-08-19 06:35:09
  • iPhone SE2推荐升级iOS16.3吗?老机型升级iOS16.3真实体验

    2023-05-29 19:39:27
  • excel缺勤人表排除重复项,怎么办?

    2022-10-17 00:06:23
  • OneNote2013中的笔记怎么分类并整理?

    2023-08-02 15:32:36
  • Word技巧:3条文档编排特技

    2023-11-29 01:47:36
  • asp之家 电脑教程 m.aspxhome.com