2024-05
9

为什么非得堆一起?!

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

花了一个上午的时间,让某个Power Query的查询更进一步,花了一个下午的时间修改级联下拉网站的一些格式问题。无论是哪一个,我总感觉都不够完美。

Power Query的查询,之所以我感觉不完美,倒不是因为我的数据有什么问题,我或者我的解决方案有哪里不妥,而是需要我们填写这一张报表的人,脑子不知道想不知到底是什么。那是一张信息高度集中的报表,但为什么要把那么多信息在一张表上反映呢?里面要有每天的进出数据可以理解,要有每天的库存数据,也可以理解,因为期初库存加上进出的数据,就可以得出每天的库存。每天的库存是有要求的,必须得表达出来,这个可以理解,每天的进出数据具体来自于哪里,要把那写明白,这也可以理解,但是在2024年7月1日即将实施的某个规定里,要把采购价格也写进去,这个我就很不理解。采购价格跟这些进出有什么关系吗?又或者说任何一笔进出数据,一定就能轻易关联到采购价格吗?如果每天变化的只是一个仓,设定表格的人难道觉得采购价格就应该是一个固定值?实际上某天某个仓按照不同的合同,实际上可能有多个采购价格,那个仓严格来说,我是不是要做一个加权平均?某天多个仓发生了变动,有进的也有出的,进的那些仓一个仓有多个采购价格,出的那些仓,哪怕我已经不按先进先出或者价高先出之类的规则,直接把那统一为一个均价,这也意味着存在着很多采购价格。采购价格这个东西,完全没办法从原始凭证里面得到,每天某个品种要填写进出数量,但是涉及仓号那里,进出都填在一起,采购价格那里如果有多个价格就取一个均价,但是这个均价该如何取舍呢?单仓先做一个均价,然后每个仓房按照数量跟价格再做一个加权平均吗?最后出来的那个采购价格代表了什么?算出那个数很不容易,但是算出了那个数,又能怎么着呢?那不代表任何东西。做出那个是完全没有意义的,为什么非得把那个数给算出来呢?硬是要把那个数算出来以后,最终会导致这张报表采购价格那个地方出来的东西是个四不像,用什么资料去验证?其它数据都是确切可以算明白的,但那个地方的数据却只是一个大概差不多的玩意。不知道这么脑残的决定到底是谁做的。想出这么个招的时候,居然没有人去否定他。如果有一天,信息化程度真的可以实现把报表要求的数据都自动的算出来,我举双手双脚赞成,但是还是那句话,加权再加权得到的平均采购价格到底有什么用?又或者对普通人来说,对正常的人来说,根本没办法做那么仔细的加权平均,所以最终我的暴力解决方式是首先算出那个月变动的仓房有哪些,然后指定那些仓房的采购价格,每天有多少个变动仓房就直接把那些仓房的采购价格算术平均。

工作的时间越久,越让我深切地体会到:上面不正常,会让你憋死;下面不正常,会让你气死,横竖都是死。

2024-04
13

二维到一维的种种

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

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

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

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

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

2021-12
17

VBA合并报表

By xrspook @ 8:47:14 归类于: 烂日记

我花了三天时间(但实际上每天都只有半天时间)把二维报表提取数据成以一维数据表。这有什么难度呢?一开始我也认为好像难度不是很大,但开始琢磨以后我发现事情远远没有我想象中的那么简单。我用的是Excel的VBA。如果操作简单的话可以在Excel的数据层面进行操作,但如果我要进行大量的数据清洗显然为了要追求效率,就必定要用到数组,数组这种东西无非就是不断地叠加循环以及判断。循环和判断我觉得几乎可以这么说,是编程的核心。要实现最终的目标,首先你得有一个非常清晰的逻辑,然后用那些循环和判断实现你的逻辑。当我看到某些人逻辑彻底混乱的时候,我心里就会冒出一句话,他们绝对不会懂得编程。也正是因为这样,所以现在的幼儿教育有时会把编程列为一个非常重要的项目,实际上练习编程就是锻炼逻辑,但是逻辑这种东西又分为了既定的规则以及你的自创招式。自创招式都来源于各种规则,但是不同的编摆方式会有不同的效果。成功编程的话效率极高,是秒杀型的,但是要制造那个秒杀效果的过程可能非常漫长。

我需要处理的那个报表,准确来说是一套报表,但是用的几乎都是一个版式。虽然看上去几乎一样,但是有可能某些细节上会有不同。如果我用了一个靠谱的逻辑去抓取数据,无论什么微调,对我来说都毫无影响。所以首先我要确定我要在报表里抓取什么东西,我要用什么方式去除掉那些我不需要的东西。如果用Excel表格的思路去理解的话,我肯定是先做一个筛选,然后把我不要的删除掉。如果不要的东西在行那里我还可以用关键词筛选掉,但如果那些东西出现在列那里,难道我要先做一个转制,然后再做删除吗?更郁闷的是那个表格的表头有三行。就一个现成的要达到最终效果的报表而言,三行的表头没有任何问题,但是如果你要把它按照数据层面去理解,这就很逆天。就更加不用说这三行的表头里面还有不少合并单元格,但幸好的是当我把单元格拆分了以后,实际上每个单元格里其实都有靠谱数据的。

我的思路是先把我不要的行删除掉,然后把我不要的列再删除掉。在删除行这个问题上一步我就搞定了,但在删除列这个问题上,我花了好几步,首先是删除没有数据的列,其次是删除含有某些关键词的列,也就是那些虽然有数据,但对我来说也没什么作用的列。把可以删除的东西都删除掉以后,我进行了一个二维表转化为一维表的操作,接下来就是在那个加工完的表里加一列存放表名。之前我说过我要处理的是一组样式差不多的表格。上面说的一大通,我只是说针对一个表我需要这么处理,所以在这之前我要有一个把文件夹里所有工作簿里面包含某些关键词的工作表汇总到一个工作簿里的步骤。我觉得这个合并工作表的耗时挺长,相对于后面的数组操作来说,这实在太费时了。之所以会这么耗费时间,是因为实际上Excel需要把工作簿一个个打开,抓取里面的某个工作表,然后关掉,不断地重复这个步骤,不断地开关工作簿会非常耗时。

如果之前我没有花过很多时间在账本的合并数据上,现在突然要我整这个的话,我肯定得花好几倍甚至十几倍的时间,但因为现在我是站在曾经自己的肩膀上的,所以虽然期间有过纠结,但总的来说还算是比较顺利。我考虑过要不要进行这种操作,但过去几年我都一直没这么干,因为要合并这些数据,一年只做一遍,有没有必要开发这样一个VBA脚本去实现呢?当那个报表被国粮局修改了,我又得重新修改脚本适应。所以之前我就在那里纠结到底有没有必要进行这个脚本的开发。

最终我做了,而且还做到了。

2021-12
3

衔接

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

有种慵懒什么都不想做的感觉。不知道下周的出差会怎样。因为据说另外一组已经出去回来了,理论上是三天,实际上两天就回来。倒不是因为东西真的很简单,而是因为本来要去4个地方,结果两个地方的资料都已经被纪委收走了,没东西可看,当然也就只能打道回府。一开始我根本没想过这些东西可以这么快就结束,但显然可能我有点高估了,但也有可能快乐是别人的,与我无关。我到底要去哪里?到底要去多少天?到底要去做些什么,我都不知道。

今天我把去年已经领回来的一本关于流通统计的书翻了一遍,发现里面只有几页纸是与我有关的,其它的那些和我都没什么关系,更重要的是,与我有关的那几页纸实际情况又跟我们有差别。所以里面到底有多少东西是可以接收的呢?实际上真没有多少,于是这也带出了另外一个问题,为什么我们现在正在做的那些事,居然没有一本教材可以很确切地说明白要做什么,要怎么做,以及为什么要这么做?

检查了一圈下来,发现大家有各种各样的问题,实际上很多时候是因为大家不理解,为什么要那么干。比如为什么要在账本上分来源和去向,而且如果那里的地方不是一个的话,必须要分开。之所以这样是因为那实际上是跟国粮局的报表对应的。进行采购和销售的时候,就会有一个省外的空格,如果你分不清地方,那该怎么填呢?如果你还要填流向的话,那就不仅仅是省外那么简单,就得分清到底是什么的具体哪个地方。即便不需要精确到某个地市,但是省份这个信息还是必需要的。有些人把生产年份全部都混在一起写了,于是数量就一只有一个,但一个公给通单元里生产年份却有好几个,如果把生产年份这么搞,同样也是国粮局的报表。库存数量分生产年份的几列单元格又可以怎么填呢?其实我个人觉得账本跟报表实际上是一个衔接的过程,理论上账本上的数据应该是由原始凭证那里获得,但实际上。原始凭证上面反映的信息往往不足以支撑账本上的内容,比如说我不可能在每一张原始凭证上都写明产地以及生产年度。但是最终国家要求的报表里面就得有这个东西,所以根据原始凭证生成账本的时候,就得把那些之前没有的信息带入。这就让我产生了一个疑惑,实际上生产年份以及产地这个信息是不是应该跟每一条原始记录完全对应上呢?从数据的聚合来说必须得这样,但是实际操作过程中。好像我根本就没办法要求客户把每一车每一船上面的这些信息都写得如此确切,每一条船还相对好一些,每一辆车,每一个集装箱都这么整的话,肯定会让人崩溃掉。但是崩溃归崩溃,实际上这些东西都是应该具备的。所以说最终我们是不是应该把思路反过来,确定我们最终必定要得到哪些信息,然后从那里反推我们最原始的数据结构至少应该具备哪些信息?

我们经常会觉得自己平时用得很溜的那些东西,在别人让你系统讲述到底该如何操作的时候会一脸懵逼。实际上是因为可能我们一直都没有非常完整地去考虑过,那到底那是怎么回事?如果都遵循着某条规则,我们可以完成所有的操作,当然很理想,但在实际操作过程中,我们又有太多的例外,当例外大于规则的时候,自然我们就会处在一个没办法说清楚自己到底在干什么的状态。

彻底的搞清楚工作的全流程,是一个自我升华的过程。

2021-07
1

月末发牢骚

By xrspook @ 17:26:47 归类于: 烂日记

每到月末我就会莫名紧张,因为要考虑的东西太多了,大部分东西实际上都不是我们的主业,但我们却绝大多数时候都被耗时在那个上面。每天晚上11点甚至12点才结束战斗,才可以结算一天的东西是常态,到了月末,这个时间就要成倍加上去。以至于如果一个月末日是一个工作日,尤其是周一到周四,就意味着估计那天晚上我没有凌晨2点都不能睡觉,因为数据实在太多。或许你会说,为什么我不能提前做一些呢?别说我预测不到,连开单的那些人都不知道自己当天有多少业务,上午跟你说可能没了,但是下午5点之后委托单又排山倒海地过来。开单开到晚上10点,才不管你那天到底能不能做完,反正开完单就拉倒。这种作业模式实在是太疯狂,我可以容忍白天又或者晚上10点之前猛搞,但是到快要睡觉的时候踩一下刹车不行吗?月末的时候稍微不要这么疯狂不行吗?但是对他们来说,周末也好,月末也好,也都只是个数字而已,跟他们无关,他们在车轮作战,我在以一抵百。“以一敌百”个词不是在开玩笑,因为做这个事的就我一个人,但是整条作业线有上百号人。

这种神经病的生活已经持续了两个月,从4月开始就这么疯狂。有段时间,每天晚上12点之前一点点才算是停止了作业又或者说不是停止,是暂停了作业,然后12点之后再继续开工。好长一段时间我根本没法做到12点之前睡觉。当时我感觉非常痛苦,但是长期被这么折磨下来,好像我已经有点习惯了。我试过10点多的时候去睡觉,然后快12点的时候起来,结果发现半睡半醒的脑袋完全不听使唤,根本没办法完成这些精细的工作。所以也就只能一直扛到把工作做完为止。如果这些只是条件反射的事情,我不带脑子也可以做,但显然这些不是。

昨天就是一个月末,我停止了昨天晚上的运动计划,选择了吃完晚饭之后多散步一些时间,然后早点回去洗澡,接着早点回到办公室,准备战斗。之所以这样,除了因为昨天的作业尤其多以外,还因为今天是七一建党节,早上8点活动就开始了,这意味着只要不是现场作业人员全部人都要准时去看电视。8点就开始意味着这估计包含了庄严的升旗仪式。而那个活动估计不持续个4个小时是无论如何不会结束的。这就意味着一整个早上都没了,如果我不在前一天晚上把第2天的事情都干完,只有半天时间,我怎么可能干得完?!

其实那些东西都不复杂,但是很多不复杂的东西堆砌起来就很要命,这是非常耗费时间的,哪怕我收集数据是批量式的,但批量收集完以后,还得逐个核对不同人不同款式的输出。这又回到了一开始说的那个点,数据多不要紧,但是如果你能告诉我什么时候哪些可以分段结束,我也可以提前做,但显然不行,很多东西全部都得堆到最后一刻才有结果,让我非常崩溃!

不知道从什么时候开始,我就成了一个有计划的人,但现在这种作业模式让我的计划根本没办法存在。

我还能扛多久?

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