2019-05
29

自动图表索引

By xrspook @ 8:39:31 归类于: 烂日记

用了这么多年的Office,昨天是我第一次用插入题注以及交叉引用。之所以这样,是因为这一次我写的那篇统计分析里面的图表实在太多,加起来接近有20个。整篇文章的正文我用的是三号的方正仿宋简体,1.5倍的行距,有18页纸,字数大概是5700。再编一编,我可以轻轻松松写够6000,但是我觉得没有凑字数的必要了。现在已经18页纸,如果我再写点,哪怕再写一行,就会超过18页纸。写那么多又有什么必要呢?在写完一大堆以后,我要把文章缩短,因为只有那样我才能够在结束的地方写个日期,否则以现在的长度,某一段话只要再多几个字就会分到第19页了。因为里面的图表多,所以做编号也会把人做疯掉。如果我改变了文章段落的编排,图片的序号及定位肯定会非常痛苦,加入或者删掉其中一个都绝对会让人疯掉,所以唯一的办法就是利用软件自身的序列功能。之所以从前没用过是因为读大学的时候老师对论文有严格的格式要求,而自动生成的图表序号格式不符合老师的要求,所以虽然毕业论文我写了很多字,也用了非常多的图表,但最终所有图片序号我都是手工编制的。

图表的顺序改变不仅仅是图表的说明文字需要改变序号,连正文的引用也需要改变,但现在,如果我用好了Word的功能,所有改变只需要更新一下域,就能解决问题。我不知道用过Word的人有多少个懂得这个东西,之前我知道有这个东西存在,却一直没用过。我觉得知道这个东西且一直在用的人显然不多,毕竟对普通人来说,一篇文章不需要写那么长,插那么多图表。如果要搞那么多图表,还不如用个PowerPoint。其实我觉得统计分析这种东西,除了用Word去表达以外,用PowerPoint也是一个非常好的方式。对读者来说,Word就像是以文字为主的杂志,而PowerPoint则更像是看一个图册。谁说图册就不能说明问题,看看《国家地理杂志》!他们的书里图片是重点,文字是点缀,我觉得统计分析也应该这样。同样一个图表,不同人有不同的看法。虽然我是作者,但我跟读者看到的是一样的图,大家都可以由此发表感想,我的表述只代表我的个人观点,所以,那些文字只是一个意见的表达,甚至你可以说那只是一个有感而发。数据不会说谎,但当然如果我有主观的意向,同样的源数据能造出完全不一样的后期图表,并不是因为我对数据本身做了什么手脚,而是因为不同的排列组合以及数据筛选方式会得出完全不一样的结论。我觉得统计分析这种东西我看中的不是里面的文字说明,而是上面展示出来的大数据。也正是因为我觉得图表本身比说明文字重要,所以我觉得有更的大图表展示空间的PowerPoint更合适。当然了,PowerPoint本来是用作展示的,所以除了里面的内容以外,还应该配合人去讲解。如果我连一个Word都写不出来,即便全部都是我做的东西,我怎么可能在展示的时候有话讲呢。

虽然一直在用Office,但直到现在,我才终于渐渐体会到Office三剑客的伟大之处。

2019-05
16

自适应打印格式VBA

By xrspook @ 11:33:48 归类于: 烂日记

昨天我只用了一个下午就折腾出了某个专门自动调节打印格式的VBA。相比于之前的尝试,这个算是比较快速了,而之所以可以这样,是因为之前我已经积累了一定的经验。昨天的快速是之前的龟速累加出来的结果。如果倒过来一开始我先做这个,然后再做那些的话,估计在这个上面我要耗很长时间。

这一次我并不需要对数据进行处理,我只需要改变格式。工作表的格式有些是直接可以看到的,比如说行高及列宽,而有些格式必须到打印界面才能体现的出来,比如说打印页边距、单色打印以及页脚。控制某个格式具体要用什么语句我不知道,如果我直接去查的话,估计要一段时间,所以我先录制了一个宏,然后从里面发掘一些我需要的东西。人肉定制和软件录制的区别在于机器录制里面有一大堆我根本用不着的语句,那些东西我不需要控制,所以如果人肉编写的话,它们可以全部都不存在。因为Office软件是外国人开发出来的,所以即便表面上看已经进行了汉化处理,但实际上代码层面他们依旧用的是外国人的思维。比如说打印设置里面的页边距,虽然在软件里我们看到的默认单位是厘米,但实际上看代码的时候他们居然把我们设置的厘米转换成了英寸,而且还保留了很长很长的小数位,估计是能保留多少个小数位就保留了多少个。这种逆天的操作只存在于录制代码的时候机器自动生成,如果是我们人肉操作,我们不可能写成英寸以及保留一大串的小数点数据。

昨天的那个VBA我首先是自己写了一些我力所能及的东西,接着是用机器录制了一段代码作参考,然后实行拿来主义,抄写过去。当我把东西合并起来以后,发现了一个奇怪的现象,本来我的代码针对的是工作簿里面所有工作表,但实际上有些工作表起作用了,但有些工作表却没有。在这个工作表里调用代码,但这个工作表有问题,其它的却没有。后来我才发现这是因为我把自己写的代码跟系统自动录制生成的合并起来了,但我没有在自动生成的代码里在人工加入某些语句,导致虽然在循环之中,但在执行某些代码的时候指代不明,于是就发生了一些我意想之外的事情。系统生成的代码几乎可以这么说,那不可以用于一个工作簿里面的所有工作表,从代码的构成就决定了这一点,而且相对于人肉写的代码,机器生成的代码有很多废话。但即便这样,机器代码还是非常值得人去学习,因为那就是机器的思考模式。

昨天的VBA耗费我最多时间的是在控制列宽上面。有些列是没有数据的,所以那些的列宽可以小一点,但是不能太小。因为太小的话表头的字即便进行了自动换行,还是有可能显示不全,因为那个表格在某些地方进行了单元格合并。如果遇到某一行,发生了这种事。。即便你使用了自动换行,也未必能达到你想要的效果。所以我的程序必须设定为在一定区域范围内有数据的单元格所对应的列使用自适应的列宽而其它列则使用固定列宽。自适应的列宽如果小于某个数值,也让它等于固定列宽。之所以要写这个VBA,是因为原始导出的表格列宽太大了,即便用A3纸打印上面的东西也很小看不清,更何况我要把它打印在A4纸上面。所以尽可能地缩小列宽是我写这个VBA的主要目的。

过去接近两年,我都以人肉的方式调整表格的格式使之尽可能地放大到A4纸上。现在借着VBA代码的东风,我终于忍无可忍,实现成功升级换代。

PS:有视频有真相!一开始我用手机录显示器,但摩尔纹简直让人崩溃。于是我就去找PC录屏软件,但要安装要注册要破解有病毒,最后,我用的是PowerPoint里的录制功能,真的很好很强大~这是我装了Office 365之后第一次用PowerPoint,实在太爽了!

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress