2019-07
8

RUN NOTE

By xrspook @ 22:45:12 归类于: RUN NOTE

星期一 2019-07-08 20:55
平均心率111,最高心率131,平均配速548,原地跳。我明明可以早点开始的,但心里牵挂着要把库存汇总的方式以数组的方式表达出来,于是就先去做那个了。我明明知道那个东西不是十几分钟就能折腾出来,但我还是毅然开始,结果呢,投进去了1个多小时。按照正常人的思路,我应该白天有空的时候去折腾,但显然我这个急性子没办法控制住强烈欲望的冲动。#xrspook未行够#

2019-06
25

VBA入门毕业

By xrspook @ 9:50:42 归类于: 烂日记

做天我把《别怕,Excel VBA其实很简单》看完了。感觉居然是原来这就结束了,但实际上,我好像有些东西还没掌握,所以我估计要把那本书再看一遍。虽然看这本书的时候我已经是一边看一边写。因为那些公式术语之类的,必须记下来,然后才有后面的运用。但虽然自感我已经写了很多,但是有可能因为看书太断断续续,所以实际上有些东西我还是没有记住。把书看到最后的时候我才发现原来在跟Excel数据库玩游戏的时候利用好数组非常重要。那本书最后那个例子是在1万个单元格里面输入1万个数字。原理很简单,实现方式很直白,但是用数组的方式录入比用常规的单元格录入效率相差一大截。数组录入的速度是常规方式的20倍,当然这只是一个大概估算,但显然,两种方式的效率差别很大。反观我自己写的那些脚本,我完全没有考虑过用数组。因为我没想过可以怎么使用数组。使用数组意味着你必须对界限这种东西非常清楚,但其实在不用数组的时候,我也是需要明确界限。如果我使用了数组,或许可以把之前需要用一两秒才运行出来的脚本进化为电光火石眨眼间之内结束战斗。

的确,昨天看到那个对比以后,我回去审视自己的脚本,但暂时来说,我还没想到可以怎么用数据去写。所以,我要把那本书讲到有关数组的地方再读一读。

写了这么久的VBA,但是每当要我准确地说出单元格位置的时候,我总要思考半天。因为用Range和Cell的时候,二者的坐标轴顺序刚好是相反的。那两个经常把我搞糊涂,所以当数组也插一脚的时候,我就更迷糊了,这三者的关系我必须搞清楚。这是做其它一切的基础。

还记得当年学C语言的时候,数组对我来说就是一个难点,貌似我一直都没有怎么想通透那个东西。在Excel里,有时最简单的一维数组可能就够了,通常来说二维能解决大部分问题,但说不准什么时候需要用到更多的维度。当年之所以把我搞迷糊,是因为那些维度总是让我摸不着边。我觉得三维已经是我的极限,更多的维度该如何表达我小小的脑袋思考不出来。现在我觉得其实我根本不用想象出具体的空间结构是如何的,我明白那种层次的关系也就可以了。

Excel这东西无非是玩好几个,文件夹基本上已经算是最大的范围,接下来是工作簿、工作表、单元格,以及单元格里面的具体东西,Excel就是控制好这些东西。VBA之所以牛逼,是因为它可以把很多重复性的东西批量完成,但是你要把命令写到位,那个软件才会以你设想的方式运行,并得出你想要的结果。玩好这个东西是为了我们以后做具体事情的时候不必那么埋头苦干地重复劳动。但在此之前,我们必须理清我们干那件事所需要的全部逻辑。就像一个高级技术人员,他或许不需要做一些非常实际的工作,但那些最基层的实际工作,他必须全部都吃透明白。

现在我才刚入门而已,从入门到基本上手是一个漫长的过程,就更加不用说往后更高层次的灵活运用了。

2019-06
21

专注,帅

By xrspook @ 9:29:09 归类于: 烂日记

直面人生的各种恐惧,有时是挺让我着迷,因为只要你一头埋进去,你就可以马上忘却身边的很多。但很多时候,那个恐惧不是你选的,而是别人强加给你的。无论你愿不愿意,你还是得接受。那个时候,可能你的就不是恐惧,而是厌恶。我是个很怪的人,从小我就发现了这么个现象,有些东西可能我一开始是厌恶的,但时间长了,我渐渐就没什么感觉了,最后甚至会喜欢上,这种事情很微妙,但一旦这种奇迹发生,那种喜欢甚至会超过一开始我就着迷的那些东西。但显然,我活了30多年,这种事情发生的几率非常低,大概不会超过1%。或许随着年龄的增长,尝试的东西多了,这个比例会提上去。

昨天我突然意识到,那本《别怕,Excel VBA其实很简单》其实我已经快看完了,只剩下二十页不到而已。有些东西我的确了解了,但我不能说我真的学会了。毕竟那本书有些东西写出来,他们默认你一早就知道,但实际上你并不知晓。语法这种东西,或许你还能猜一猜,但是单词完全不了解,你又怎么整得出来呢?有些时候,某些新新语法是他们之前没有解释过的,直接就蹦出来。大学的时候的食品工程原理其中有一门功课是设计一个东西,那是一个管壳冷凝器。老师说,如果能为那个东西编写个软件,就可以加分,我真的这么干了。那个东西的设计思路我是完全按照Excel的,因为我首先在Excel里算好了。那个程序我用的是VB,在那之前我只学过C语言。基本上那个VB就是把我的Excel演算重复一遍,不过在某些地方,加入一些判断。总的来说那个程序很不智能。你要把你找到的所有数据填进去。如果你填对了,就会得到应该有的效果,但是如果填不对,程序或者或许会崩溃。所以那个程序最后我封装了两个版本,一个是空白的,需要你填数据,另外一个是我已经把正确的数据填进去的,只要你按一下确定就能够得到正确答案。的确,在交电子版图纸的时候我把程序放进去了,但最后发现我的成绩跟别人没差多少,于是我就怀疑,可能老师根本就没细看电子文档的东西,尤其发现那个程序是一个exe的文件就更加不会随便打开。现在回想起来,如果我聪明的话,我应该把程序的脚本全部打印出来,附在纸质版东西的后面。那么即便老师只是很随意地翻一翻我的作业,也会看到我为这门功课设计的软件。

同样是VB,现在看Excel的书,对比我曾经写过的VB软件,感觉好复杂。这大概因为以前我写的东西根本不涉及数据库这回事,但现在要玩转我自己的东西。脚本就必须跟Excel数据库进行各种信息交换。简单来说主要有两点,一个是判断,一个是循环。玩好这两个以后,余下的那些就只是在某些地方用上一些固定的语法。现在即便我已经基本把这本书看完了,但是要我自己写一个VBA,实现一些功能,还是挺困难的。同时,让我完全理解别人写的那些一大通的东西也很有难度。但这些东西越是有难度,对我来说就越有意思,毕竟只有这样才可以让我完全专注,静下心钻进去。

我一直都觉得,人在专注的时候是最帅的。

2019-06
5

用恰当的工具做恰当的事

By xrspook @ 8:41:58 归类于: 烂日记

有些人喜欢拿Word去做表格,有些人喜欢用Excel去画画,这都是神一样的操作,但是做前者的人却绝大多数不会看作是异类,但是做后者的人你就只能觉得他真是个艺术家。的确,Office的软件能解决很多问题,而且基本可以这么说,对一个中小型企业来说,你根本不需要其他额外的软件,光是玩好这套Office,就足够满足你所有的需要。前提是你的业务量没有达到百万级,但其实这个数据量我也是瞎掰的,因为实际上,通常我最原始的数据,一年下来不到2万条。从而不到2万的数据就可以衍生无数多的东西。Excel教会了我原始数据和汇总数据是两种彻底不一样的东西。在那些不怎么懂的人眼里,表格永远都是混搭的。最让我痛心疾首的是,他们把混搭的表格当作原始数据。于是你还得一条一条地把那些无关紧要的东西删除掉,有些时候可能你能找到规律,但有些时候,规律真的不明显。

如何筛选信息,把无关紧要的删除掉,对我来数这是一个必备技能,但对有些人来说那是高深的学问。你可以用Excel的筛选功能。但相比于Word,可以精准的使用通配符,显然Excel就没有了。我还记得,我的大学课程里有一门叫做文献检索,在那里面,老师介绍了国内国外常用的数据库。国内的数据库,查询大都是那样,最高级的要算是中国期刊网的,但是外国的那些,不同的数据库总有不同的通配符。你要玩转那些地方,就得记住某个符号在那里是怎么用的。在程序语言的世界里,也经常会用通配符,尤其在正则搜索。当然,在不同的编程语言下,这些符号又会有差异。回到之前那个Excel删除信息的问题,在软件的数据筛选里,可能你用的是某些组合方式,但是如果你用的是VBA,用的是写脚本的方式筛选,那又是另外一回事。最终如果你足够厉害,无论用哪个方式都能实现你的功能,但显然,对新手来说,你打算用软件自带的套路直接放到VBA里面使用,那就不合适了。也不是说直接使用就不能实现目的,但显然,如果你从机器的角度考虑。你就会明白其实你用了一个不怎么懂的人给你做翻译,虽然最终事情也能做成,但显然效率就不高了。还记得从前我选择理科而不是文科,原因是我觉得“学好数理化,走遍天下都不怕”就是这么回事,这句话就意味着那些符号在各地是通用的,但是语言就不一样。编程语言又跟一般的语言不同,编程语言在哪里都是通用的,因为命令的规则都是一致的,无论你说的是哪一国的语言,只有遵守那些规则,才能让程序达到你的目的。在编程的世界里,只有高端的算法,没有狗屁不通的语言障碍,因为实际上,跟你交流的不是别国的程序员,而是机器。暂不说现在的AI有多厉害,一直以来机器这种东西是最直白的,懂与不懂他不会给你一个尴尬的回复。机器最终只会给你两种结果,一个是你想要的,一个是你完全没有料到的。有时候,相比于跟耍滑头的人类玩,我更喜欢跟那些耿直的机器对话。

很多东西都是你越是深入,你越会觉得他伟大。

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