2024-04
13

二维到一维的种种

By xrspook @ 8:56:17 归类于: 烂日记

又花了半个下午的时间,把前一天已经做出来的Power Query再进一步优化,但是有些细节还是没想到该如何处理,比如说某些品种的价格会发生变动。五个仓本来是三个不同的价格,但是可能到了某个时点,要把它全部都变成一个均价。该如何表达这种东西呢?理论上,那个时点,无论是用三个单价,还是用一个均价,哪一个乘以数量都应该是一样的东西,但是那个时点应该放在什么地方呢?还有就是,那不属于一个出库或者入库,所以不应该有任何的价值变动。如果是完全相等的,还能说得过去,但是如果分明就是直接从一个价格变成了另外一个呢?所以我不知道之前干这个东西的会计到底是如何实现,因为我无论如何用任何单价和数量都得不到她算出来的某个价格。所以到底她用的是什么样的单价呢?又或者说,之所以我算不出,是因为她把一些之前可能没有减掉的东西,也一并减掉了,又或者是反过来,但我完全没有那个信息,所以我没办法完美地把这个模拟出来。

十几年前当我第一次接触数据统计的时候,那个快要退休的老大妈用的方法是在Excel里做一个很大的二维表。因为仓号很多,日期也很多,她选择的是以日期作为横坐标,仓号为纵坐标,她的那张大表得连续用好多张纸才能完整打印出来,然后用胶水把它们粘起来。也有好一段时间,我也在重复着她干的这个事情,不过我再也没有打印出来。因为我没有打印出来,所以我跟她的思路有点不一样,我把横坐标跟纵坐标调换了一下,因为就拖动鼠标来说,纵向比较容易实现。

又过了好多年,他们又把我从一个全职检验员变成了一个全职统计员,所以我又得跟这些数据打交道,但那个时候,我就再也没干这种事情。我已经不记得什么机缘巧合之下我认识了数据透视表,可以肯定的是不是因为任何一个同事教我,也不是因为学校里面有任何相关的信息,但不知道为什么,我就突然间通窍了。在那以后,二维表这种事情都是数据透视表干,我只需要把一维数据处理就可以了,但实际上身边的人,无论他们一直跟数据打交道,还是只是个初出茅庐的人都一直在不断地填写着二维表,不断努力地把二维表的数据更新到新的二维表里面。这个东西我非常反感,因为就数据处理来说,非常容易出错,比如某个地方理论上应该是一个公式,但你却把它贴成了纯数字,那个地方就算是彻底完蛋了。如果你检查的时候没有发现这个问题,这将成为一个永远的系统错误。这种在二维表上原来是公式的地方贴成了纯数字,又是一个非常容易犯的错误。所以我真的很敬佩制作那个国粮局报表一开始电子版的那个人。他把纯数字的地方跟公式的地方用不同的颜色填充。一开始我不知道不同颜色有什么用,但突然我就不小心发现了,填表变得简单。你千万不能动某个颜色的地方,填数就仅仅在某几行或者某几列。这真的是一个很绝妙的事情,虽然接到那张表的时候,没有任何一个人告诉我原来那个东西是这么用的。现在已经有了国粮局的网页直报系统,在某些行里填数,数字会自动汇总到另外一些你不需要填的行里,需要填写的背景是白色的,不需要填写的背景是绿色的。对老司机来说知道该怎么办,但如果老司机带新手的时候不跟他说,汇总的那些不用填会自动生成,估计新手会觉得要把汇总的部分也填上去了,但实际上可能那些绿色的部分根本不允许填数。现在的国粮局系统是这样,以前的电子版大概也是这个道理。会有些人不明所以,会在那些本来是公式的地方,贴纯数字,于是,本来完全不需要你操心的部分就变成了你全部都得兼顾了。可能从前国粮局的那个报表不是单位的某些人发明的,而是上面下发下来就默认带有那些颜色,但是他们又做得不太彻底,比如有公式的部分没有设定为完全不允许修改。

数据的处理,当你真的用心了,才会有真的感悟,而不只是遵循别人的“规则”。

2020-11
4

自强不息

By xrspook @ 10:23:24 归类于: 烂日记

到底我自己有多强大?即便我自己也不知道。

在对账这个问题上,貌似我的手上已经有不少的武器。那种东西是我不知道该如何积累回来的,已经成为了我的条件反射。该用什么方式才可以快捷方便而且全面,最好是扩展性也很强的。什么时候应该用搜索或者索引,什么时候应该用数据透视表,什么时候必须得上数据清洗……数据的高级应用,我很多还不知道,但现在,我已经不像从前那样只是蛮力复制粘贴了。

回想起来,10多年前当我第1次接触统计数据的时候,我用的是老员工留下的人工透视法。显然在手抄账的年代,那个东西非常直观。当时,李大姐的那个东西用了好几页纸打印出来,然后粘贴成一大张,我简直震惊了。上面的所有数据都是手填,万一我手贱了呢?每年的日期就那么多了,我们的仓会不断增加,我怎么能保证每个都不错?当时我没有想过可以用什么其他方法可以实现同样的事,我也没想到可以不用那样。怎么才能不人工?

那个时候我还不认识数据透视表。现在我觉得,数据透视表大概是Excel里面性价比最高的东西,那个东西是用来快速得出汇总数据的,但如果原始数据不规范,数据透视表就无从谈起。近些日子我又认识了Power Query。那个东西最擅长的是数据清洗,当然也可以把汇总数据一步到位,但是汇总数据这个活儿,我觉得PQ在处理不规范数据上用处更大,至于汇总数据这种事情,交给数据透视表就挺好,毕竟数据透视表可以随心所欲各种变换,而PQ一定程度上是在做脚本编写。如果只需要某个固定的最终结果,PQ一步到位,但是如果不确定需要的汇总结果,数据透视表更省事。因为数据透视表建立了,低手也能得出结果,但PQ这东西,高手写出来的嵌套公式,低手绝大多数时候都无法参透,即便你耗费很多时间奢望理解。没有一定的基础,PQ就是天书。现在,我仍然需要10年前那种用手工透视的效果,但我用的方法肯定不是人工透视。一年365或366天是固定下来的,但是随着仓数的增多,那将是一个无底洞。万一平房仓需要分堆垛了呢?那更加复杂,别说一张A4纸,即便是10张A4纸拼接起来也未必能表达得了。换句话说,如果10张A4纸拼接起来,我看完前面,再看后面,确定我在填写某一行的时候会不出错吗?

有些人只会延续前人的方法,埋头继续做。一开始的时候,我也是用前人的方法,但做着做着,在不知不觉之中我就改进了,最后得出了一套我自己的方法,我不知道这是不是最优,但我的方法可以让我得心应手,在提升质量的前提下,大大简化之前的操作。当我想让某个固定程序更方便的时候,我会直接写个脚本。现在我用的是VBA,或许以后我会用python。VBA是所有office软件都具备的功能,但python这种东西必须得电脑装软件支持。如果只是一个人使用,完全没问题,但如果数据需要多人协作,显然这样就有点不方便了,因为不同软件的版本可能会有一些意想不到的小插曲。

我在五行之中过日子,但我也必须跳出五行提高境界。

2020-09
19

我喜欢Excel

By xrspook @ 20:53:41 归类于: 烂日记

Excel的一般公式,我比较熟练,一些高级公式的叠加,我需要找教程套用,但起码我知道那是可以做到的。一般的数据透视表,是我一直以来用得相对来说最顺溜的东西,至于高级的数据透视表,也就是超级数据透视表我几乎不了解它的高级用法。在数据的筛选查询方面,之前我用的是公式,而近期,我知道了有Power Query这种神器。在这之前,我已经知道可以SQL语言查询。去年我开始系统学习了Excel VBA。这让我大大提升了某些工作的效率。当然这是非常有针对性的。对我来说,要开发一个VBA脚本需要好些时间,并不是一写就能用的那种类型,期间要经过不少修改。所以其实总的来说,对Excel的了解我还是比较全面的。

也正是因为有这样的经历,所以当我遇到某些综合性的问题的时候,当别人把目光主要集中在某个他们很熟悉的版块的时候,我会凭借我的直觉找问题,而不局限于他们觉得出问题的那个地方。比如在把SQL查询跟VBA结合的时候,别人会把精力放在SQL查询有没有写错上面。SQL有没有写错,其实我根本没看,对我来说那些东西太长了,看不懂,而且那个人写的VBA脚本缩进很有问题,看得我很郁闷,所以我就更加没有心情在那里琢磨。那既然能计算出一个正确答案,说明那个查询语句应该没什么问题。也正是因为写脚本的人的那堆东西格式比较混乱,所以我有理由怀疑那是拼凑起来的脚本,因为居然在脚本的开头连变量的定义都没有。为什么VBA里没有进行规范的变量定义,后面也居然可以照样使用呢?这让我有点惊讶,毕竟这是个VBA,不是python。C语言里,如果不先进性变量定义,后面根本用不了。在我记忆之中,VBA的变量在使用之前是需要先定义的。最终我发现是那个人的脚本之所以出错,是因为某些语句的套用搞错了,为什么他会把那个东西放在里?我觉得大概是因为他没有明白他一开始做的那个with是什么意思。但如果你问我为什么他把那堆东西套在里面会出错,而且是某些地方出错,不是全部出错,我回答不出来。理论上这种错误能在恰当的调试中体现出来,但实际上,VBA的调试句子我还用得不算很熟练。或者你会说,这是因为我的VBA学习还不够系统化,但我觉得我已经用了学习VBA最靠谱的那本书了。可以肯定的是,一些很基础的调试方式我还没掌握,如果我学会了那些东西,我可以大大提升我的调试效率,把错误定位得更精准。VBA脚本这种东西,我觉得最根本的是必须得理解。如果纯粹是各种套用,基础功能的确可以快速实现,但是当遇到的问题比较综合的时候,就会出现一些他们完全料想不到的状况。那种状况有可能与脚本本身的内容无关,与脚本的结构有关。

相对来说,Excel里我用得最弱的是高级公式的套用。如何用一个非常复杂的公式解决一些高端的问题是我一直以来都不大上心,或者说记得不够好的部分。非常复杂的公式,尤其是数组公式,虽然能解决一些神一般的问题,但问题是,其实那些公式需要耗费大量资源,所以在处理大数据的时候,非常有可能出状况。我是一个实用主义者,能做到某个功能,但是做起来的效率不高不好,我为什么要选择那种只是看上去很炫酷的方式呢?情况就像用VBA解决同一问题的时候,如果只是在工作表层面处理和先用内存数组处理再在工作表层面表达,效率千差万别。

Excel对我来说,除了要最终结果,过程也得追求高效和方便。

2020-04
28

相逢恨晚

By xrspook @ 9:00:08 归类于: 烂日记

很多人听到审计的要去查,就会非常紧张。审计到底有多厉害?如果我对自己的业务非常自信,我会怕吗?的确我没什么好怕的,但是我的队友不知道自己要怕。昨天我见识到了一份审计发过来的罪证单。当然这不是直接发给我的,是发给我领导的,但要我去研究该怎么答复上面提到的问题。接到那个文件的时候,我震惊了。因为那是一个宏的Excel。这样的保存方式,就意味着里面一定有一些牛逼的东西。我自己也是一个写脚本的人,我当然知道其中暗藏武功秘籍。那个文件看上去数据不多,但是却非常大,这让我挺震惊。后来我发现可能是我想多了,因为之所以大,是因为里面贴了几个图片,所以很大,并不是因为里面的数量非常恐怖。

拿到那个文件的时候,我不是对数据感兴趣,而是对里面的脚本感兴趣。到底他们写了什么脚本,可以在那么短时间之内汇总校对出我们的数据,然后发现问题呢?后来我发现,其实,他们没有在里面写脚本,我一页一页地翻查过了,但是他们用了宏函数。他们把那些东西隐藏起来,比如说把带公式的工作表隐藏起来。隐藏工作表很好破解。起码他们没有用带密码的方法到锁定工作表,完全不让我把隐藏了的东西取消隐藏。让我觉得有点惊讶的是,他们居然就这么坦荡荡地把他们的研究结果发过来了。他们就不怕我们偷师吗?正常人见到这样的文件早就已经瑟瑟发抖得无以言表了。其实我更想知道他们在得出最终的这份问题清单之前是怎么快速的处理我们的数据的。在数据的汇总以及财务业务处理方面,他们实在是精英,不只是这样,他们对所有东西都非常好奇。他们简单来说有学者的脑袋再加几岁小孩十万个为什么的心。一定程度上,我应该害怕这些人,但是实际上,我却挺喜欢他们的工作风格。他们做的事情跟警察探案没什么区别。他们把一些我们这里的人害怕去面对、囫囵吞枣应付的事情非常有条理地罗列出来,得出结论,并告诉你你犯了那个天条。那种细致和博学简直是到达了一种让我莫名崇拜的地步。

崇拜归崇拜,最终我的领导把那个文件发给我就是要解决上面的数字问题。让我兴奋的是,我居然发现有一些我们的数据跟他们的数据有很大差别的地方原来是他们的公式写错了。明明是应该乘0.6的地方,他们用了除。我不知道他们为什么会犯这种错误,是手误吗?因为其他工作表的同一个公式没有问题,唯独其中两个出差错了。也正是因为那个问题的存在,所以我们的总数在那一块跟他们相差了好几万块钱。在阶梯式计费方面,我觉得他们的公式已经用得很好了,但是即便你厉害到天上去,还是难免会发生某些疏忽。于是,这就启发了我要去研究到底用什么样的计算方式才能减少这种问题的发生,甚至是杜绝这种问题再次出现。

在遇到审计之后,我有种相逢恨晚的感觉。

2020-03
6

找自己麻烦

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

本来打算只搞30分钟的东西,结果我搞了三个小时都不止。想想都觉得很疯狂,于是整个晚上就变成了加班。上班下班对我来说没有非常明确的界限。我确信我正在做的事情是工作的一部分,但是从来都没有人强迫要求我必须这么干。跟我去纠结电动牙刷的电池一样,我完全是出于我想知道,所以我去纠结。

没人在乎那一公斤的东西该如何分配,折腾了我一个晚上,但不是这一公斤我算错了,而是貌似我把有多少件物体加起来一公斤的物体的件数给搞混了。总件数没有问题,但细分下去就有毛病。之所以会发生这种事,是因为当时我制定那个校验规则的时候完全没有考虑过件数。数量是可以核对的,但是件数不行,纯粹靠我自己去把握。为什么总数没问题而分类会出现误差,这个问题我折腾了三个多小时,虽然没搞清楚,但可以明确的是,因为我在分类里又细分了太多东西。我不可以一步到位进行计算,我要经常进行各种排除。一共有4个大类件数,其中三个跟我之前的对不上。我个人觉得,这样实在太糟糕了,虽然每个分项之间只差一点点而已。为什么之前会搞错呢?怎么会搞错的呢?之前我到底是用什么方式把那个组合出来的呢?现在要搞清楚当时的思路实在太难了,因为那是一年多以前整的,我当时到底用了什么操作呢?现在我已经完全不记得了。因为是在晚上核对,而且连续干了三个多小时都未果,所以我确定继续下去我的脑子不会好使,与其继续纠结,不如回去睡觉。或许今天早上突然之间我就有灵感了,比如说前天我在改进明细数据的结构,根据某些报表的习惯,我把某些东西拼在一起,但后来经过深思熟虑以后觉得那是不可行的,因为某些数据按照某些规则,几乎可以这么说,可以无限拆分,但另外一些,我暂时觉得是没有拆分必要的,而且其拆分方式跟之前的那些不一样。之前的那些数据不进行变态拆分的时候,这两种数据是可以放在一起的,但是当前面的玩起了无限拆分,要把前面和后面的数据放在一张表里作为汇总表的明细数据显然不可行。昨天早上起床后上厕所的时候,我突然意识到这个问题,于是一上班我就开始着手把我前天硬是拼在一起的东西分开,把可以无限拆分的继续拆分。拆分出来的两种数据,我都可以轻易的通过我手头上的资料快速地把它们变形出来,而不需要像前天那样全部都人肉处理。

想得越多,写的分析越多,越会感觉到自己的基础数据不够仔细分类不够合理。从前觉得很靠谱的分类方式现在看来挺傻听天真。当时的目标导向性很强,但是可塑性不高,没办法把那些数据作进一步组合利用。这些年来跟数据打交道,让我明白到,只有把最基础的东西分类好,后面才可以玩得转。

数据处理和分析是一个持续改进的过程。

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