昨天,有朋友有个列表拆分的需求,然后获得方法中有一个步骤的公式用到List.Split这个函数,却在使用过程中就出错了。
这明显就是说没有List.Split这个函数嘛。所以我查了一下微软的在线Power Query的文档,结果发现里面也没有。于是,我在Power BI里试了一下——好吧,原来Power BI里已经有了,如下图所示:
既然有了新函数,试一把,将1到9的列表,按每2个一组拆分成多个列表:
非常简单!有没有?对的,这个函数实际就是将一个列表的内容,按每多少个一组进行拆分,最后不够个数的直接归为一组,如下图所示:
可是,但是,问题是,现在估计大多数Excel的Power Query里都没有这个函数,那怎么办呢?可以尝试写个自定义的函数,来实现类似的功能:
代码语言:javascript复制List.Split=(l,s)
=>List.Transform(
{1..Number.Round(
List.Count(l)/s,
0,
RoundingMode.Up
)
},
(n)=>List.Range(l,(n-1)*s,s)
)
主要思路:
1、先根据每组多少个的参数确定最终能分成多少个列表(待拆分列表的元素个数除以每组数量并向上舍入):Number.Round(List.Count(l)/s,0,RoundingMode.Up);
2、通过List.Transform函数,逐个去取要分成一组的元素List.Range(l,(n-1)*s,s)。
总的来说,并复杂,也不需要太多的技巧和套路,但还是要把基础的函数学好练好,理解其中的参数含义和数据引用方式,慢慢就能灵活运用了。