别再问我了。每次有人看到我五分钟搞定一份别人要弄一下午的报表,那种眼神,混杂着惊讶、羡慕,还有一丝丝“这哥们是不是会魔法”的怀疑。
魔法?算是吧。这魔法的名字,叫宏 (Macro)。
你是不是一听到“宏”这个词,脑子里就自动弹出“编程”、“代码”、“VBA”这些让你头皮发麻的词?然后默默关掉这篇文章,继续回去Ctrl+C、Ctrl+V?打住!回来!你觉得这玩意儿是给程序员玩的,跟咱们这些做业务、搞数据的普通人有半毛钱关系吗?我告诉你,关系大了去了。
Excel里的宏,说白了,就是你的一个“贴身管家”。你雇佣他,不需要花一分钱,只需要把你平时那些重复、繁琐、让你想砸键盘的操作,亲自给他演示一遍。然后,这个忠心耿耿的管家就会把所有步骤一丝不差地记下来。下次你再需要做同样的事情,只需要喊他一声(也就是点一下按钮),他就能在零点几秒内,光速帮你搞定。
你坐在电脑前,眼神空洞,右手机械地在鼠标和键盘之间移动,Ctrl+C,切换窗口,Ctrl+V,日复一日,周复一周,仿佛一个没有灵魂的流水线工人,唯一的区别是,你的产品是那一张张看似光鲜实则吸干了你生命力的报表。这就是没有宏的世界。
而拥有宏的世界是怎样的?你悠闲地喝着咖啡,看着屏幕上的光标自己飞舞,数据自动跳转、格式自动刷新,几分钟后,一份完美的报告静静地躺在那里。你省下来的时间,可以用来思考业务,可以用来摸鱼,甚至可以用来早点下班回家。
这,就是宏的力量。一种能把你的工作从“苦役”变成“创作”的力量。
别怕,先从当个“导演”开始——录制宏
我知道你怕代码。别说你,我也怕。但Excel最贴心的一点就是,它给了我们一个傻瓜式的入门方式——录制宏。
这就像拍电影。你就是导演,你所有的鼠标点击、键盘输入,都是演员的动作。Excel呢,就是那个扛着摄像机的摄影师,把你的一举一动全都录下来,然后自动翻译成它能听懂的语言——也就是VBA代码。你根本不需要懂那门外语,你只需要会“演”就行了。
怎么“演”?
首先,你得把你的“摄影师”请出来。默认情况下,Excel把这个功能藏起来了,有点“武林高手深藏不露”的意思。你需要找到【文件】-【选项】-【自定义功能区】,然后在右边的框里,把那个叫“开发者工具”的选项打上勾。
好了,你的工具栏上多了一个“开发者工具”的选项卡。点进去,看到那个红色的圆点图标,“录制宏”了吗?它就是你的开机键。
现在,咱们来拍第一场戏。
场景:假设你每天都要从系统里导出一份原始数据,格式乱七八糟。你需要做的就是: 1. 给第一行标题加粗,并填充一个淡蓝色背景。 2. 给整个数据区域加上所有框线。 3. 自动调整所有列的宽度,让内容都显示出来。
这个操作,每天做一遍,烦不烦?烦!
现在,跟我做:
- 点一下那个“录制宏”按钮。
- 会弹出一个小窗口,让你给宏起个名字,比如“一键美化报表”。还能设置个快捷键,比如
Ctrl+Shift+Q。想一下,以后只要按一下这个组合键,所有操作瞬间完成,是不是有点小激动? - 点击“确定”,录制开始。现在,你做的每一步操作都会被记录。
- 开始你的表演:选中第一行,加粗,填充颜色;选中整个数据区域,添加框线;双击列与列之间的分隔线,自动调整列宽。
- 表演结束!点击“开发者工具”里的“停止录制”按钮(就是刚才那个录制按钮的位置,现在变成了一个方形图标)。
一部大片就此杀青。
现在,为了检验你的作品,把这张表弄回最原始的丑样子。然后,你可以通过两种方式来呼叫你的管家:
* 按下你刚才设置的快捷键Ctrl+Shift+Q。
* 或者点击“开发者工具”里的“宏”按钮,找到你命名的“一键美化报表”,点击“执行”。
看到了吗?电光石火之间,所有格式瞬间设置完毕。跟你刚才手动操作的结果,一模一样。
这就是录制宏,宏世界的大门已经向你敞开。它是你学习宏最重要、最直观的老师。很多时候,你不知道某个操作对应的代码怎么写,怎么办?录一遍!录下来,然后去看它生成的代码,模仿它,改造它。
掀开神秘面纱:瞅一眼VBA代码
我知道,我说了不谈代码。但你现在已经不是小白了,你已经是个“导演”了。难道你就不想看看你的剧本长什么样吗?
按一下快捷键Alt+F11。
一个全新的窗口弹了出来,界面有点像上个世纪的产物,这就是VBE(Visual Basic Editor),所有宏代码都住在这里。在左边的工程窗口里,找到一个叫“模块”的文件夹,双击打开里面的“模块1”。
看到了吗?右边窗口里那些英文,就是你刚才的“表演”被翻译成的“剧本”。
vb
Sub 一键美化报表()
'
' 一键美化报表 Macro
' 快捷键: Ctrl+Shift+Q
'
Rows("1:1").Select
With Selection.Font
.Bold = True
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.799
End With
Range("A1").CurrentRegion.Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
' ...(后面还有一堆)
End Sub
是不是看着像天书?别怕,你不需要全部看懂。但你可以尝试去理解它。比如.Bold = True,猜也能猜到是“加粗=是”的意思吧?再比如Rows("1:1").Select,不就是“选中第一行”吗?
这就是你进阶的开始。你可以试着修改它。比如,你觉得蓝色背景不好看,想换成黄色。你不知道黄色的代码是什么?没关系,你再录制一个只“填充黄色”的宏,然后把那段代码复制过来,替换掉原来填充蓝色的代码。
看,你已经开始在“修改剧本”了。你从一个单纯的导演,开始向“编剧”的角色转变。你不再只是机械地重复,而是开始创造。
真正的大杀器:当宏开始“思考”
录制宏很强大,但它有个致命的弱点:它是个死脑筋。你录制的时候怎么做,它就怎么学,一步都不会错,但也一步都不会改。
但现实工作是复杂的。你今天的数据是100行,明天可能是1000行。你录制的宏只会处理100行,那多出来的900行怎么办?
这时候,就需要我们给宏注入灵魂,让它学会思考和判断。这就需要你稍微写几句简单的代码了。别跑,真的很简单,比你学函数还简单。
比如,我们经常需要处理到最后一行。但最后一行是变化的。你可以用这样一句代码来找到最后一行:
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
这句代码就像一句咒语,它的意思是:找到A列(数字1代表A列)里,从最最下面一个单元格(第1048576行)往上数,第一个有数据的单元格,然后告诉我它的行号是多少。
有了这个lastRow,你就可以让你的宏变得无比智能。比如,你想给A列到D列的所有数据都加上框线,你就可以这么写:
Range("A1:D" & lastRow).Borders.LineStyle = xlContinuous
看到那个& lastRow了吗?它就像一个变量,如果今天最后一行是100,这句代码就等同于Range("A1:D100");明天数据变成了1000行,它就自动变成了Range("A1:D1000")。
你的宏,活了!
你还可以让它做判断(If...Then...Else...),让它做循环(For...Next...),处理成千上万行数据也就是一瞬间的事。这才是宏真正恐怖的地方,它把Excel从一个电子表格,变成了一个可以定制化的、强大的自动化数据处理工具。
别忘了“存档”和“安全”
最后,有两个非常重要的点必须提一下。
-
保存类型:包含宏的工作簿,不能再保存为普通的
.xlsx格式了。你必须在“另存为”的时候,把文件类型选择为“Excel 启用宏的工作簿 (.xlsm)”。否则,你辛辛苦苦写的代码会全部丢失,别问我怎么知道的。.xlsx是纯净版,.xlsm里的那个“m”就代表着“macro”。 -
宏安全:因为宏的能力太强大,可以操作你的文件,所以Excel默认会禁用来自不信任来源的宏。当你打开一个
.xlsm文件时,通常会看到一条黄色的安全警告。如果你确认这个文件和里面的宏是你自己写的,或者是你信任的人给你的,那么请务必点击“启用内容”。否则,你的宏就是个摆设,根本运行不了。
从今天起,当你再遇到任何需要重复3遍以上的操作时,你的脑子里就应该响起一个声音:“这个,能不能用宏来做?”
当你开始拥有这种自动化思维时,恭喜你,你已经掌握了Excel的精髓。你不再是那个被表格奴役的“表哥”、“表姐”,你成了驾驭数据的骑士。
去试试吧。从录制一个最简单的格式化操作开始。感受一下那种一键下去,所有烦恼瞬间消失的快感。
你会爱上它的。
【excel中宏怎么使用】相关文章:
excel表格怎么选中12-10
excel怎么批注图片12-10
excel怎么设置缩进12-10
excel怎么复制全部12-10
excel怎么绘制斜线表头12-10
excel中怎么去重复12-10
excel中宏怎么使用12-10
excel怎么设置表格居中12-10
excel怎么转换jpg格式12-10
mysql怎么导入excel数据12-10
excel怎么固定表尾12-10
怎么打开多个excel窗口12-10
excel怎么设置页头12-10