2020-10
13

Excel的高端玩法

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

数据本身没有问题,如果我们不能让它们确立某种关系,只是因为我们对那个东西还不够了解而已。在Excel里做一件事,你可以通过很多方法,比如说函数,比如说VBA,比如说SQL查询,又或者Power Query或Power Pivot。当然,我这里所说的,主要是针对查询,或者说数据清洗类的东西。如果纯粹是针对单元格的格式化,函数以及Power BI系列以及SQL是没办法做到的。

同样一个数据,用不同的方法都可以得出目标答案,但是哪个会更简便快捷一些呢?函数我觉得挺被动的,尤其是在处理大量数据的时候,效率非常低。因为在处理一些复杂东西的时候通常要用到数组函数,即便不需要用到数据函数本身,其实也在运用着数组函数的变体。而且函数这种东西受Excel本身版本的限制,越是低版本的Excel越是没办法轻而易举地实现某些逼格的功能。于是就出现了你不得不为了某个功能升级Excel,又或者因为你的伙伴升级了Excel,用了一些高端的函数,但是你却看不到,工作就没办法继续下去了。SQL和VBA是两个大杀器,很早以前Excel就已经支持。与其说他们是Office软件的一部分,不如说这两个东西更接近于编程语言。我对Excel里面的SQL不是十分熟悉,因为至今为止,虽然已经折腾了不少网站,但是我从未试过操作数据库。SQL在Excel可以用,但我觉得可能在Access里SQL会用得更顺手一些。比如说如果改变数据源,比如移动文件之后,SQL需要重新连接。若没有VBA的帮助,这是无解的。我不喜欢用SQL的其中一个原因是它会在硬盘的某个位置生成某个数据库。

VBA这个东西强大到任何你想到想不到的东西都可以控制,无论是数据本身还是说单元格的格式,一律通杀,它甚至可以让Excel自杀,又或者让你的系统自杀。VBA用得好不好直接决定了某个脚本的运行效率。是对初级用户来说,VBA的学习成本实在是高,除非你从来不打算要建立自己的规则而纯粹只是用别人的东西。

至于Power BI系列的Power Query和Power Pivot现在我仍然处在甚至还不能说入门的阶段,我只是稍微了解了一点这两个东西。在数据清洗和建立关系的时候,它们实在太强大了。但是要使用这两个东西,Excel的版本就必须有要求。所以这也导致了不少免费用户直接绕过这两个强大的东西。我也不知道为什么自己在使用Excel高级函数几乎还没入门的情况下,我就去折腾M语言。我觉得那个东西一定程度上颠覆了我对数据的理解。Power Query对数据的处理方式就像通过各种蹂躏就能得出你想要的东西,其间你没有修改原数据,所以实际上在写M语言的时候就像是手工编写一个宏,而那个宏要比一般的VBA简洁很多。之所以简洁,一定程度是因为那是在高级套用的前提下。Power Query里玩的数据转换实际上是在折叠、删除以及扩充,一定程度上就像是在用类似于递归或者迭代的方式。

别人把时间耗在应付考试上,我把时间耗在折腾自己上。

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的标配。

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

2018-01
18

自觉学习

By xrspook @ 11:46:09 归类于: 烂日记

昨天和同学的聊天几乎到达了吵架的地步(或者说已经在吵架了)。之所以这样是因为我们看到的某些东西和我们持有的某些观点不一致。工作了10年多以后我意识到辩证法的重要性,不把话说死是非常有必要的,因为实际上真的是100%的事少之又少。因为我和我的同学从工作开始走上的就是不同的道路,所以看到的问题和个人感悟相差很远。

让我觉得很神奇的是我的同学为什么会觉得我学得比她快她压力大呢?几乎可以这么说,离开学校以后我自学的东西更多更杂更深入。学校学的那些东西都是基础,没有之前的根基我估计也不会养成往后的自学习惯,但显然脱离了那个被迫学习的体制以后我根据自己的情况上手各种东西其用功程度比我在学校被严格要求要考多少分好很多。我不再为分数奋斗,我为自己的兴趣奋斗,有些时候那些也谈不上是兴趣,而只能说是自己对自己的要求。我没办法接受自己本可以做得更好却因为懒而让重复无聊的东西一再每天都持续上演。再深层次地挖掘大概因为我很早以前就开始当码农,一开始的时候写的是HTML和CSS,后来变成了PHP,期间又在学校学了C语言,因为要写某个可视化封装起来的程序学了VB。一开始我就选择了折腾的路,所以往后当我要学习什么Excel公式,SQL规则的时候我会觉的一切都很正常且理所当然的事。明明做网页的时候我可以选择可视化的方式,当时可用的是Frontpage和Dreamweaver,但可视化的东西总不能精准到位,且生成的东西过于拖沓,所以我宁愿自己写HTML,然后用浏览器去测试我的敲键盘成果。没有人强迫我必须得这样,但我觉得这样有意思,完成了以后有成就感。很多人都有自己的网站,但不是每个人的网站都是自己亲手敲键盘写出来的。他们可以通过直接给钱别人,提出要求让别人设计出现成的,也可以利用网站后台的可视化模块以拖拉的方式组建。要自己写网站就意味着要学习理解各种规律,然后把自己的意愿按照约定的格式输出。我不喜欢你直接给我鱼,我更喜欢你给我一本钓鱼教学手册。

理解规律,认清自己的需要,最终恰当成功地输出。我觉得这几条就是学习的真谛。最终神一样的境界一定是无招胜有招。如果我们根本不去学习规律,也不知道我们自己要怎么着,又怎么会有后续的东西呢。有没有学习的心跟身份地位有钱没钱做的是哪份工作没关,这真的只是各人想不想这么干而已。有些人会自觉学习,但有些人要别人逼迫着才去学习。如果是前者,放在任何环境都无所谓,但如果是后者,环境貌似就很重要了。我觉得最根本的还是主观的人本身。学生年代当过班级里的鸡头与凤尾的我有深刻的体会。我不觉得名校里的普通学生就一定比九流学校的尖子生优秀,虽然外人看来二者的学习环境和受教育师资相差九万八千里。

环境或许不容得我们去选择,但我们可以选择改变自己。

2017-09
17

Excel武功秘籍啊啊啊

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

昨天我突然想起,要下载一本关于SQL的书。我觉得W3School的教程就很好,但问题那是个网页,只能一页页翻,非常麻烦。按照一般逻辑,网上应该有一些已经把网页整理好的电子版,pdf一定有,有没有mobi我不知道。pdf,mobi的区别在于后者的体积更小,而且更适合在智能终端上看,因为,那会根据每页的大小去调节呈现内容,而不像pdf那样,实际上每一页有多少内容已经确定了。最后还真被我在GitHub上找到了,那里打包了各种W3School的教程,基本上把W3School所有类型的教程都已经打包好了,有在线的版本,也有三种电子书的版本,分别是pdf,mobi和epub。因为太久都没把自己的文件上传到kindle,所以我已经忘记了该怎么操作,记忆之中我有个插件,但是点击文件右键却未见那个东西。我差点就想到不得不发邮件给自己了。但最后当我点另外一个pdf文件的时候,我发现了那个按钮。不知道为什么mobi文件的邮件没显示出来。接下来的事情很简单,我只需右键发送,点击确定,然后我打开我的kindle终端接收那个文件就好。因为好久都不在手机上用kindle,所以我的小米4c已经删除了那个app。昨晚我又重新安装回去。这本SQL基础教程我会带在路上无聊的时候看,所以我的手机上必定要有一个电子版本。如果用WPS阅读,我会觉得很不顺手。平时如果是其他类型的电子书,我会选择直接在kindle阅读器上看。

装上kindle以后,上面显示我的书和我自己上传上去的文件,下面是一条亚马逊的推荐书,那些是近期的折扣书。其中有一本叫做《为什么精英都是Excel控》,我也不知道他们是凭什么给我推荐这本书的,但是,之前我的确有考虑过要在亚马逊买Excel方面的书,但实际上我并没有在那里搜索过。这本书的标题相当的吸引人,也说到我心里去了,但是在看过这本书的评价和目录以后,我知道这不适合我。与其说这本书讲的是技术,不如说这本书是在卖一个卓头。标题说得很对,但是学好了这本书以后,并不能让你成为Excel控。从目录看来,这只是一本很基础的书,更多时候是教大家把表弄得更好看,而不是真的把Excel内在的神功发挥出来。我觉得那本叫做《Excel 2013数据透视表应用大全》的更适合我。因为基本可以这么说,那本书里面所包含的东西全部都是Excel的高级货,在一般的Excel教程里,你不会用到,但只有把这些东西都玩得很熟练了,你才有可能被称为大神。这本北京大学出版社的书一共有1296页,相当的厚重。唯一让我纠结有想不想买念头的只是这本书配套的是Excel 2013,但问题是,我现在用的Excel还是2003。版本不一样,问题很严重,因为从2007开始,Excel的数据透视表功能就开始变得越发强大,很多东西在2003无法做到。所以非常有可能,我从书上学到了很炫酷的功能,但在实际操作中我却无能为力。这会让人非常沮丧。北京大学出版社还出版了好几本其它Excel方面的书,但我觉得最吸引我的还是那个数据透视表大全。从目录看来,从创建数据透视表,到怎么把数据表的格式以及各种深层次的功能用好都说到了,更厉害的是,连动态数据透视表、复合范围数据透视表,以及用数据查询、导入外部数据,以及SQL数据库部分都提到了。其中说到的Power BI,我甚至不知道是什么回事。当然,这本书也有说到数据透视表与VBA。光是目录已经非常的吸引我。因为这个里面关系到了Excel高级技能本身,SQL以及VBA。这些东西都是我很想知道,但是我却暂时不太了解的内容。让我纠结的是到底这些东西2003能不能联动实现呢?如果不能实操,我会过得很痛苦。这本书的标题没什么很牛逼的字眼,但显然能把这些东西都说透说明白的人必定是精英。因为对普通人来说,你甚至不知道这是什么,更加不用说要把这些玩透了。

随后一个让我纠结要不要下单的是,能不能回去跟科长商量一下,让单位负担这个呢?既然这个单位从来都没有发过什么书报费,所以他们出一些工具书的钱,也是很合理的。

人如果能一直保持学习状态,就会一直年轻。

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