||
Excel干货——使用excel的宏功能对多个excel文件进行批量处理
By 李明乾
在进行数据处理时,有时需要对多个excel进行同样的处理,这些excel有相同的格式,数据排列方式一致,只是数据不同,如果操作简单,需处理的excel数量不多,可以依次处理;如果excel的数量过多,多于100个,甚至更多,或者处理过程十分复杂,但是处理过程一致,那么使用“宏”批量对excel文件进行是相对来说较为有效的方法,大大节省时间。基本原理和实例如下。
1.工作需求:(1)大量excel文件需要处理;(2)对这些excel的处理过程一致,只是重复操作。
2.基本原理:(1)使用“宏录制”录制操作,得到代码;
(2)将代码填写至构建好的批处理框架中;
(3)运行。
注:关于如何在不同版本excel找到并打开宏,请自行百度。
3.实例
工作需求:在1000个空白excel的sheet1中A1单元格都生成[0,1]的随机数,B1得到A1的10倍。(假设1000个空白excel均已经存在)
操作过程:
(1)打开一个空白excel,找到宏,点击“宏录制”,命名为 chuli;【此时excel将记住你的操作并生成相对应的代码chuli】
(2)在A1输入"=rand()",B1输入"=A1*10";【此时excel已经将你的操作生成相对应的代码chuli】
(3)打开宏,点击“停止录制”,再点击“查看宏”,点击“chuli”,再点击“编辑”;【红色框中的代码即为我们在(2)中操作所对应的代码】
(4)为宏代码附上批处理代码,将下图右边红色框的代码替换掉左边红框的代码;【使“chuli”这个宏,可以对多个选中的excel进行红色框中的处理,即(2)的处理】
代码如下
[上半部分]:
Sub chuli()
Dim f, l&, s As Integer
f = Application.GetOpenFilename(fileFilter:="xlsx文件(*.xlsx),*.xlsx", Title:="选择Excel文件", MultiSelect:=True)
If TypeName(f) = "Boolean" Then Exit Sub
For s = 1 To UBound(f)
Workbooks.Open f(s)
Set xlsxBook = GetObject(f(s))
Set Mywantgetsheet = xlsxBook.Worksheets(1)
Mywantgetsheet.Activate
[下半部分]:
xlsxBook.Save
xlsxBook.Close
Next
MsgBox "finsh"
End Sub
(5)得到结果如下,点击“运行”,选择需要进行处理的excel即可。【注意不可选本excel,会出现问题,必须选择其他需要处理的文件,可以多选】
(6)处理会自动进行,并保存;如果处理的文件是xls或者csv,则需要在开头和结尾代码处,将“xlsx”改为“xls”或者“csv”即可,注意要改全了。
同样的宏的批处理也可以批量将excel进行格式转化,例如将1000个xlsx转化为csv或者反过来,都很方便。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-27 23:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社