2025-05
2

繁杂

By xrspook @ 8:36:36 归类于: 烂日记

22点44,同事把4月最后一天单位的作业数据发出来。理论上在22点30,单位的作业就算结束了,再往前推,实际上大概在21点30的时候,最后一车已经完成过磅,也就是说21点30-22点30大家只是在等待约定的结束时间而已。之前我也试过提前行动,结果是居然在22点28的时候,又来了几台车,他们是压着点过来的,于是我只能把之前已经做好的东西推翻重来。这一次,我不想推翻了,所以我真的是等到了22点30以后才开始行动,在同事把作业数据发出来之前,其实我已经整理好我的那部分了。一直以来我都是这么干的,这需要有非常好的预判,同时也意味着我不是在等待他们发号司令才开始做我的事情。

确认最终数据之后,我又花了一个小时,把接下来的事情做完。那包括核对库存,做各种各样的表,以及之前把已经做好,但没有提交的完成最后的步骤。为什么我会有月末焦虑呢?因为虽然这些事情都很琐碎,但是累积起来得用几十去形容,它们之间有很强的关联性。当你需要报送的东西越来越多以后,除了把那个数据做出来以外,你也得保证它们互相是不打架的,虽然它们都来自于同一个数据源,但是因为某些特殊情况,会有一些意外的发生。比如说一些非典型业务的出现,就很容易导致没有把数据反映上去,又或者没有把某些数据剔除掉。因为类似的东西要报很多,所以很重要的一点就是,我有没有漏掉?有时候我会做着做着,突然间不知道自己下一步要做什么了,尤其是当我做完一件事,然后被打断的时候。我也说不准这到底是我记忆力不好了还是真的太繁杂了。近几年那些加码的事情得用离谱去形容,以前我只需要管好纸质的东西。现在纸质的东西得管,系统也得管,因为系统的东西实际上是人工录入的,而且系统还一个又一个添上去。纸质的东西也就那样了,但系统的东西,还有一些你预测不到的,比如明明该到你报送的时候了,系统却打不开,又或者没办法转到你需要报的那个表上面,简直让人无语。

到该报报表的时候,报送报表的那个网站打不开是让人很抓狂的。第一次遇到的时候,我的第一反应是可能网站出状况了,我等一等,但是等了半天,还是那样。我差点就要找我的上级反映我报不了数据了,但是在反映这个事情之前,我把那个网站在另外一个浏览器里打开,结果居然就开了。谁知道你是什么情况呢?一直我都是用Firefox做那个报表,为什么Firefox现在就是打不开呢?那个系统是浪潮做的,浪潮干的事,什么状况都有可能发生。根据我的经验,这种有些浏览器能打开,有些浏览器打不开,尤其是我经常用的浏览器打不开的状况,通常清除一下这个网站的cookie就好了。结果真如我所料,我清除了那个网站的cookie,网页就打开了。当我跟网友吐槽起我这个差点给上级上报很囧的事情以后,他的回复是实际上清除缓存不应该由我这个使用者完成,而是应该在做网页设计的时候就写好清除缓存的脚本。使用者无论任何时候,只要不是服务器那边挂了,都可以正常访问使用。这证明了,不是我的问题,不是Firefox的问题,又是浪潮不知道哪位干的好事。

又一个月末挺过去了,但这个月末我居然有种其实我也不确定我是不是都干完了,还是说有些事情我漏掉还没做的迷糊。

2024-05
17

得彻底大改了

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

之前说到了某个Power Query的方案,有两列新增需要填写的部分可能不是我想象的那样。之前我的理解是,新增的那两列填写的内容跟前面的进出数据对应。如果没有进出,那两列也就没有数据。因为一直以来,在我印象之中。那套表格需要关注的重点就是期初数以及期间的变化数而已。周四下午的某个时点,我突然意识到,其中一列需要填写仓号的那个部分实际上要求的不是那一天的仓号,而是对应有库存的仓号。如果只是很简单一两个仓,那么即便有变动,填写也不会太困难,但是我们单位与这数据相关的仓号有超过20个。哪怕一天变动几个也不得了。因为一个变动就一味着一段时间都在变动。一个需要在A4纸上打印的表格,一个表格里面的某个单元格要填写20多个仓号。首先,就这个填写方式来说,已经是不是给人看的,没人会去看那么密密麻麻的东西,根本就是瞎整。

在我印象之中,以前去做代储监管别人的时候,代储单位很早以前就需要填写仓号这个东西,他们的操作是什么时候变动就什么时候增加或者减少仓号。对他们来说,绝大多数时候都不会同一时间变动多个仓号。他们代储的数量不多,所以涉及的仓号也不多。没有变动的时候,直接一大片合并单元格。变动的期间可能就那几个仓,所以也是合并单元格。总的来说,因为代储单位需要使用的仓房不多,所以还能表达出来,但显然对我来说就不太行,对那些储存大米的单位来说,一个大仓里还得分到不同堆位,采购成本不一样。同一天,可能有多个堆位发生变动,所以我那二十几个仓以每个单元格都填写的方式去处理是不可能的,对那些一个仓房里面有十几个堆位的大米仓来说,更加是会让人发疯。想到这里的时候,我赶紧给集团公司的相关人员打电话,然后被告知,实际上这个表增加填写内容也是被迫无奈的选择,所以仓房那里实际上并不需要考虑变动这个问题,反正把那个月涉及的所有仓号都写上去就可以了。因为仓号那里主要想考核的内容是那些仓号是不是已备案的账号,有没有把粮食放在别的仓房里,因为如果那样就违反规定了。听到那里的时候,我有种如释重负的感觉,因为要把所有仓号都填上去比较容易,首先我要获得期初有库存的仓号,然后把本期有变动的仓号和期初合并,最后做一个去重,我就可以很容易地获取那一大批的仓号。

另外一个需要填写的内容采购成本,既然仓号得这么操作,采购成本理论上也应该是对应那一天库存的平均采购成本。如果所有东西都没有变动,填这个数据完全没有难度,一旦发生变动,这个数据就变成了无解的难题。你要精确算出那个数据要花费很多精力,首先你得把每天出入的那些单价全部都搞清楚,但这只是一个变化数,其它没有变动的你也要获取,打电话的时候我并没有想到该怎么办,但是电话挂掉以后,我就想到了可以引用一个期初库存值来解决这个问题。基础数据那里,如果有一个期初库存,也有一个期初采购成本,合并每天进出的变化数就能计算出累计库存以及累计库存值,最后再用一个累计库存值除以一个累计库存,就能得到每天对应的那个总库存的平均采购成本。在有系统的前提下得出这个数据是易如反掌的,但是在纯人肉的操作下,要这么折腾计算,那个数据的准确度基本为零。没有人真的能核算出那个数据到底是不是正确。电话这头的我和电话那头的集团公司相关人员都是这么觉得的。在这个管理办法还没有颁布之前,他们就已经为了这个问题去找过粮食局的人,但是最终的管理办法下来后,发现还是没有把采购成本从每日必须填报的数据里去除。

上面某些人的脑残,真的会让下面那些人没法活。

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脚本去实现呢?当那个报表被国粮局修改了,我又得重新修改脚本适应。所以之前我就在那里纠结到底有没有必要进行这个脚本的开发。

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

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