区间闭合方向不一致

如果匹配的对象不是离散数,区间的闭合方向不一致会使匹配稍微复杂一点,首先介绍一下演示用的参数表Para:

为了识别区间左右端的闭合性,需要两列布林型的字段:

当区间闭合不一致时,用来匹配离散数的筛选参数表和多重if方案稍稍调整一下就可以使用了,筛选参数表的演示代码如下:

[......]

阅读全文

离散值区间匹配

归类是工作中最常见的问题之一,而其中离散值的区间匹配虽然逻辑简单,但在Power Query中需要谨慎选择现实的方法才不会在数据较多的情景下运行过久,下文将分享几种不同的方案。

区间匹配一般会根据类似下图的表格进行匹配(下文称Para):

由于Table.Join()目前不支持不等式[......]

阅读全文

累加和移动平均

最近从前一直使用的累加套路开始会给出超栈警告了,优化了一下后发现移动平均也可以用类似的套路调优而且运行时间还特别少,所以想和大家分享一下。以下为优化后的累加代码,DB为拥有唯一列(Val)的表格:

以上代码的大意为:

(1)把DB表格中的Val字段化为列表并通过List.Buffer[......]

阅读全文

第一次出现负数的列

有如下表格1,第二列到第十一列的名称为MB1,MB2,……,M10。现在需要在每一行中寻找出第一次出现负数的列并在计算列1stMB中显示出该列的名称,最终效果如表格2所示。

因为最终目的为添加计算列显示每一行中第一次出现负数的列名称,需要使用如下以Table.AddColumn()为主[......]

阅读全文

合并日期参数表(二)

笔者在工作中发现了无须循环就能实现合并日期参数表的方法,本文将与大家分享该思路。以下为需要合并的3个日期参数表:

合并以上日期参数表需要如下的代码:

第一步,我们需要使用Excel.Workbook()和File.Contents()函数组合读取参数表所在的工作簿。为了在[......]

阅读全文

匹配范围

在领导的要求下,现需要对IT部门生成的存款表进行集中化加工,方便其他同事共享。其中一项加工要求根据已经合并好的日期表参数表把存款表中的到期日所处于的日期范围匹配出来。考虑到存款表的行数比较多并且还需要添加其他的计算列,所以需要比较不同的匹配方法。

因为某个到期日处于某个时间范围时必须满[......]

阅读全文

日期的转换与逆转换

在工作中常常会遇到不规范的日期,当需要处理与时间相关的问题(比如,时间的区间匹配)就需要把文本型的日期转化为真正的日期(或者整数型日期),否则就会引发错误,因为Power Query不像Excel或者Power Pivot那样会自动为数据进行转换。以下为数种常见的转换(示例日期为2020年01月31[......]

阅读全文

M语言专用输入法

之前介绍过《使用Notepad++打造自定义编辑器》,虽然方便但是每次还是要先打开编辑器写完了再复制粘贴到PQ里。
那有没有一种方法能够在PQ界面中就能实现函数智能提示呢?于是想到了输入法,可以把所有函数名加入到输入法词库中。
但是每个人用的输入法都不同,可能无法找到一个比较通用的方法,于是我做了一[......]

阅读全文