分享

职场高频率:快速合并Excel工作簿下的所有工作表!

 Excel情报局 2020-09-25

Excel情报局

OFFICE知识文艺青年

1%的Excel基础搞定99%的日常工作

做一个有文艺范的Excel公众号

Excel是门手艺 玩转需要勇气

表哥带你玩转办公室

有温度公众号

听歌阅读

2020年7月9日

周四安好!

心情:细节真的可以决定成败,认真过的人结局至少不会太坏。

表哥一直致力于为小伙伴们搜集并整理职场中出现率高,利用率高的Excel技巧。本来一两分钟的事我们拒绝用一天两天来完成。

如下图所示,一个工作簿中有若干个工作表,本例中简化为三个工作表,名称分别为“Excel情报局111”、“Excel情报局222”、“Excel情报局333”的工作表。我们如何快速将这三个工作表迅速合并到一个新的工作表中呢?

这样做的目的:因为只有在一个工作表内的数据我们容易汇总整理和分析,用数据透视表和公式等会非常方便。


首先点击工作表右边加号,新建一个工作表,用来放置合并工作表后的数据。本例中新建的工作表名称为“合并工作表”。


右击“合并工作表”工作表,点击“查看代码”按钮,调出VBA窗口。


复制粘贴代码至VBA窗口内,点击运行按钮,运行代码。
弹出提示框:请输入标题的行数。
本例中标题都是首行第一行,即输入1即可。点击确定。
关闭VBA窗口界面,自动回到Excel主界面,我们发现三个工作表的数据已经合并完成了。


我们最后再浏览一下,合并完成的工作表和分表之间的关系。


复制代码如下:

Sub CollectData()
Dim Sht As Worksheet, rng As Range, k&, n&
Application.ScreenUpdating = False
n = Val(InputBox("请输入标题的行数", "提醒"))
If n < 0 Then MsgBox "标题行数不能为负数。", 64, "提示": Exit Sub
Cells.ClearContents
For Each Sht In Worksheets
  If Sht.Name <> ActiveSheet.Name Then
Set rng = Sht.UsedRange
k = k + 1
If k = 1 Then
rng.Copy
[a1].PasteSpecial Paste:=xlPasteValues
Else
rng.Offset(n).Copy
Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).PasteSpecial Paste:=xlPasteValues
End If
  End If
Next
[a1].Activate
Application.ScreenUpdating = True
End Sub

不要随意对任何一个Excel知识点定义为无用论,因为只有合适的问题在合适的模型运用合适的Excel技巧,才能实现其最大作用。所以你的知识储备很重要!

相互尊重,抱团成长。

隔三差五学个Excel小知识忘记一天工作的烦恼,只要坚持,最后可能不会得到最好的结果,但一定不会收获最坏的结果。赖床舒服,但可能迟到;熬夜很爽,但伤身体。自律或许并不容易,但你越懒惰越放纵自己,就越可能错过美好的人和事。如果生活注定充满艰辛,那就学着做拯救自己的那个英雄。趁年轻不妥协,向前奔跑!从今天开始改变,对平庸生活奋力回击。


点击关注Excel情报局微信视频号

点击加入微信圈子获取更多知识点

公众号消息小窗回复微信群加入微信答疑群

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多