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-09
13

别人常踩的坑

By xrspook @ 20:09:06 归类于: 烂日记

怎么才可以让自己遇到更多的问题呢?我选择的是猫在某个论坛里,解决别人提出的问题。我仅仅猫了几天,就得出了某些结论。比如通常逼着大家提问的原因在哪里,针对那些东西,我应该如何在表格里避免。某些东西,我们一定会遇到,即便暂时没有,所以在那之前先掌握技能很有必要。如果等到像他们提问题那样才去被动去学习,就比较烦恼了。

第一个让他们在用数据透视表的时候得不出应有的结果的原因是他们的原始数据格式有问题。数据汇总时碰的壁绝大多数都是原始数据记录时挖的坑。最经典的坑莫过于合并单元格。所以,当我看到某个同事给我的表每一个数据框都至少合并了两行两列单元格的时候。我立马拍桌子发飙了,这是处理数据吗?!如果你嫌那个单元格宽度和高度不够,完全可以对单元格进行调整啊,为什么要合并?之所以做出这种低能的单元格合并,唯一的理由就是,她根本不知道那些东西的宽度和高度是可以调整的。对她来说,Excel的表格就像十字绣一样的固定洞洞,就像Photoshop里的网格线。但实际上,根本不这样。面对这种人,我是完全无语的,因为她完全不了解她正在使用的那个软件。这些人应该从头去开始学习Excel,从最基础的学起。只有让她明白Excel是做什么的,可以怎么用它,她才不会犯这种超级低级的错误。这种空前弱智的单元格合并通常不会发生,更加不会在某个表的任何一个数据框里面发生。某些人会把平时手工汇总的表格拿出来求做成数据透视。准确来说,那是一个明细表和汇总表的混血儿,在实际工作中我们经常会碰到。从展示表的角度考虑,这非常正常,尤其当数据完全由人手工填写的年代。但这不是Excel处理数据的习惯,明细是一回事,汇总是另外一回事。当某个大项里有N个分项,大家非常习惯,把大项横跨的几行合并为一个单元格,然后分项的总和也合并为一个总数。这是人的处理习惯,但Excel的处理习惯是大项为一行,分项为余下的行。当你不想看明细的时候,直接把它收起来。之所以会出现这种人的思维和机器思维不一致的东西,完全是因为大家没有读Excel,而只是把我们人肉做的事要Excel去模仿。这绝对是搞死人的!处理这种事,只能把大项的单元格合并取消,向下填充同一个名字,最后的汇总数据,全部打散为小项的数据。如果一个明细表里有很多这种情况,又有很多类似的明细表需要合并,那可是清晰数据整死人的节奏。

另外一些数据透视表的问题发生在多表合并的时候,有时可能还得对表格的汇总数据进行一些运算。通常,这需要用SQL查询,但我觉得在Excel里用SQL有点麻烦。那个东西不适用于文件移动,一旦文件发生移动。数据将来难以刷新,因为实际上进行了SQL查询以后,电脑的某个位置会形成一个数据库。当你移动文件到别的电脑,引用的原文件仍然只是旧的那个。通过在文件里加个VBA,能解决更换数据源的问题,但要这么复杂才能做到,证明了SQL在Excel里实际是有点水土不服的。这种玩法根本不适合分享文件。SQL语法虽然很简单,但是标点符号的错误,哪怕是多了一个空格,也会出状况。在没有语法检查的编辑器里写那些句子,简直就是撞墙。新版本的Excel里内置了Power Query和Power Pivot,如果用的好的话,SQL基本可以丢一边了。我感觉应该可以这样,虽然我对这两个Power工具还非常陌生。我觉得,也正是因为Excel里面用SQL不太顺,最终才会让这两个Power成为新版Excel的标配。

把别人的烦恼当作是自己的烦恼,是一个让自己进步的方式。

2020-09
2

恶劣的微软应答

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

上周,当我要在一个加入了模型的数据透视表里加入计算项的时候,发现那个东西灰色,隐隐约约之中我记得加入了模型的数据透视表字段项不在一般透视表的位置设置。当我打开Power Pivot的时候,傻眼了,马上弹出一个框“无法在PowerPivot窗口中加载表”。理论上我源数据都应该在那里表示,但现在我完全看不到,看不到就意味着我没办法在那里继续玩,这到底是什么鬼?!你说数据过不去嘛,又不完全是,因为加入模型了的数据透视表应该能做到的基础东西我的电脑里都能实现,但高端上档次的,必须在PowerPivot里操作的东西我却完全动不了,这到底是什么情况???表打不开,从菜单看来,理论上是等于没有源数据,但这个没有又不是真的没有,有些东西还是有的,比如实际上里面有我源数据的所有字段,理论上在那里瞎折腾还是能折腾出一些东西的,虽然我没有试过。PowerPivot这个东西其实我一直没有仔细用过,因为我是在学习基于Office 2013的数据透视表里第一次见识这个的,但当时我用的是Office 2003,2003根本用不了,连插件都没有,所以我就只能靠看书和想象。我已经不记得当我用上Office 365后我有没有真的打开过PowerPivot,印象之中好像没有,我只打开过Power Query,而且用得极少。

“无法在PowerPivot窗口中加载表”会给我一个错误的详细信息,里面言简意赅地写着“签名不正确。”,外加一大堆调用的东西。因为错误写得太简要了,而且是中文,我这个经常用数据透视表的人尚且很少用Power Pivot,这意味着遇到这种情况的人更少。我试着用各种排列组合的方式去搜索答案,结果都失败,还是那句,用的人太少了。签名,到底是什么签名???

于是呢,我去找微软客服。

第一天我找的是微软的官方微信群,当我把截图发过去的时候他们硬是说我用的是Win 7,已经停止技术支持,不予回答我的问题。你丫的有病啊,我用的是Microsoft 356,是付费的服务,你们凭什么不给我支持!你们为什么根本没检查过就说签名错误是Win 7导致的,而不是Microsoft 365自己的问题!那个客服还用惊讶兼鄙视的语气反问我为什么Win 7居然能装上Microsoft 365。你丫的,我开始用Office 365的时候Microsoft 365还不存在呢!即便是微软放弃支持Win 7,但他们就没说不能在Win 7上用Microsoft 365,只说在停止支持Win 7以后软件只能接受安全更新,到2023年,才会停止所有更新。既然有更新就意味着虽然不是所有功能都一定能用,但软件的基本使用是没问题的。为了用一个操作系统下的办公软件而买一个操作系统又或者是换一台电脑,这不是脑子进水是什么?!PowerPivot这个东西,从Office 2010起就已经支持,不过那时需要手动装插件,到高端上档次的Microsoft 365你居然告诉我操作系统原因所以软件不支持,不支持你卖东西的时候不提醒我啊!我发现东西用不上,要不你给我退款?!这种霸王条款跟单位的垃圾管理系统一定得用IE,而且是低端的IE才能用一个样。国内开发的软件必须配合低端的东西才能用,卖软件的公司告诉你低端的系统我们不支持。支持不支持这种东西,纯粹是懒惰的借口,你们能说出到底具体是什么原因导致不支持吗?有一个不支持原因的列表吗?我中了哪一条?!只要不是范围内的东西,出现状况就说版本原因不支持,太恶心了。如果是Win 7就不支持PowerPivot,我家的Win 7用同样的Microsoft 365,为啥就没有毛病?!

第二天,我再去找微软的在线客服,在线聊天是无法截图的,但我可以把错误信息一次性贴到对话框里。最后的回复是他们让工程师在1-8小时内座机和我联系,结果呢,已经过去18个小时了。

一个已经出现10年以上,并被列入常规功能的东西都不能保证正常使用,微软的死期真不远了。

2020-05
27

数据汇总小感

By xrspook @ 9:05:03 归类于: 烂日记

理清思路,比埋头苦干重要很多。如果一开始就掌握了方法,就不需要在路上兜那么多的弯。处理数据有这么一句行话,汇总时掉的汗,是录入时脑子进的水。如果一开始就把数据结构设定好,往后的汇总那是行云流水般自然而然的事。我是那种习惯于白手起家的人,通常我不会借用什么特殊的工具,比如说某个系统,我只用最普通常用的办公软件解决问题。

当然了,办公软件我是挑的,比如我只喜欢微软,我不喜欢WPS。而之所以不喜欢WPS,是因为我觉得很多东西他们仍旧留抄袭的层面,在一些非常核心的数据控制方面,他们远没有Office这么强大。有一些经常用到的小技巧,他们的确做了很好的封装要优化。但是会看的看门道,不会看的看热闹,就如一开始所说的,如果数据结构做好了,那些小窍门是不需要用到的。那些小窍门通过Office的高级公式是可以完成的。有人觉得那些小窍门非常有用,但是我觉得如果全盘数据由我控制,我的脑子不会那般进水,自然就不会挖坑让自己踩,那些所谓窍门也就不需要用上了。

跟数据透视表交了朋友以后,我明白到明细数据和汇总数据是彻底不一样的两种东西。你把他们混合起来用,结果将非常恐怖。通常,大家都喜欢这么干,而且觉得这么干是理所当然的事,而之所以有这样的看法,是因为当没有办公软件,没有Excel没有电脑之前,他们在纸质上就是这么干的。在纸质上这么干,可以让他们对整体数据有一个全面的认识了解。但实质上,他们所做的那些事正是数据透视表最擅长的。在纸上完成,只能做某一个分类的,如果要换个统计口径,那一大片数据等于白费。很多人在用Excel的时候,实际上只是把他们在纸上做的那些搬到电脑上。Excel不是一个画图软件,不是艺术家的画板,也不是一个用键盘操控的笔记本。这个强大的软件是有很强汇总计算功能的,我们必须用好这个,用不好别人的优点就是在增加自己的麻烦。软件的天马行空建立在我们说了一些他们能理解听懂的话。软件也是有脾气的,你得按他们的语法去表达你的东西,他才能用他的高超技术化腐朽为神奇。所以,我们首先要知道自己有什么,自己想得到什么,还有软件习惯用什么格式去处理问题。把我们的需求用机器语言翻译出来,然后我们就能得到我们想要的结果。把明细数据和汇总搞在一起其实并不是我们最初获取的数据心态,我们做的其实已经发展过了,要软件替我们做汇总分类,我们就要退回最原始的状态。为什么明细数据和汇总数据必须在一个页面反映出来呢?看数据的时候,我们到底是看每一条数据有没有问题,还是我们只是把那个明细数据当做是一个凑数的工具,而我们的眼睛直接瞄到了最后呢?如果我们关注的只是最后的汇总数据,明细数据摆在那里,难道就只是用来让我们多滑几下鼠标到最后吗?对基层人员来说,他们必须保证每一条原始数据的真实性、准确性和完整性,而对领导来说,明细是什么不重要,他们需要的是各种维度的汇总结果,每个领导的口味不一样,他们想要的汇总口径五花八门。成千上万的明细数据再用一开始纸质那种画大图的方法来汇总,根本赶不上这个时代的节奏。不仅仅是累处理数据的这个人,看结果的人也很烦。

程序语言也是一种语言,射手座有语言天赋,我觉得这可能是真的。

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