2020-08
21

懒精自动化

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

对别人来说,做某件事就是从系统上读取某些数字,抄在纸上,然后不断地敲计算器,得出某些数据,然后再按照某些格式整理成别人要的样子。之前我也是这么干的,但是我觉得,这实在是太累人了。我要做的不仅仅是读取系统上的数据,我做的是读取我自己的数据,然后跟系统上的做比对。做的东西必须是最小单位。明细对好了,后面的汇总是水到渠成的事。我觉得,汇总数据这种事,规则我定下来,结果应该是自动生成的,管好我的明细数据,汇总数据就不会出乱子。汇总数据出来了以后,还得按照某些格式整出来,这其实是一个填坑的过程,但是应该怎么填呢?逻辑的思路就是,如果有数据就展示出去,如果没有数据,就为空。这是主要思路,但某些细节问题其实也是需要考虑的,比如说数据与数据之间的标点符号:逗号,分号,句号,冒号等等。没有数据的时候,那个地方是空,但是在连接两个数据之间,有些人默认带入了标点符号,于是就会出现一个神经质的状态。数据与数据之间有一大堆莫名其妙的标点符号,正常情况下,那些东西都不应该存在。按照人的思路,那些东西根本不可能存在,但为什么有那些东西呢?显然是那个做判定的人没有把标点符号写到判定里。什么时候应该逗号,什么时候应该句号,当没办法判定哪个才是最后一个的时候,标点符号怎么办?其实真的不能判定吗?肯定是可以的,当某个元素的序号等于这个数组的最后一位,显然那个东西就是最后一个了。在Excel的世界里。尤其是不考虑VBA,只考虑前台的公式,这个逗号的判定在我现在的能力范围之内,的确有点难,所以遇到这种情况,我干脆每个数据给它一行,每行数据的末尾,不加任何标点符号。

昨天我突然意识到,Excel的公式编写是可以插入空格和回车的,当然,空格和回车要加在恰当的地方。比如加在数据连接的地方,不要加在某个函数里。又或者其实加在某个函数里面也是可以的,但是如果你在表达字符串的地方加入了很多空格,最终的结果肯定会哭。也正是因为回车的加入,让我的公式看上去更整洁了,我不用纠结不断地眼睛急转弯。复制粘贴也变得相当的容易。的确复制粘贴很简单,但是粘贴得多了,每一行的数据框架都是一样,只是修改了里面的部分内容就会让我自然而然想到使用循环。如果Excel的公式里有for或者while这种循环该多爽。换句话说,为什么就不能有循环呢?之所以这样,大概是因为Excel,没想过你要么在某个单元格里面展示一堆合并起来的字符串。这种字符串的合并,理论上更应该出现在Word或者普通的txt里面。

我首先写了个索引,然后写了个数据,接着对数据进行数据透视表,最后写了个很长的公式。根据数据透视表和数据透视表以外的一组数据,生成了两段字符串。字符串里面所有数字的格式全部都严格按照我需要的模样输出。这样做的确实现了我想要的功能,但我感觉还是有点麻烦,如果写个VBA,加入数组,这些东西很容易就能表达出来。从前前台看来,也会干净利落很多,但问题是,加入VBA的话。Excel的保存格式就得改变。对小白来说,VBA是个洪水猛兽。他们不知道该不该允许宏这个东西。如果我是他们,我不了解这个东西。这个东西的确有安全隐患,我肯定不会主动打开,即便我知道这个东西可能很强大。

开源的东西用起来得花一些步骤。组装好的东西用起来的确用很爽,但问题是,万一里面有猫腻呢?归根到底,还是自给自足、自娱自乐比较好。

2020-08
1

真的是软件在欺负你吗

By xrspook @ 17:10:03 归类于: 烂日记

前几天,我的一个同事跟我说她现在用的是WPS,在筛选数据的时候,一个数据源每一次筛选出来的东西都不一样,今天是一个总数,明天又是另外一个总数,问我会不会遇到这种事情。首先我跟她说,我根本不用WPS,因为它不能满足我的要求。其次,我用Excel时候,从来不会发生这种事。她跟我说,筛选少量数据的时候,没有这种问题,但是数据量一大,就会出现状况。我没遇到过这种问题,我信任我正在使用的软件,同时,我的软件,也没有背叛过我。然后就没有然后了。她没有叫我去她那里实地给我演示一下WPS是怎么把她整死的,我也没有主动要求去看一下,到底WPS在搞什么鬼。我觉得,不是WPS搞什么鬼,是她的数据格式有问题。最大的可能性是不够规范。非常有可能出现了合并单元格之类的东西,也有可能数据粘贴过去,某些单元格里出现空格之类的玩意。各种各样奇怪的现象都有可能发生。之所以有这种感觉,是因为几乎每次她给我看一个新表,里面都有一些奇怪的东西。

对我这个Excel控来说,那些瑕疵是完全不能存在的,比如说我最讨厌的类型——明细表格里有合并单元格;也比如表格的标题模棱两可,让你不知道那到底是什么;第三次是逻辑思路混乱,根本搞不懂一个表格里勾稽关系到底是怎么样的。于是这也难怪为什么领导布置下来的东西,她不得不一次又一次交上去,因为领导要觉得不满意,叫她一再返工。别说领导不满意,我这个路人甲也看不过去。领导为她好的话,怎么会不让她返工呢?一方面我觉得,其实领导的这个做法挺好,因为他没有给你设定好你到底要怎么干,你按照我思路去干就可以了。他给了你一个思考的空间让你琢磨,这是个让你进步的好机会。但你交上去的东西老是不合他的要求,谁都会上火。

之所以会发生这种事,其中一个原因我觉得是在她自己设计那些表格之前,见过的表格太少了,尤其是非常复杂的。什么东西应该放在一起,什么东西不能放在一起,她没有一个很明确的思路。自己的知识库容量不够,当然不可能折腾出知识库范围以外的东西。其他人是怎么处理这些数据的呢?他们用的是什么工具?什么表格?什么方法?领导是这么要求的,但是我觉得我的这套方法比领导要求的更清晰,更不会出错,我可以跟领导解释我的用法,如果合理的话,我觉得领导不会有意见。情况就像我们做毕业答辩的时候,就应该有这么一个底气,在这个课题上,我花的时间和精力都很多。比台下评分老师了解的还要透彻,虽然他们的经验比我丰富。所以,在我的这个课题上,我应该很有信心。但是,绝大多数人都不会这样,于是就会出现毕业答辩的时候被下面的老师批得一塌糊涂却哑口无言。有可能是他们对自己的课题根本不清楚,也有可能纯粹是因为太紧张了,脑子转不过来。

规则在你手,数据由你去整理。如果你都没有一个靠谱的处理方法,别人怎么会放心。不觉得自己不靠谱的方式有问题就是最大的不靠谱。

2020-07
30

VBA批量打印凭证

By xrspook @ 9:44:34 归类于: 烂日记

昨天我打印了一大堆记账凭证面单。理论上我可以用邮件合并的那套表格去的,但实际上,我依然用的是单独一个Excel文件带控件的打印方式。需要打印的凭证面单有很多。估计超过10张。如果只是一两张,用控件的方式挺好,控件我设置为可以利用上下键,选上一张和下一张。也可以在输入函数的地方直接手动填写数字。只打印某一张或者某几张的情况下,这样做很方便。但当我要打印的东西是一大堆的时候显然这就不靠谱了,万一我手抖一抖,按两下,跳跃了呢?万一我按完,选择以后快速打印按钮按偏了呢?我根本不知道自己打印了多少张,中间有没有漏掉。邮件合并可以有选择范围,我可以选择某个范围内的记录,生成一个新的文件,然后直接打那个。如果我生成一堆工作表,我还得把它们删掉,新建一个文件,我还得删文件。与其这样,不如让机器去执行,我一边数据递增一边答应。人肉会按漏,但对机器来说太简单了。虽然这样不断提交打印,会比全部一起打印慢一点,但实际上,对我来说,一点影响都没有,因为我配套使用的是打印速度非常慢的针式打印机。如果我用的是激光打印机,而且还是非常快的那种,打印内容非常少的话。我这样的操作会影响打印速度,但现在,我做的做法非常简单且完美。之前我想不通,在Excel里要如何实现批量邮件合并的功。昨天,几乎可以说不费吹灰之力我就实现了,而我做的仅仅是写了一个几行字的宏而已,而具体某些步骤要怎么写代码可以先录制一个宏,看看参考一下。我最需要参考的是快速打印要怎么表达。因为VBA批量打印太方便,所以我通常都忘记先选择针式打印机。针式打印机不是我的默认打印机,所以按下批量打印以后,当我的激光打印机开始轰鸣,我才记起自己搞错了,所以我得迅雷不及掩耳地关掉激光打印机的电源,然后重新选择针式打印机。我觉得应该完善一下这个脚本,我应该把打印机也设置好,默认为针式打印机,这样我就不会有用错打印机的烦恼了。

这个脚本非常简单,前面的部分我已经写过了,用的是指定行打印的思路。首先输入两个数字,如果第2个数字留空,就默认等于第1个数字。如果第1个数字也空的话,打印不会执行。当第1个数字和第2个数字都靠谱了,会进入一个循环,步长为1。里面的语句超简单。说白了就是一个让某个单元格里的数字自增,然后快速打印该页面,因为这个页面我已经设置了打印区域,所以一切都很简单。之前我还在想,要做个控件,在Excel里面输入起始和结束页码,但实际上这根本没必要,直接弹窗挺方便。当然,就严谨性来说,我的脚本是有缺陷的,比如万一我输入的东西不是数字还是其他字符呢?万一我输入的数字不是整数,不是Excel表格里行数范围内的东西,而是一个浮点小数呢?我当然可以对输入进行严格的限制,限制它的范围,也限制它的数据类型,但这样显然就有点过了,毕竟这种打印完全是用来方便我自己的,没必要做到这么完美无缺。

现在,妈妈再也不用担心我会漏掉打印某些凭证面单了。

2020-07
14

脚本相关

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

昨天GitHub不知道发生什么状况,下午我发现服务器上不去,晚上貌似又好了。但问题是,下午我push上去的东西,代码页面已经修正过来了,但是网页显示还是老版本,至于为什么,我实在没搞懂。无论,我把仓库检查多少遍,线上跟线下都是一致的,为什么展示页面却不行呢?实在让我很迷惑,如果仍然是这种状况,估计我得把整个仓库里的内容全部删掉,然后重来。这样做肯定是最彻底的,但我真的需要如此变态吗?好像有人说过,如果修改了某些东西,那个会导致网页崩溃的话,GitHub Pages就会一直保留在最后那个靠谱的版本,我觉得新生成的网页没什么问题,因为我在单机上也测试过了,所以接下来可能我要把本地仓库里面的东西全部删掉,然后重新生成网站,再去校验。昨天我试图用一下git bash,但我发现自己根本不知道那个五颜六色的东西要干嘛。尤其是到达某个叫我注释的页面,我完全不知道该如何处理那个东西,不知道该用键盘还是鼠标,不知道应该在哪里操作。那个界面没有任何提示,真的让人非常抓狂。Dos界面很多东西都是默认的快捷键,但显然那个五颜六色的版面的快捷键我一窍不通。而他们默认的处理方式是你懂的。用CMD处理git不是老手做法,但我觉得CMD反而让我心安理得一点,因为CMD要输入的东西永远在最后,不会五颜六色蹦出来一个界面,或许能用鼠标,但实际上又好像实现不了某个功能。VS Code貌似原生是支持GitHub的功能,但我好像找不到登录界面。我明明已经把某个仓库的本地文件夹加入到VS Code的工作区,但是软件还是没感知出来。

下午的GitHub一直显示服务器500错误。没办法搞那个,所以我就研究Excel VBA去了,去实现一个我一直以来都很想做,但是却一直没有动手的东西。最终我写出来了两个脚本,一个用来整理数据,另外一个用来一键生成数据透视表。这两个东西,基本不需要再理清思路,首先用录制宏走一遍,然后参考一下里面的代码。录制的宏里面,总有很多废话,很多无厘头的各种操作。如果那个代码完全是写的,而不是录制的,就没有这么多多余的东西。录制的宏里面默认会带入非常多的默认设置,但实际上,那是不需要写出来的。录制的宏里面也有非常多确定某个选区的命令,但实际上,那也是没必要的。在Excel的可视化界面,鼠标点在某个单元格,录制的宏里面就会确定一个选区。实际上很多时候,鼠标点在哪个单元格其实都是无所谓的,那是很随意的,但是其实我们可以确定某些不随意的单元格。把定位写死就不用经常切换选区,选区选来选去,选了以后又没取消,我不确定会不会整出什么幺蛾子。数据整理的脚本我写的内容还多一点。数据透视表的一键生成跟我录制出来的那个东西差别不大,因为的确那些语句都得表达出来。耗费我最长时间的是数据透视表新表格的建立。我一直以为是数据选区我的表达有问题,但实际上原来是我新增数据表的某些语句写错了。VBE与VS Code比起来,我觉得最不人性化的就是,明明那都是明摆的语法,是你拼写错误了,运行的时候,居然不提醒你。如果能像VS Code那样,固定搭配写对了,显示某个颜色,如果你乱写一个东西就不是那个颜色,语法错误就给你下滑波浪线,debug的时候,我就不需要浪费那么多时间。昨天我的状态也不太行,因为一些理所当然的单词我几乎每次都会拼写错误。看来看去找不到原因,最后发现单词写错了。大概如果我要玩Excel VBA,我必须得找一个靠谱的VS Code插件。

在经历过好几个星期才能解决一个脚本问题以后,一天解决了两个,让人有莫名的成就感。

2020-07
7

吐槽逆天格式

By xrspook @ 9:18:37 归类于: 烂日记

统一格式是非常有必要的事,但是一直以来,格式这种东西都非常难统一。正是因为格式很乱套,所以汇总的时候就很头痛。昨天我算见识到了一个闲得相当蛋痛的表格。Excel里明明可以调节列宽和行高,我的那个同事却喜欢把4个单元格合并为一个。整个表都是这么整法,一开始我只是关注上面的数据,当我检查完上面的数据以后才发现这么逆天的格式。不知道她为什么会想出这种极端无厘头的东西。她有把Excel,当做是Excel吗?!她不过是把那当作是一个画图的东西,如果按照这种逻辑,她是不是应该在Excel里画一些抽象画呢?说不定梵高之类的什么都比不上她。能做出如此逆天的表格,只能说明一个问题,她完全不懂Excel的思路,几乎可以说是对牛弹琴。这些表格如果打印出来,是看不出问题的,但是,一旦见识过原貌,我简直是五体投地。

对上一次见识这么厉害的表格,是十几年前的那些系统导出数据表。为了控制行距和列距,不知道为什么他们合并了好多单元格,也隐藏了不少单元格,同时也对很多单元格设定了格式。所以从一开始做导出,我就发现,每次格式都好奇怪,尤其是如果导出数据很多,格式必然会崩溃。明明不需要那么多格式,明明不需要那么多颜色,为什么要做合并?为什么要去格式控制?

我的那个同事,如果她平时是极少接触表格的,我不会这么震惊,问题是,她的工作根本离不开数据,但是,她居然这么外行地对待数据。看到以后,我真的很生气。来这个单位已经一年了,即便没有人告诉你应该怎么做,你每天都对着那些东西,难道你就不会自己长进一些吗?另外一个让我非常不理解的是她所在的科室,跟她相处得最多的同事,为什么就没有提醒过她不应该这样呢?会看的看门道,不会看的看热闹,反正,大概其他人觉得数据本身没有问题,格式什么的都是小事。正是因为他们觉得格式是小事,所以那个格式乱套的表格其实数据也有重大的纰漏。因为我是一个很手贱的人,所以可以复制粘贴的地方我绝对不会敲键盘,如果我需要敲键盘,那个数据我需要起码三次以上的复核。在一个合并单元格里,她怎么又可能把数据轻松地复制粘贴过去呢!这些逆天的格式,她是在整死自己,也在整死别人。

之所以我会有这种看法,之所以我会有这种思路,因为我除了是个搞统计的,我也是个搞编程的。我完全明白前台跟后台的区别,我也完全明白明细数据跟汇总数据到底是什么鬼东西,而这些他们不懂,他们没想过要把这些搞懂,因为他们完全没有意识到自己应该在那方面努力,又或者即便意识到了,也觉得既然可以得过且过,无所谓了。聪明这种东西,如果不用在正路上,始终一天会被笨鸟超越。我觉得,我就是其中的一只笨鸟。

但是,也正是因为我知道得太多,所以当我看到别人的所作所为以后,我会实在忍不住吐槽或者发飙。

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