所有sheet合并成一页_1分钟拆解:「如何将10多个工作表sheet,合并成一张?」...

533b3c643cc4ed9153e1293a29363d63.png

大家好,我是有讲课堂的认证达人:解题宝宝。

今天到了VBA教学时间!

因为今天阿,解题宝宝无聊闲逛,惊奇发现了两份VBA代码,特意分享给大家。

是解决如何合并大量不同的工作表哒。

多少张都没问题!亲测有效!

分为以下两种情况☟

01 合并同一工作簿的不同工作表。

效果长这样:

本来,同一工作簿下,一个排班表是一张sheet;

17c8a41a7490a8016b21e191bfcaca46.gif

接下里,就变成:所有排班表汇总成一张sheet,格式还自动排好!

◎ 效果演示

057a54f9925ca43f82a79cc57f16652e.gif

代码立即备上,宝宝们直接复制粘贴就好,操作无敌容易!

Step 1

  • 新建一个Sheet,鼠标右键选择 查看代码 。这时你打开了VBA界面。

◎ 操作演示

343ed6ba359cb22ec9fff014d9dbdbd2.gif

Step 2

  • 复制以下代码,粘贴进 模板 编辑框。

Sub 合并当前工作簿下的所有工作表()

Application.ScreenUpdating = False
For j = 1 To Sheets.Count
If Sheets(j).Name <> ActiveSheet.Name Then
X = Range("A65536").End(xlUp).Row + 1
Sheets(j).UsedRange.Copy Cells(X, 1)
End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "解题宝宝,我成功啦", vbInformation, "提示"
End Sub

◎ 复制进去后的样子

5a7a96c0678ec486d843399e5452f99b.png

Step 3

  • 按 F5 调试,见证奇迹发生的时刻叭!

◎ 操作演示

abc87332be90c29abed9842043a3e2c7.gif

02 并不同工作簿的不同工作表。

首先,你的所有工作簿,要放在同一个储存位置,同一个文件夹,

那下面介绍的操作才会生效哦。

比如解题宝宝的这三个工作簿,都在「考勤记录」文件夹。

d95309c0801ea208ecbf1fdb406f5787.png

这情况下,当我们想打开三份考勤记录,就不得不打开三个文件。

0c1e815413be079f472f300562771265.png

然而,经过解题宝宝的代码,你完全可以实现:三个考勤时间表归总到一个工作簿!

以前总是打开一大堆Excel文件,把电脑卡死?

以后再也不会存在呐!打开一个文件,就能查看所有工作簿。

◎ 效果演示

a48957b2c4f9504a6c667cd0093f7b35.gif

Step 1

  • 在同一文件夹里,新建一个 XLSL工作表 ,命名后打开它。

◎ 操作演示

b1658bae5188f08296d9be3b4d3b88af.gif

Step 2

  • 点击Sheet1,像刚刚一样打开VBA界面,复制以下代码:
Private Sub hb()
Dim hb As Object, kOne As Boolean, tabcolor As Long
Set hb = Workbooks.Add
Application.DisplayAlerts = False
For i = hb.Sheets.Count To 2 Step -1
hb.Sheets(i).Delete
Next
Dim FileName As String, FilePath As String
Dim iFolder As Object, rwk As Object, Sh As Object
Set iFolder = CreateObject("shell.application").BrowseForFolder(0, "请选择要合并的文件夹", 0, "")
If iFolder Is Nothing Then Exit Sub
FilePath = iFolder.Items.Item.Path
FilePath = IIf(Right(FilePath, 1) = "", FilePath, FilePath & "")
FileName = Dir(FilePath & "*.xls*")
Do Until Len(FileName) = 0
If UCase(FilePath & FileName) <> UCase(ThisWorkbook.Path & "" & ThisWorkbook.Name) Then
Set rwk = Workbooks.Open(FileName:=FilePath & FileName)
tabcolor = Int(Rnd * 56) + 1
With rwk
For Each Sh In .Worksheets
Sh.Copy After:=hb.Sheets(hb.Sheets.Count)
hb.Sheets(hb.Sheets.Count).Name = FileName & "-" & Sh.Name
hb.Sheets(hb.Sheets.Count).Tab.ColorIndex = tabcolor
If Not kOne Then hb.Sheets(1).Delete: kOne = True
Next
.Close True
End With
End If
Set rwk = Nothing
FileName = Dir
Loop
Application.DisplayAlerts = True
End Sub

◎ 复制进去后的样子

6f22069eb0c7849028547881f04d23bc.png
  • 按 F5 调试,选择你工作簿们所在的目录。

如果出现「包含外部链接」的提示,选择 更新 。

◎ 操作演示

63f064c613ca4d54414910514ec34d9d.gif

大功告成!

你已经把同一文件夹目录的所有工作簿,

都引入了进来,统统变成工作表呐,随意切换查看呐。

◎ 效果演示

a48957b2c4f9504a6c667cd0093f7b35.gif

03 练手时间

因为今天教学的是VBA执行代码,

所以只给素材给大家,只要代码运行成功,就代表你的操作成功呐。

作业包里有两个Excel文件,一份排班表,一份考勤表。

  • 公众号(Skill成长课堂)后台敲「527」领取本期作业。

最后,各位粉丝宝宝提问的话,请到文章下方留言,或者连同把表格一起发到邮箱呐(向公众号输入「邮箱」即可获取邮箱地址)。

这样解题宝宝才更能看见、有了表格也更明白问题是啥。

祝大家学习愉快!

点赞、收藏后,记得多回看才会掌握哒


每 | 天 | 进 | 步 | 一 | 点 | 点

现代人“机不离手”,长期沉迷于短视频,刷朋友圈,接收无效信息轰炸,会让我们的成长停滞。

你有没有想过,每天哪怕花5分钟在“有讲课堂APP”上,学一点点职场技能,就足以干掉90%混日子的职场人呢?

d3d5a6181d79f6c616534bdd1f0e8e9a.png
可通过使用 Apache POI 库来实现。首先,你需要创建一个新的 workbook 和 sheet,然后使用循环逐个复制每个 sheet 的行和单元格到新的 sheet 中。以下是一个简单的代码示例: ```java // 创建新的 workbook 和 sheet Workbook newWorkbook = new XSSFWorkbook(); Sheet newSheet = newWorkbook.createSheet("Merged"); // 初始化变量 int rowCount = 0; // 获取原始 workbook Workbook oldWorkbook = WorkbookFactory.create(new FileInputStream("path/to/your/file.xlsx")); // 遍历每个 sheet for (int i = 0; i < oldWorkbook.getNumberOfSheets(); i++) { Sheet oldSheet = oldWorkbook.getSheetAt(i); // 遍历每行并复制到新的 sheet for (int j = 0; j <= oldSheet.getLastRowNum(); j++) { Row oldRow = oldSheet.getRow(j); Row newRow = newSheet.createRow(rowCount++); // 遍历每个单元格并复制到新的行中 for (int k = 0; k < oldRow.getLastCellNum(); k++) { Cell oldCell = oldRow.getCell(k); Cell newCell = newRow.createCell(k); // 根据单元格类型复制单元格 switch (oldCell.getCellTypeEnum()) { case STRING: newCell.setCellValue(oldCell.getStringCellValue()); break; case NUMERIC: newCell.setCellValue(oldCell.getNumericCellValue()); break; case BOOLEAN: newCell.setCellValue(oldCell.getBooleanCellValue()); break; case FORMULA: newCell.setCellFormula(oldCell.getCellFormula()); break; } } } } // 保存新的 workbook FileOutputStream outputStream = new FileOutputStream("path/to/your/new/file.xlsx"); newWorkbook.write(outputStream); outputStream.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值