在实际的工作中,累到吐血的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!