2023-08
2

脚本能批量导出导入?

By xrspook @ 8:23:29 归类于: 烂日记

我觉得自己已经迷上了PQ,沉迷于那种盘曲折叠的状态,一发不可收拾。我不知道为什么,如果要生成某个表格的话,我首先想到的是PQ,大概是因为出来的东西相对于PP来说PQ更像个表格,但是PQ又不是一个普通的表格。虽然到现在为止,我还没搞清楚到底限制PQ性能的到底是什么。还有另外一个让我很抓狂的是我在PQ的高级编辑器里面写了好多东西,除了进到里面复制粘贴以外,我还可以通过什么手段获取那些脚本呢?若某一天我换上了个低版本的office,可能用不PQ,所以我可能需要用Power Bi来代劳,那个时候如果得把脚本一点一点贴过去就实在太痛苦了,有没有一个脚本导出的方式呢?虽然实际上我问这个问题是因为其实我也没搞清楚如果我在某个Excel文件里面设置了宏,我该用什么方法把那个脚本复制出来。毕竟实际上Excel就是一个幌子,脚本才是最核心的部分,同样的疑惑,我在PP上也有。所以,微软到底是怎么想的呢?实际上无论是PQ、PP还是VBA,最终都是用某些脚本去控制Excel本身。把那些脚本在这个Excel可用,在另外的Excel也可以。我自己用VBA的习惯,就是喜欢把脚本都丢在某一个下文件里,那个东西里面什么都没有,只有脚本。当我打开这个文件,我再打开其它文件,我就可以在其它Excel文件上运行我想要的脚本。所以实际上那些脚本是些独立的东西,我甚至可以觉得,如果脚本编辑器能单独放出来,把文件拖进去以后就可以直接展示结果,有可能是直接把最终数据展示出来,也有可能是生成一个文件。对于小型的图表直接展示数据显然是最方便的,但是对一些比较长篇的东西,直接生成一个结果文件才是我们想要的,但是Excel没有把这个脚本控制器单独放出来。根据我自己的运用习惯,我觉得把PQ、PP跟VBA一起单独,变成一个就像Word、Excel、PowerPoint之类的独立 office套件完全说得过去。但显然,可能微软并不想这么干,因为一旦这样把高深的东西都暴露出来,很快就会被抄袭。因为实际上这些功能并不是office这三剑客独有的,其它编程软件也能实现。还有另外一点就是显然三剑客不是给普通人用的,因为对一些很新很新的手来说,Excel甚至不是用公式的,而是用来单元格加单元格加单元格获取结果的,还有就是把单元格设置成手动彩虹的颜色。如果那里用的是条件格式的色带我觉得很靠谱,但是某一天当我看到某人Excel设置成手动彩虹的时候,我彻底震惊了,他们直接把Excel变成了画板。

不是人人都会着迷于编程,但因为我的算力不好,我老会粗心大意,叫我一个一个单元格叠加,加这加着我就点漏了。所以我得让机器帮我做重复的工作,而我则躲在远远的控制端负责发号逻辑命令。

2022-10
20

颠覆自己

By xrspook @ 9:23:11 归类于: 烂日记

近段时间我一直都在磕《DAX权威指南》这本书,但是越往下看感觉越难看下去。这种翻译类的书籍真的太难了。还记得大学的时候我从图书馆借过一本犀牛,好像是《JavaScript 权威指南》,那本书很厚。之所以印象这么深刻,是因为某个晚上我要一个人在实验室通宵过夜。我带上了一包皇子的速食米粉以及那本犀牛。速食米粉是在我晚上睡觉之前吃的,至于为什么要带那个去吃,至今我都搞不明白,因为实际上那个晚上我是有睡觉的。不过睡觉睡得不太踏实,每三个小时要起来一次而已。那本书带过去是在我还没开始睡觉之前看的,但很难看得下去。后来才知道原来那些翻译的书看起来都很让人绝望。因为有可能翻译的那个人根本不懂那些东西,所以他只是字面上的把那从英文变成中文,但实际上内行的人会发现完全不是那么回事,看那本书的时候自然就会觉得牛头不对马嘴。

现在我看的这本《DAX权威指南》翻译的那个人显然是靠谱的。无论是那个人在DAX方面的造诣,还是他的语言表达能力都是没有问题的。问题就在于这本书的原版。这本书的作者写这本书的意图显然不是给初学者看的。因为给我的感觉是没看那本书之前,我好像有点对那个东西感兴趣,但是越往下看,越不知道自己在做什么。比如一开始的时候,我好像知道某个函数到底是怎么用的,但是当他们把东西铺开,正面的、反面的、效率高的、效率低的、有用的、没用的都抛出来以后,我彻底的不知道自己在做什么了。还有另外一个很作死的地方——任何一个东西,公式套路决定了,以后问题就只是你怎么套而已。但实际上,DAX这个东西,当我要实现某个功能的时候,高手的解决方案早已不是一开始的那些套路了,为什么他们的招数根本就不是那个函数在书上白纸黑字写清楚的那个定义。所以在学习DAX的时候,很多人都多次强调你千万不要用别人的方案去套你自己,这绝对是自寻死路,哪怕你觉得相近的东西,你把它套进去,但只要你放的方式不对,又或者是你使用的场合不合适,依然不会得到你想要的结果,只会让你产生无穷无尽的问号,现在大概我就是这么一个状况,有些东西我好像是懂的,但这种是真的懂还是似懂非懂呢?很多时候我就觉得离那个我想要的答案就只有一步之遥了,但是穷尽我所认识的东西都没办法够得着,这让人很抓狂。咫尺天涯大概只是这个状态了。可以这么说,DAX完全颠覆了一直以来我对数据的认知,跟一般的编程语言对比起来,DAX的使用方式真的不一般。对一般的编程语言来说,核心思想就是判断和循环,搞好这两个以后基本就没什么问题了。一定程度上,我觉得DAX也是在做这种事,但是他们的循环却用得不那么显而易见。还记得学习python的时候,有分迭代与循环。这两个东西不一样,但又很相近。至今我仍旧很害怕迭代这个鬼东西,因为迭代经常让我感觉很迷茫。我不知道自己正在做什么,又或者我很难预知最终我将有什么结果。现在的状况就是我越怕什么我就越遇到什么,完全中了高中数学老师龙哥的预言。

如果再挣扎一些时间,我把自己希望用DAX解决的问题搞定后,我还会继续深入学习《DAX权威指南》这个玩意吗?

2022-09
29

颠覆自己

By xrspook @ 8:13:54 归类于: 烂日记

人随着年龄的增长,大脑会越来越卡顿不好用,尤其是当你要学习一门新东西的时候。或许一直以来的经验会对你有所帮助,在运动层面上我感觉是有帮助的,即便你从未接触过这项运动,但是你之前做过的其它运动会在你掌握这项运动的时候让你稍微容易入门一些,但是也会存在这么一个怪圈,因为之前已经接触过其他运动,于是你就自动进入了某种套路,但是那个套路不利于你在这项运动上进步。比如大学的时候,我的选修体育大一是网球,大二是羽毛球。学网球的时候,老师一再强调手腕要固定,挥拍靠的是肩膀的力量,还有整个躯干的力量,不要试图用手腕,因为网球拍太重,而且无论是正拍还是反拍,都要学会收拍,否则的话,肘关节也很容易废掉。但是到大二学羽毛球的时候,却变成了羽毛球用的就是手腕的力量。后来我感觉到,尤其是在扣球的过程之中,手腕的力量尤其重要。所以这还真挺矛盾的,当我习惯了不用手腕之后,突然又要我开发手腕这个技能。但幸好总的来说,这种事情发生的几率并不算太高,比如跑步积累回来的经验在其它运动上基本上都用得着,比如心肺能力,也比如清楚自己的极限,以及当前所处的运动强度的感知。

跟运动比起来,要在知识上从零开始学习一门新的东西,我感觉随着年龄的增长越难越入脑了。以前很快就上手的东西,现在可能卡在那里半天不知道怎么回事。尤其是遇到一些逻辑已经跟之前不太一样的事物的时候。对我来说Power Query和Power Pivot是两个怪兽,它们很强大,但问题是它们使用的逻辑又跟一般的编程,或者跟平时使用的Excel又有很大的区别。你明明知道它们很强大,但问题是要驾驭那种强大,你就得让大脑按照它们的规则去运行。可以这么说,平时你看这个人你是从正面看,侧面看或者后面看,但它们所要求的那种逻辑是让你从头顶往下看,又或者从脚底往上看。从头顶往下看或者你还会遇到过,但是从脚底往上看这种情况,唯有叫那个人站在一个玻璃上面,然后你从玻璃底下抬头看。人还是那个人,但是改变观察的方式你会觉得自己很渺小很无助,但你必须接受这种不一般的视角。情况就好像去做CT。断层扫描之后,人被切成了一片一片的,但那些东西组合起来的确是个人。这样被切片的人跟我们平时所见到的那个人是一样的,但是你能根据某个人的某些切片而辨认出那就是某个人吗?Power系列的某些东西给我的感觉就像CT切片那么神那么玄乎,的确很伟大,但是却颠覆了我一直以来的认知。学习的时候,你当然希望自己能抛开之前的一切,但实际上这又谈何容易。尤其是当你看到这个的时候你自然条件反射的时候,过往的经验就会自动蹦出一些纠结,为什么居然是这样?

没有人强迫我必须得学习这个,必须得颠覆自己之前所熟悉的那些东西,但我觉得现在是时候直面那些之前我一直在逃避的坎了。

2021-12
17

VBA合并报表

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

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

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

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

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

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

2021-03
9

酝酿着

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

无所事事就意味着,我正在酝酿着某些大project,但实际上具体是什么我还没想好。今年一开始的时候,我已经计划着要买一些书,我的书单里面一共有9本书,主要是几个类别,Power BI的、Excel的,Python的,也有其它数据分析类的。内容可能会有些重复,但是因为不是我自己给钱,所以重复也无所谓,最重要的是我要对这些工具有一个了解,然后我才好判断到底哪个才最合适。所以跟之前不一样,我不会每一本都细读,我会快速过一遍,知道他们的用途以及优缺点,然后在进行拿来主义,最终决定哪个或者那些结合才最适合。

现在摆在我面前的是一堆没什么逻辑可言的人,他们想到什么就做什么,同一个表,每个月出来的款式都不一样。为什么每个月都要调整呢?这就意味着一开始设定的那个规则不合理,因为把太多情况都例外出去了,但是有些时候,并不是规则有问题,而是我也说不准那到底是怎么回事,但他们就喜欢搞特殊。为什么要每个月的东西都不一样呢?为什么要为自己设下这些可能犯错的陷阱呢?数据处理这种事跟艺术家搞创作不一样,数据处理的规则老是变,当大量数据来临的时候会措手不及,完全搞不过来。之所以会发生这种事,是因为他们从来都没有从一个大局的层面去思考他们正在做的事,只是在得过且过,做完这个改一改然后下一个,但是这一个跟下一个有什么异同呢?为什么这一个跟下一个就非得用不一样的方式对待呢?他们没考虑过。在不应该做减法的时候做减法是他们经常做的事。之所以这样,大概是因为他们一直以来都没有被一些很死的规则限定住,所以他们老是变。我喜欢用一套规则去弄通所有的东西,于是几乎每次遇到这种人,我都会很烦。我讨厌这种事情,所以我必须做出一个系统性的东西,让他们完全遵照我的规则去做,不再让他们随心所欲。其实这种事,我不是第一个遇到的人,所以肯定已经有一些很成熟的方案,直接买过来就行了,但是我觉得。学习和研究最大的快感是让我做到别人之前有没有做过的事,有没有做过其实无所谓,反正我没见识过。从0到1获得的过程我很享受,我不知道别人会不会。如果可以选的话,很多人宁愿选择遵循别人的规则,而不是设定一套规则让其他人都去执行。我不知道这种制定规则让别人去做的事算不算是女王的范。之所以要这样,我不过不想被他们的乱七八糟搞的我好烦而已。碰到有逻辑的人,我们还可以讨论一下设定条件制定规则,但那些毫无逻辑可言的人。我只能为他们设定规则,然后要求他们必须严格执行。从前的编程是为了解答出别人的题目,而现在的编程,我是要实现自己的目标,虽然那个目标很确切到底是什么我还没想清楚。在我开始之前,我必须要把这个目标明确的定下来,然后才好找方法实现。

不是每个人都喜欢亲自去探索,但我就是那种人。

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