excel如何建立自己的自动化图表模板
VBA是一般读者不愿过多接触和学习的内容,因为这个部分总是给人高深莫测之感。若要摆脱Excel图表制作中那些低效的大量重复作业,学习VBA宏代码就是一个必须要面对的问题。
办公室人员可能需要每周、每月都重复制作相同类型的图表,虽然Excel提供了图表的自定义模板和工作簿模板,但有时直接使用这些方法只能减少部分重复作业,通过使用VBA则可以大大简化这样的操作,我们需要的仅仅是用鼠标轻轻点击一下相应按钮即可。
我们是否对Excel图表制作中简单机械的重复工作痛恨不已?这些繁复的劳作不但消耗作图时间,而且会使我们对Excel图表制作的兴趣消耗殆尽。好了,如果这已经是一个必须要认真对待的问题,那么使用VBA来定制适合自己的工具集就变得再实用不过了。
除了自己动手来编写相应的VBA宏代码,其实我们也可利用Excel自带的分析加载项来制作相应的图表。此外,借助使用第三方工具集也是一个非常不错的方法。
注:虽然掌握VBA这个工具对于学习图表大有裨益,但并非必须。如果我们不打算对VBA进行更深入学习,本章的工具请直接拿来套用即可。
建立自己的自动化图表模板:面对周报、月报、年报中如出一辙的图表,我们还在日复一日、年复一年重复着这种燃烧激情和岁月的作业吗?如果回答是肯定的,我们是否想过,并且尝试去使用更加高效的方法,来实现这些简单、重复、低效的工作?如果没有,请不要再犹豫,马上行动起来,建立属于自己的自动化图表模板吧!
需求分析
Excel提供了自定义图表模板和工作簿模板,这样的操作虽然可以简化作业,但是在某些方面,依然不能有效地解决问题。如图13.1-1案例图表是非常典型的帕累托图表,如果仅是更新图表的数据,来重复使用这个图表,每次都必须要面对如下问题:
图13.1-1 需重复使用的帕累托图
- 将数据从大到小排列; 重新设置“辅助”列的函数公式; 修改两个系列的引用数据区域大小; 调整数值纵轴的最大刻度和“数值”列的合计相同,计算并设置相应的主要刻度单位。
上述4项中,尤其第4项,使用VBA基本是最佳的选择,除此尚无最佳方案。作为模板应该可以直接另存为副本,且不包含任何多余的作图辅助内容。
使用VBA来演练
通过13.1.1节的分析,要完成图13.1-1的案例的VBA自动化图表更新,我们将通过以下步骤来进行学习:
数据排序一般而言,我们制作帕累托图表的首要工作就是将数据从大到小排列,在图13.1-1的案例中使用的是自动筛选功能,其实也可直接使用按钮来完成。以下是这个部分的宏代码:
程序代码 片段:13.1-1a ChartUpdate图表更新-排序
排序的部分完全来自录制宏,然后修改排序区域获得,并不复杂,需注意Key1:=Range("C6"),此处是为首要排序基准。唯一有难度的是xRow变量,在此使用了[B65536].End(3).Row来赋值,这是为了和Excel 2003兼容,在Excel 2007/2010中,可以使用[B1048576].End(3).Row。
注:下述代码中凡涉及xRow变量的部分,一律使用红色字进行了高亮标注,请读者参考录制获得的代码进一步修改即可。
重置函数公式接下来由于受到数据的最大行影响,“辅助”列的函数公式所在的单元格,及公式中的单元格引用均会不同,因此重置“辅助”列的函数公式便是需要考虑的内容。录制宏:选中“辅助”列的函数公式所在第一个单元格,鼠标指向编辑栏结尾处,按下键盘Ctrl+Enter组合键,向下拖曳复制函数到最大行。最终修改后的宏代码如下所示。
程序代码 片段:13.1-1b ChartUpdate图表更新-重置函数公式
图表设置及数据引用更新由于在VBA代码的执行中,需要反复调用图表对象,所以在此处图表的设置和数据引用更新一并进行讲解。录制并修改后的宏代码如下所示。
程序代码 片段:13.1-1c ChartUpdate图表更新-图表设置及数据引用更新
注:在录制宏时,修改系列引用请使用[源数据]对话框,请勿直接修改SERIES公式,这会导致后期宏代码修改的难度增加。
后期整理完成第3步操作后,就已经完成了13.1.1节分析的4个要点,但工作表上的数据表依然需要设置统一的外观样式,否则由于每次数据有多有少,这将严重影响美观。以下是录制并修改后的宏代码:
程序代码 片段:13.1-1d ChartUpdate图表更新-后期整理
复制工作表接着新建一个工作簿,并将上述步骤处理的工作表复制进去,并删除表格上的辅助部分。以下是录制并修改后的宏代码:
程序代码 片段:13.1-2a SaveAs图表更新-复制工作表
保存新工作簿最后是将新工作簿保存到指定位置,完成最终宏代码的编写。以下是录制并修改后的宏代码:
程序代码 片段:13.1-2b SaveAs图表更新-保存新工作簿
其他
最后是向工作表添加触发器,来触发VBA宏代码的执行,如图13.1-2所示。推荐的做法是使用工作表控件按钮,切勿使用窗体控件,窗体控件需要在工作表代码区编写相应代码,这会给新建工作表带来麻烦,因为使用VBA来删除这些代码相对较为复杂,这也是代码写在模块,而非工作表代码区的原因。
图13.1-2 使用工作表按钮驱动VBA宏代码
注:为了保证代码的兼容性,此处使用的按钮名称被重命名为“按钮1”。方法是单击鼠标右键,选中按钮,在编辑栏左侧编辑框中修改,见。图13.1-2右侧的Test Data数据区为调试代码的数据,因为函数公式会影响排序结果,所以请直接选取必要数据区域,复制并“选择性粘贴:值”到Chart Data数据区进行测试。
绛旓細鏈夋椂鎴戜滑闇瑕佹牴鎹暟鎹殑涓嶅悓鍒嗙被鍔ㄦ佺敓鎴愬涓浘琛紝杩欎簺鍥捐〃鍏锋湁涓鑷寸殑澶栬锛屽敮涓涓嶅悓鐨勪粎浠呮槸鍥捐〃绯诲垪鎵寮曠敤鐨勬暟鎹负涓嶅悓鍗曞厓鏍煎尯鍩燂紝浣跨敤鎵嬪伐涓涓竴涓幓鐢熸垚锛屾垨鏄氳繃澶嶅埗淇敼鐨勬柟娉曟潵鑾峰緱杩欎簺鍥捐〃涓嶄粎璐规椂璐瑰姏锛岃屼笖瀹规槗鍑洪敊锛屼娇鐢╒BA鏉ュ畬鎴愭棤鐤戞槸涓涓畝鍗曢珮鏁堢殑鏂规硶銆傜▼搴忎唬鐮6.4-2鎵绀烘槸涓涓牴鎹笉...
绛旓細Applications锛圴BA锛夌紪鍐欏畯銆備綘鍙互缂栧啓鑴氭湰鏉ョ洃瑙嗘暟鎹殑鍙樺寲骞惰嚜鍔ㄦ洿鏂琛ㄦ牸涓殑鏁版嵁銆傝剼鏈紪绋嬫彁渚涗簡鏇撮珮绾х殑鎺у埗鍜岀伒娲绘э紝鍙互瀹炵幇鏇村鏉鐨勮嚜鍔ㄥ寲浠诲姟銆傝娉ㄦ剰锛屽叿浣撶殑瀹炵幇鏂规硶鍙兘鍥犺〃鏍艰蒋浠惰屽紓銆傛牴鎹綘浣跨敤鐨勮〃鏍艰蒋浠讹紝浣犲彲浠ユ煡闃呯浉鍏虫枃妗f垨鎼滅储鐗瑰畾鐨勬暀绋嬶紝浠ヤ簡瑙濡備綍鍦ㄨ杞欢涓疄鐜版暟鎹殑鑷姩鏇存柊銆
绛旓細鏂规硶3銆佸鏋滅敤閲忔槸浣鑷繁纭畾鐨勬暟鍊硷紝鏈堜唤涔熶笉澶氾紝涓嶉檺楹荤儲灏辩敤IF銆丆HOOSE鍑芥暟锛屾妸鍊肩洿鎺ュ啓鍦ㄥ叕寮忛噷鐩稿簲鐨勬樉绀恒1锛夊厛灏嗏滃垎绫绘昏〃鈥漵heet鐨勭涓琛屽懡鍚嶏紝鎴戝彇鐨勨滀竴绾у垎绫烩濓紝鍙嚜琛屼慨鏀广傜劧鍚庡1銆2銆3绫诲垎鍒懡鍚嶏紝渚濇涓衡滀竴绫荤殑浜岀骇鍒嗙被鈥濄佲滀簩绫荤殑浜岀骇鍒嗙被鈥濄佲滀笁绫荤殑浜岀骇鍒嗙被鈥濄excel鐨鍛藉悕...
绛旓細涔熻VBA瀵逛簬璇昏呰岃█锛岃繕闈炲父闄岀敓銆傚叾瀹炴垜浠篃鍙笉蹇呯籂缁撳湪姝わ紝Excel鏈韩灏辨湁鑷甫鍒嗘瀽鍔犺浇椤瑰伐鍏凤紝杩欎釜宸ュ叿鏄熀浜庡父鐢ㄦ鐜囩粺璁$殑宸ュ叿锛屽彲浠ュ府鍔╂垜浠彁楂樻煇浜涙柟闈㈠伐浣滅殑鏁堢巼銆傚湪浜掕仈缃戜笂锛屽瓨鍦ㄧ潃鍚勭被鍩轰簬涓嶅悓搴旂敤鐨勭涓夋柟鎻掍欢锛岃繖浜涙彃浠跺湪鍥捐〃鍒朵綔杩囩▼涓篃鏄潪甯稿ソ鐢ㄧ殑甯墜銆侲xcel鑷甫宸ュ叿鍒嗘瀽宸ュ叿搴撴槸鍦ㄥ畬鏁村畨瑁...
绛旓細鍦Excel2010宸ヤ綔绨夸腑锛屽鏋滄垜浠渶瑕佸湪鍚屼竴鍒楄緭鍏ョ浉鍚岀殑鏂囨湰鍐呭锛屽彲浠ュ紑鍚蹇嗗紡閿叆锛屼娇鐢ㄨ蹇嗗紡閿叆鍔熻兘鍦ㄥ悓涓鍒楄緭鍏ョ浉鍚岀殑鏂囨湰浼氭洿鍔犵殑杞绘澗銆備竴璧锋潵鐪嬬湅鍚э紒1銆佸湪鐢佃剳妗岄潰鐨凟xcel2010宸ヤ綔绨跨▼搴忓浘鏍囦笂鍙屽嚮榧犳爣宸﹂敭锛屽皢鍏舵墦寮杩愯銆傚鍥炬墍绀猴紱2銆佸湪鎵撳紑鐨凟xcel2010宸ヤ綔钖勭獥鍙d腑锛岀偣鍑诲乏涓婅鐨勬枃浠跺懡浠ら夐」...
绛旓細鍥句腑涓篋3銆2銆佸湪fx涓紙绾㈡锛夎緭鍏ワ細=IF锛圕3锛60,"涓嶅強鏍",IF(C3锛80,"鍙婃牸",IF(C3锛100,"浼樼")))3銆佽緭鍏ュ畬鎴愬悗锛岀偣鍑诲叾浠栫┖鐧藉崟鍏冩牸锛圕3鎴愮哗涓88锛屾墍浠3涓細鍑虹幇浼樼锛4銆佷笂杩板叕寮忔墦涓娆″嵆鍙紝鐢ㄩ紶鏍囬暱鎸夊浘涓孩妗嗛噷鐨勫皬榛戠偣 5銆佸悜涓嬫嫋涓嬮潰鐨勫崟鍏冩牸浼氫緷鎹箣鍓嶇殑璁惧畾鑷姩璇勫畾鎴愮哗 ...
绛旓細灏嗕笂杩颁袱娈靛綍鍒跺畯鏁寸悊涓轰笅鍒椾唬鐮佹锛屽畬鎴愪富浠g爜銆傝浠g爜娈靛寘鎷垵濮嬪寲浠g爜娈靛拰涓讳綔鐢ㄤ唬鐮佹涓ら儴鍒嗐傜▼搴忎唬鐮侊細6.4-1c銆VBA鍔ㄦ佸浘琛ㄥ埢搴︺鏁寸悊褰曞埗瀹 鍏宠仈鍒板伐浣滆〃浜嬩欢涓 瀹屾垚涓婅堪浠g爜鍚庯紝瑕佷娇鍥捐〃鍜屾暟鎹仈鍔紝瀹炵幇鏃犻』鍊熷姪浜哄伐鍙備笌鐨勮嚜鍔ㄥ寲锛屽繀椤讳娇浠g爜鍜屽伐浣滆〃浜嬩欢寤虹珛鍏宠仈鍏崇郴銆傜▼搴忎唬鐮侊細6.4-1d銆VBA...
绛旓細瀹屽叏鍙互锛屼絾鎿嶄綔涓婇渶瑕佺敤鍒版暟缁勫叕寮忥紝鑻ユ槸鏁版嵁閲忔瘮杈冨ぇ鐨勮瘽锛屼細瀵艰嚧璁$畻鏈哄崱鏈虹殑鍝 涓鑸娇鐢ㄤ竾閲戞补鏁扮粍鍏紡锛屽叿浣撳叕寮忛渶瑕佷綘鏁版嵁缁撴瀯琛ㄦ牸鏍蜂緥
绛旓細鍦Excel涓嚜鍔鐢熸垚璇㈣瘉鍑藉彲浠ラ氳繃浣跨敤Excel鐨勮嚜鍔ㄥ寲鍔熻兘鍜屽唴缃伐鍏锋潵瀹炵幇銆傞鍏堬紝闇瑕鍒涘缓涓涓寘鍚墍鏈夐渶瑕佺殑淇℃伅鐨Excel琛ㄦ牸锛屼緥濡傦細鍏徃鍚嶇О銆佸湴鍧銆佽仈绯绘柟寮忋侀渶瑕佺‘璁ょ殑璐︾洰淇℃伅绛夈傜劧鍚庯紝鍙互浣跨敤Excel鐨勯偖浠跺悎骞跺姛鑳芥潵鐢熸垚璇㈣瘉鍑姐傞偖浠跺悎骞跺姛鑳藉彲浠ュ皢Excel琛ㄦ牸涓殑鏁版嵁涓庨鍏堣璁″ソ鐨勮璇佸嚱妯℃澘杩涜鍖归厤锛...
绛旓細Excel琛ㄥ簭鍙鑷姩鍖鎺掑簭鎶宸уぇ鎻锛氬鏋滀綘闇瑕佸揩閫熶负Excel琛ㄦ牸涓殑搴忓彿杩涜鎺掑簭锛岃繖閲屾湁涓濂楃畝鍗曟槗琛岀殑姝ラ:棣栧厛锛屼粠绗竴涓崟鍏冩牸寮濮嬶紝渚嬪杈撳叆鏁板瓧1锛岃繖鏄綘鐨勫熀鍑嗙偣銆傛帴涓嬫潵锛岄変腑鍖呭惈绗竴涓暟瀛楃殑鍗曞厓鏍硷紝鐐瑰嚮鑿滃崟鏍忎腑鐨勨滅紪杈戔濋夐」锛岀劧鍚庨夋嫨鈥滃~鍏呪濄傚湪鈥滃簭鍒椻濆璇濇涓紝纭繚鈥滅郴鍒椾骇鐢熷湪鈥濊缃...