美文网首页上班这点事儿PPT.log
分分钟我把1200个Excel文件合并成了一个!

分分钟我把1200个Excel文件合并成了一个!

作者: 刚刚的钢 | 来源:发表于2018-08-30 15:36 被阅读16次

    在实际的工作中,累到吐血的Case很多很多,当经历过多次深度吐血的经历后,我果断的走上了止血的道路,虽然这条道路有些曲折,但当我看到别人在我曾经吐血的地方喷血流泪时,我的心情就平静了很多很多。

    一、一次吐血的经历

    朋友,你是否为那些搬砖的工作苦恼过?

    朋友,你是否为那些持续搬砖的工作而抓狂过?

    朋友,你是否为那些隔三差四都要搬砖的工作而吐血过?

    朋友,你是否为.......stop!不能在按照这套路写下去了,再写整个人都会 shut down!

    今天跟大家sharing一个我曾经吐血的case,这个case很简单也很暴力看后大脑第一反应就是"TMD,谁爱干谁干,老子不干!",可惜我不是老子,所以我还得去干。哈哈。

    言归正传,工作的内容是客户给我了1200个EXCEL文件,让我分析一下里面的数据,文件的部分阵容如下图所示。

    看着就想晕

    请让我沉默三分钟,向之前的我点几个赞!

    那一刻,我深情的望着客户,客户也深情的对我点了点头,我知道那一刻我不是在梦里,而是希望自己在梦里!

    客户临走的时候说“东西有点多,给你一周的时间完成”,我“哦”的声音还没发完,客户就已经消失在我的视野中。

    之后,我尝试手工合并了10个文件,通过简单的估算我发现要完成这项工作一周是搞不定的,怎么办,怎么办,该怎么办?

    没有什么怎么办,只有自己办!

    通过分析这个文件合并的过程,我发现整个过程就是一个循环打开文件,然后COPY打开文件的内容并粘贴到指定的excel中,重复1200次而已。

    分析完这个过程后,我觉得这个可以通过程序实现,于是花了一天的时间查阅了EXCEL宏的编程实例,拼凑了一段代码经过多次调试后终于可以工作了。

    程序执行约5分钟后(跟电脑的配置有关),这1200个文件就整合到了一个文件中,之后对合并的文件稍加处理就可以使用透视表进行数据分析了,三天后我完成了该项工作并按时提交了分析报告,看着客户惊奇的眼神,我知道我已经征服了客户。

    二、我是怎么做的

    通常来说,当我遇到问题的时候我会花一定的时间从what(问题的本质)、why(为什么要做)和how(怎么去做)三个方面去分析问题(见下图)

    分析完毕后,选择最符合我这种懒人的方法并专注到这件事情上,直到搞定这件事。当然,如果过程较长我会进行分段处理,这样处理问题会比较高效。

    对于这个case来说,核心难点就focus到excel宏的程序开发,还好我有些这方面的基础,再加上自己的被迫努力经过一番东拼西凑就搞定了这部分的开发(后来我在百度上找到了一个更为高效的程序代码)。

    当然,如果你说你不懂编程怎么办?

    不用办,按照我下面的步骤one by one的就能搞定!世界其实没有你想想的那么复杂。

    具体步骤如下:

    第一步:基础工作准备,请看下图所示的步骤

    第二步:在宏编辑器中粘贴下面的代码(在百度上也能搜索到)

    Sub 合并当前目录下所有工作簿的全部工作表()

    Dim MyPath, MyName, AWbName

    Dim Wb As Workbook, WbN As String

    Dim G As Long

    Dim Num As Long

    Dim BOX As String

    Application.ScreenUpdating = False

    MyPath = ActiveWorkbook.Path

    MyName = Dir(MyPath & "" & ".xl")

    AWbName = ActiveWorkbook.Name

    Num = 0

    Do While MyName <> ""

    If MyName <> AWbName Then

    Set Wb = Workbooks.Open(MyPath & "" & MyName)

    Num = Num + 1

    With Workbooks(1).ActiveSheet

    .Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

    For G = 1 To Sheets.Count

    Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

    Next

    WbN = WbN & Chr(13) & Wb.Name

    Wb.Close False

    End With

    End If

    MyName = Dir

    Loop

    Range("B1").Select

    Application.ScreenUpdating = True

    MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

    End Sub

    第三步:关闭除“合并文件”的所有excel,然后执行这段代码。

    第四步:耐心等待两种结果中的一个,哈哈!

    三、总结(百度上是搜不到的)

    如果你幸运,上述程序会执行的很顺利,如果报错请不要怀疑你的人生,更不要怀疑这段程序,因为这段程序很健壮很健壮很健壮!

    根据我的经验问题通常会出在那些合并的文件中,以下是我总结的几点问题汇总和处理方法。

    1.需要合并的源文件里面有多个sheet页,把没用的sheet页给删除后重新执行程序就ok了;

    2.需要合并的源文件里的某个字段设置的隐藏功能,找出来取消隐藏后重新执行程序就ok了;

    3.需要合并的源文件里的某个sheet页也设置的隐藏功能,找出来取消隐藏后重新执行程序就ok了;

    这三点是最常见的问题,大家在程序执行前务必进行必要的检查,检查完毕无误后执行再执行程序,剩下的就是准备一面镜子,欣赏一下自己灿烂的笑容!

    如果还有问题,请直接留言,我会进行答疑。

    Good luck!

    相关文章

      网友评论

        本文标题:分分钟我把1200个Excel文件合并成了一个!

        本文链接:https://www.haomeiwen.com/subject/igfdwftx.html