有了List.Split,列表拆分超容易啊!但是,如果没有,怎么办?

2021-08-31 10:22:56 浏览数 (1)

昨天,有朋友有个列表拆分的需求,然后获得方法中有一个步骤的公式用到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)。

总的来说,并复杂,也不需要太多的技巧和套路,但还是要把基础的函数学好练好,理解其中的参数含义和数据引用方式,慢慢就能灵活运用了。

0 人点赞