陆地水循环分享 http://blog.sciencenet.cn/u/afantics

博文

Excel干货——使用excel的宏功能对多个excel文件进行批量处理

已有 31378 次阅读 2022-1-18 17:01 |个人分类:软件使用|系统分类:科研笔记

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)中操作所对应的代码】

2.png

(4)为宏代码附上批处理代码,将下图右边红色框的代码替换掉左边红框的代码;【使“chuli”这个宏,可以对多个选中的excel进行红色框中的处理,即(2)的处理】

3.png

4.png

代码如下

[上半部分]:

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,会出现问题,必须选择其他需要处理的文件,可以多选】


5.png

(6)处理会自动进行,并保存;如果处理的文件是xls或者csv,则需要在开头和结尾代码处,将“xlsx”改为“xls”或者“csv”即可,注意要改全了。

同样的宏的批处理也可以批量将excel进行格式转化,例如将1000个xlsx转化为csv或者反过来,都很方便。






https://blog.sciencenet.cn/blog-3459054-1321600.html

上一篇:全球900多条河流径流数据集共享
下一篇:基于ArcGIS绘制三维地形图
收藏 IP: 222.168.41.*| 热度|

1 孙颉

该博文允许注册用户评论 请点击登录 评论 (4 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-15 07:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部