最近一段时间特别忙,所以公众号文章发的比较少,技术一直都在研究和进步。今天主要分享一种数据处理方法,在后续日常工作中可能会经常遇到。
1.利用场景
通过渗透下载或者获取了批量相同类型文件,文件的结构基本相同,但文件数量比较大,少则几十,多则上千。笔者遇到的情况是表头非标准,无法通过程序直接进行导入,需要将多个文件的内容进行整合。比如下面的图片:
表头是由两行组合而成的,通过程序也非常麻烦。
2.解决思路
通过XLS的VBA功能自动对文件夹下的所有文件进行复制处理,处理完毕后在一个文件中,但唯一的限制是行只能65535行,也就是处理文件数=65535/每个文件的行数,因此有文件行数的限制。
3.具体操作
(1)将所有的xls文件复制到一个文件夹
(2)文件夹中新建一个xls文件
(3)对sheet1表标签中右键单击查看代码
(4)在代码窗口中复制以下代码
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 & "" & "*.xls")
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
(5)运行程序
如图所示,直接按F5快捷键也可以,运行后程序会自动进行文件的合并处理。
(6)提示合并结果
如图所示,程序会自动显示累计合并多少个文件。
4.文件的进一步处理
(1)打开并保存处理后的xls文件,将其中的内容复制到记事本文件中。
(2)通过ultraedit进行排序去重
(3)将不需要保留的信息全部删除
(4)将列字段添加到首行
(5)xls中建议选择全部,设置表格为文本,默认是常规。
(6)将文件复制回xls中,形成一个方便处理的xls文件。
(7)可以将xls或者文本文件导入的mysql中进行数据分析。
欢迎关注本公众号,后续将尽量每周分享一篇原创实用内容给大家。
本文始发于微信公众号(小兵搞安全):多xls文件批量处理总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论