2023-09
2

选择关键词

By xrspook @ 10:39:32 归类于: 烂日记

写VBA的这段日子,我觉得自己的脑子越来越习惯用那种方式思考。如果你要把一件经常做的事情程序化,你就得抓住一些关键点。虽然流程大概差不多都那样的,但实际上人在操作的过程中还是有一些关键。如果想把那些流程标准化、自动解决问题,你就得把那些模糊的关键点全部都明确,比如看到什么关键词进行什么操作,这得一清二楚,而且这些关键词的选择还得考虑不容易被干扰。这些关键词的选取对一般人来说是没什么概念的,他们觉得大概应该那样,但实际上你要在一堆东西里面选取关键词,绝对不能像在一些标准序列里面选其中一个那么自然。

有一天同事发微信过来说我上报的某个数据好像不对,因为他筛选出来的结果不是那样的。我不知道为什么会发生这种事情,因为在上报那个数据之前,我已经再三核对。又过了一段时间,他又发微信过来告诉我,是他筛选的时候出现了一些干扰项,之前他没看到。他在去向字段筛选的关键词是Q3,理论上那是一个仓号,对绝大多数人来说,如果只说这两个字,也会觉得这是一个仓号,但问题是那天刚好遇到某个车的车牌里有这个Q3这两个字,于是他筛选到的结果跟我计算Q3的数量当然就有区别了。这个时候,如果他筛选的关键词不是Q3,不是Q3-01就不会有这种问题,因为没有一个车牌会有“-”。如果他选的是Q3-01,那么那些Q31、Q35的仓号也不会干扰到他的筛选结果。我不知道浪潮那些筛选项是如何设置的。如果是以前的那个系统,以前的那个需要运行exe的系统筛选,你还得选择到底是什么形式的筛选,是等于大于还是包含。现在浪潮那个在网页上运行的系统筛选词就只是模糊匹配。如果去向那里必须精确匹配,你不写Q3-01就返回不到你要的结果,他也不会遇到车牌号这种事情。把车牌和仓号按照流向放在来源和去向,从一开始我就觉得这很逆天。如果一开始就给我这样的数据,最后我还得通过入库和出库去判定到底哪个是车,哪个是仓。如果我的同事查找数据的那个界面没有这种来源和去向,只有流向、仓号、车船号,显然他一定会在仓号那里选Q3,而不会去车船号那里输入Q3,这样的话也不会遇到他碰到过的问题。

对编程的人来说,尤其是对那些专门要把某些程序自动化的人来说,非常在乎关键词的选择。因为把一些老表格自动化的过程中你会发现那些东西根本不是标准的字段模式。要怎么把那些非标的东西标准化,你就得绞尽脑汁选择关键词,怎么才会不重复?怎么才能实现你的目的?当然了,之所以这么说是因这些标准化是基于Excel工作表的,如果那本来就是一个数据库里面的东西,即便他们不愿意标准化,有些东西也不得不标准化。

当你强迫自己以某种方式去思考以后,经过一段时间的锻炼,你会觉得自己在不知不觉之中有了那种条件反射的能力。

2020-08
21

懒精自动化

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

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

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

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

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

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