PQ-M及函数:结合前期案例,学习自定义函数
小勤:《单个格式化表单转数据明细》的方法学会了,赶紧给我讲一下怎么实现批量的转换吧。
大海:不着急嘛,要实现批量的转换,需要学点儿新的知识——自定义函数。
小勤:自定义函数?就是自己写函数?
大海:对的。学会了自定义函数怎么写和怎么用,以后做一些批量的东西处理就很方便了。
小勤:好啊。
大海:首先咱们拿个简单的例子来看看,还记得拿个《模拟Excel中的Trim函数》吗?
小勤:嗯,为了实现Excel里的Trim函数对中间多个空格保留一个的情况,嵌套了好几个函数。
大海:对的,如果要经常用的话,这样每次都套n个函数就会比较麻烦,所以可以考虑写一个自定义函数。我们先来看看原来那个公式是怎样的:
小勤:嗯。这个是其中Select方法的,那如果用自定义函数怎么办?
大海:这个公式里,实际就是将“[内容]”放进来,就会转换为想要的结果,所以,如果我们把“[内容]”变成一个参数,然后按照PQ的格式给自定义函数加上名字等,那它就变成自定义函数了,具体改动如下:
1、 复制原公式到高级编辑器的let后面;
2、 增加自定义函数名称、参数格式化语句:MyTrim = (str) =>
3、 将原公式中的“[内容]”改为我们设定的参数名称str
修改后如下图所示:
这样,自定义的函数MyTrim(str)就写(改)好了,单击“已完成”后,步骤里多了MyTrim,如下:
当你单击"MyTrim"这个步骤时,会出现函数调用的窗口:
咱们先不管它,先看看怎么用。比如我们把原来用长公式的步骤删掉:
然后,重新添加自定义列,用咱们自己的函数来实现:
得到的结果是一样的,你试一下?
小勤:啊。太好了,以后再要这样用,就可以直接简单地写了。
大海:自定义函数除了能在后续的引用中用起来更加方便之外,很多时候还能实现原来函数嵌套无法实现的功能,比如一些复杂的引用和批量的数据处理等等。
小勤:嗯。咱们刚才是用一个现成的公式直接改的,如果完全自己写怎么办?
大海:首先,咱们要记住PQ里的自定义函数的基本结构:
函数名 = (参数1,参数2,…) => 函数体
小勤:嗯。这个写法也简单。那再举个小栗子?
大海:好的。比如咱们要写一个函数,用来做取一个数据表(Table)的第1行第1列(假设列名为"Column1")位置的数据,那么,就要将数据表作为参数,写法如下:
d_1_1 = (t) => t{0}[Column1]
小勤:啊,表作为参数然后可以直接按原来表行列引用的方式写?
大海:嗯。其实就是原来的公式怎么写就怎么写,将需要变为参数的地方改为你定义的参数就好了。
小勤:基本理解了。
大海:你再熟悉一下,尝试自己动手写写自定义函数,然后咱们就开始搞格式化表单的批量转换问题。
小勤:好的。
【
Power系列基础精选
】