2020-09
30

PQ里的IF要怎么加呢

By xrspook @ 9:35:06 归类于: 烂日记

昨天在设计某个Power Query查询的时候,我遇到了个问题。只需要做一个非常简单的IF判断,但貌似是不能直接用IF处理步骤。那些不过是非常简单的东西而已,如果符合这个条件,用这个步骤,如果不符合这个条件,用另外的步骤。我之所以被拦在那里,大概是因为我还没搞清IF使用的场景关系。判断步骤从理论上说再普通不过了。我该怎么做到这个呢?之所以有这个困惑,因为IF的判断,在举例子的时候,大都用在添加列这个功能里面。如果符合这个条件,就添加这种,否则就是另外一种,当然你也可以添加一大堆筛选。我正在开始构思这篇东西的时候,突然意识到,我要处理的实际上是一个列表。既然是一个列表,在后面引用的时候我就没必要把所有东西都摊开,我在前面就做好判断,后面直接一个判断好的列表扔过去就可以了。有些步骤我进行了排序,但是实际上排不排都无所谓,因为最后这些东西会到达数据透视表。月份参数必须排序,理论上那个参数不仅仅要排序,而且还应该以日期的数据格式展示出来。昨晚上我发现同样引用同一个数据表,如果我在展开的时候,不加以说明,反而会得出正确的东西。如果纯粹用可视化的操作,会有画蛇添足的效果。我的数据必须得用我想要的方式表达出来,如果默认的东西不对,我应该改到对为止。这一次我运气好,我没有解释某一列到底是什么东西,系统读对了,但有些时候情况不是这样的。当然,也会有我昨天下午遇到的那种情况,系统默认的不太靠谱。最终,我忍耐了那个不太靠谱,但是。既然有了晚上的的经历,系统默认画蛇添足的部分根本不应该存在。

一开始我只想实现某个功能,但在实现某个功能的过程中,我发现以前我的那种分类有点想太多了,因为根本没有必要。那些东西都是独立的存在。与其进行二级分类,不如多做几个一级分类。一级分类的非重复计算实际上用的都是一个模板。既然是模板,我当然可以用外部引入数据的方式实现动态筛选。关于非重复计算这种东西,加入了模型的数据透视表能轻而易举地做到,但经过这段时间的摸索以后,我发现Power Query只要能打开,基本上不会出错,但是Power Pivot我搞不懂为什么会出错,为什么会卡机。那个东西卡机的概率我感觉太高了,之所以有这么高的概率,也可能因为我用得比较少。有时我只是写了个非常简单的度量值,出来了以后,度量值不知道为什么选不上,不知道为什么选上了以后电脑就弹出了某些界面,关掉了以后Power Pivot的选项卡就消失了,但是你依然可以进入。关掉Excel,再次打开,Power Pivot的选项卡没有了,你得在加载项那里把那勾去掉,再重新加回去。实在说不准为什么会这样。如果不把那个曾经导致问题的文件的模型删掉,打开那个工作簿的时候永远存在这种问题,其它工作簿不也会被连累。删掉那个错误后,还得重启电脑才能解决问题。很久以前Power Query也是Excel的插件,但后来,那个东西已经不再是独立的选项卡,而直接内嵌到软件了,而Power Pivot在Microsoft 365里依然是个选项卡,依然要借助COM加载下。这就意味着这个东西还没有到非常成熟的地步。所以或许某一天我要玩Power Pivot的时候,我不在Excel里面玩,而会跑到Power BI里折腾。因为起码那样的话,我就不用烦恼Excel的加载项老是消失这个问题了。

越研究就越知道自己什么都不知道。

2020-05
10

Excel里写长公式

By xrspook @ 9:42:47 归类于: 烂日记

不知不觉好像我已经快一个星期都没有碰python了,原因是在家的时候我懒惰,在单位的时候,一心在整理各种各样的数据,也正是因为我正在整理数据,所以其实在我的骨子里是念念不忘想使用python这个大招的。在数据处理方面。我觉得,我正在用Excel人肉操作的那些,如果以一个正确的方式丢给python,那绝对是几秒钟就能完事。明明我知道可以这么干,但现在我还没到达那个境界。

昨天我整了一个巨长的公式。在最开始的阶段,我在普通的Windows记事本里折腾,但是当公式嵌套得越来越多以后,显然普通的记事本把我直接看晕了。我把那个东西放回Excel,但实际上Excel这个怪物根本不给我显示到底那些一对又一对的括号谁跟谁匹配。我也试过把那条长长的公式放到VS Code里,我随便打了个py文件往里面放Excel公式。虽然某些地方高亮了,但是括号匹配还是很不行。如果那不是一个Excel公式,而是一个python文件,我早就给它写很多注释、搞很多回车了。不就是个嵌套了三层的if嘛。但实际上,如果这是在python,完全可以不嵌套,用三组平行的if就解决问题了。最终,我把那条很长的公式贴到了Notepad++里。经过一番折腾,我觉得Notepad++才是最适合编辑Excel长公式的工具。虽然Notepad++不能自动生成成对的括号,但是在判断括号对应性方面,我感觉已经足够了。他们会把成对的括号用加粗的红色显示。当你选择这一边的括号的时候,那边的括号就红色加粗了,这样我就能搞清楚自己编辑到了哪一层括号。习惯了用python之后,什么括号,什么使用范围之类的东西全部用冒号、用缩进就解决了,回到Excel里要用一句话表达,本来用三句短话就能表达清楚的东西的确挺烦人。为什么Excel编辑公式就不能用回车,不能用缩进解决问题呢?如果有几个回车的话,显然那条公式到底在表达什么就很明白了。在Excel的某个单元格里回车,那就是要执行公示的节奏。如果是数组公式,你还得用组合键结束。有时我实在不明白他们为什么非得一定要用组合键呢?为什么不能在公式外面加一个什么函数包裹,让软件明白就在执行数组公式呢?

习惯了python的简洁与人性化后,回到Excel让我各种不习惯。在python里,单引号和双引号都可以用来表达那是字符串,但Excel要表达字符串,要表达某些固定格式,必须用双引号。另外一个人让我不习惯,因为我已经彻底忘记的就是在Excel里面不等于用的是<>,而在其他编程语言里面,不等于的表达方式是!=。所以当我在Excel里使用!=的时候,Excel懵逼了。于是我不得不去搜索,进而发现是我自己搞迷糊了。还记得小学的时候,家长们总担心孩子如果一边学汉语拼音一边学英语会不会张冠李戴,用汉语拼音来读英语或者用英语来读汉语拼音。这是两种彻底不一样的东西,虽然他们的最终结果就只是个发音而已。我是小学一年级开始学汉语拼音的,三年级的时候开始学英语口语。在我开始在学校正规接触英语之前,我的汉语拼音已经很熟练了,而在我接触编程语言之前,我接触过Excel,但只是接触过而已。对二者的深入了解几乎可以说是平行发展的,所以混淆二者的某些基础用法我觉得可以理解。

最终,我把那个我想做到的效果用一条很长的公式表达了出来。那条公式针对的不是具体的某些单元格里面的东西,所指代的位置全部都是相对的。所以根本不存在拖拉以后会出现状况。有了这条公式我就彻底做到了对某个仓开始入库、结束入库以及期间库存精准定筛选定位。

那条长公式在成功整出来之前,我先在纸上列出了几个条件。代码这种东西是非常讲究思路的啊啊啊。

2012-10
8

永不停息的流媒体战役

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

今天我才学会了Excel的判断句式,因为我需要做一个条件筛选然后公式计算。

最好用switch去实现,但很多个if也无妨。

最简单的if判断句式是这样的“=if(条件,程序1,程序2)”,如果符合条件,程序1,如果不符合条件,程序2。

通常来说,我们用到的是多层判断,对不同区间作不同处理,那么就得用到嵌套的if句式:

=if(条件1,程序1,if(条件2,程序2,if(条件3,程序3,程序4)))

如此类推,多层判断说白了就是用一个if()取代一个单层判断的程序。

如果你知道你自己在做什么,这都很简单,特别当你已经习惯被从前那些神马分段函数折磨得死去活来后。

WWE.COM的视频我还没找到方法下载回来,但这肯定是可行的,据说用Cygwin + rtmp-host.sh就可以。WWE.COM现在的视频(2012-10-08)是brightcove,加了IP筛选。中国呢,不翻是看不到的了,至于其它不是米国的能不能看到这我就不知道鸟。rtmpdump是神器,可以通杀基本上所有流媒体,但从一开始无情的事实就告诉我们最难整的是如何获取流媒体的地址!

今天我用RTMPDumpHelper对付WWE.COM,未果。常规工具通常不怎么凑效的,那些什么跨学科之类的才是神!不过即便是跨学科,实用性也是有一定时间区域的。神经病的我们想看不让我们看到的视频,而且不只是看到,还要下载回来慢慢咀嚼甚至分享出去。回望那么多年来的互联网生涯,基本上每年我都会和视频下载作斗争。流媒体推陈出新,我也换上了一代又一代神兵利器。

看看说明书,琢磨琢磨,我最终会下载到WWE.COM视频的!

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