办公党和学生党经常会用EXCEL做很多图,做PPT的时候这些图需要对齐放置,如果每个图裁切的大小不一样,或者绘图区矩形大小不一致,坐标轴标题位置不统一,怎么摆都觉得哪里没有对齐。由于EXCEL强大的数据处理能力和普及使用率,小白还是坚持用EXCEL作图。时间可贵,作为一个外行,我们不需要懂很多,够用即可,下文是小白用Vba简单实现以上功能,将上图修改成下图。与大家一起学习EXCEL绘图,高手请多多指点。
1、建立“个人宏工作簿”:
个人宏工作簿就是一个EXCEL文件,当我们建立了个人宏工作簿以后,每次打开excel文件的时候,它在后台自动打开并且隐藏(可在“视图”中隐藏或者显隐),我们可以把所有的宏都放在“个人宏工作薄”中,这样我们就不用将EXCEL保存成含有宏的文件了。
如图点“开发工具”(没有的话,可以在自定义功能区里面找),点击“录制宏”,弹出“录制宏对话框”在“保存在"下拉菜单选择"个人宏工作簿",点击”确定",然后点击“停止录制”。第一个宏和个人宏工作簿就完成了。
2、编写宏文件:
打开一个EXCEL文件,点击“开发工具”“VisualBasic"弹出VB界面,在左侧的“工程资源管理器”树中(如果没有,请在VB界面点”视图“查找),我们看到了两个项目,第一个项目“personal.xlsb"就是自动打开的隐藏的个人宏工作簿,双击”模块1“,刚才录制的宏就在这里面,觉得没用可以删除,在模块1中,我们写下以下代码(注释见图片中),会点英语的应该都能看懂。这样我们的宏建好了,以后任意EXCEL都可以用了。
Sub 宏1绘图区和坐标轴设置()
Dim HalfHeight, HalfWidth, OffsetTop, OffsetLeft, ChartHeight As Double
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Width = 455
ActiveChart.ChartArea.Height = 348
ChartHeight = ActiveChart.ChartArea.Height
ActiveChart.PlotArea.Select
Selection.InsideLeft = 45
Selection.InsideTop = 10
Selection.InsideWidth = 400
Selection.InsideHeight = 300
OffsetLeft = Selection.InsideLeft
OffsetTop = Selection.InsideTop
HalfWidth = Selection.InsideWidth \ 2
HalfHeight = Selection.InsideHeight \ 2
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.Left = 0
Selection.Top = ((HalfHeight + OffsetTop) - (Selection.Height \ 2))
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.Left = ((HalfWidth + OffsetLeft) - (Selection.Width \ 2))
Selection.Top = ChartHeight - Selection.Height - 3
End Sub
3、使用宏修改我们的图表:
打开含有图表的Excel文件,双击选中图表,在”设置图表区格式“取消锁定纵横比,固定比例就不能按自己的数值设置了;选中”大小和位置均固定“,否则你插入和删除单元格,图表大小也会跟随者变化,很讨厌;将缩放比例固定到100%,在不同缩放比例下的图表效果是不同的;最后将坐标轴标题显示出来,因为代码中没有这一条,如果坐标轴标题没显示出来,运行宏找不到坐标轴标题会报错。
当然最好在代码中加上,这里先搁下,当我们用EXCEL修改好了图表,就可以用”宏“了,双击选中要修改的图表,点击”开发工具“-”宏“,在”宏对话框“中选择”绘图区和坐标轴设置”,点击执行,完成。至此我们设置了1、图表大小;2、绘图区矩形框大小,3、坐标轴标题的位置。
4、根据需要修改参数:
别人的大小参数可能不适合自己,对宏参数不满意,可以点击“开发工具”-“宏”-”编辑“弹出“模块1代码编辑窗口”,在这里修改大小数据。如果运行中遇到什么问题可以点击“单步执行”,按F8一步一步执行,看看哪一步有问题。
小白只了解3个东西,1对象:Chart就是一个图表对象;2属性:Chart有一个高度属性Height;PlotArea也是Chart的一个属性,代表绘图区,当然PlotArea也是一个对象,有着自己的属性,比如它的大小,颜色;3 方法,是一个动作,比如Select,就是选中;如果对代码中的任何东西看不懂可以在代码窗口将鼠标放在看不懂的地方,按F1会弹出MSDN帮助网页(如PlotArea),多看MSDN。
学习Vba除了看MSDN(不搞这个的估计都不怎么看),还有一个好办法,就是录制宏,比如我们不知道如何设置坐标轴标题颜色,我们点击“录制宏”,然后用鼠标对坐标轴添加颜色,然后去“模块”中查看刚才录制的宏代码,看不懂?按F1->MSDN看看。录制宏+MSDN+找一本参考书看看(如果学过C语言等,对编程语言有一点了解的只要花很少的时间看看就行了)
最后就是根据需要自己写代码,比如可以一次对所有图进行编辑,比如将程序写的健全一点,还可以添加自己想要的功能。
最后还可将将我们加工过的健全的宏添加一个按钮到功能区里(如图),依次点击“自定义功能区”-“宏”-“新建组”-“添加“就将我们的宏加到功能区了,这样就可以像其他功能一样使用了。
5、另存为图片格式:
excel部分完成就可以做成图片了,手动截图大小不好把握,既然我们已经设置好了图表大小,直接另存为就可以了;EXCEL中并没有另存为这一项,双击图表将其复制到PPT中(PPT中也可以像EXCEL一样对图表进行修改),然后就可以另存为JPG图片了,大小就是我们设置好的图表大小,避免了手动裁剪的不准确性。
这里经过测试有两点注意:
1、有些图片TIF格式可能要比JPG清晰一些;
2、如果图表里面有旋转的文本框(有一定的角度)那么JPG格式显示不出来文本框里面的文本,不知道什么原因,而TIF格式没有这个问题,所以小白会用TIF文件格式,如果必须要用JPG格式,可以用TIF格式转。
6、在PPT中排版:
最后一步就是将做好的图片复制到PPT中,进行排版,我们很明显的可以看到,每个图片的图表大小,绘图区矩形大小,坐标轴的标题几乎是对齐的,这时候我们很容易就可以对齐图片。
注意事项:
1、这个程序是不健全的,不符合编程的标准,只供参考,造成任何不利后果自行承担。
2、请查看图片中代码部分的注意事项。
excel坐标轴不等间距刻度该怎么设置?
Excel折线图怎么设置坐标轴起点不为0?
excel柱状图怎么将负值柱中的数据都移到坐标轴上?