欢迎光临散文网 会员登陆 & 注册

Excel之PowerQuery 按指定行数转置

2023-02-06 08:12 作者:孙兴华zz  | 我要投稿

网友提问:

回答网友问题:

解决这个问题的方法有很多,对于我们使用者来说(开发人员除外),解决问题的时间并不只看你程序运行时间,而是综合时间。想代码+运行时间=综合时间


我随便说两个方法,比如网友这个问题,每三行转置

第一种方法(笨办法):

1、先知道所有行数

2、例如表1有9行,每3行一组,那就是 9行 ÷ 3个/组 = 3组,可以写成下面的样子

Table.RowCount(更改的类型)/3

3、组成列表,样子是{1,2,3},写成

{1..Table.RowCount(更改的类型)/3}

4、遍历这个列表,让列表中每个元素重复3次

写在下面的样子,返回结果{{1,1,1},{2,2,2},{3,3,3}}

List.Transform( {1..Table.RowCount(更改的类型)/3},each List.Repeat({_},3)

5、使用List.Combine合并,将上面的列表变成{1,1,1,2,2,2,3,3,3}

6、将表与按列转列表,再与上面的列表连接后转成表。最终公式

现在可以使用Table.Group分组转置了(这步就略了)。但是这样的方法速度慢,性能损失严重,只是给你提供一个思路,因为有的场景暂时只能用这种笨办法,除非语言开发设计者有更好的优化。



第二种方法:


思路:第1次从下标0开始取3行,第2次从下标3开始取3行,第3次从下标6开始取3行

我们只需要{0,3,6} 这样的列表表示下标,可以使用List.Genreate步长为3来实现

遍历这个列表,配合List.Range使用

最后按行转表就可以了:

最终代码如下:


当然还有更多的方法,不过,解决这个案例并没有实际意义,意义在于工作中实战的应用,不同需求,有不同的处理方法。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e

更多视频:https://www.bilibili.com/read/cv10222110

Excel之PowerQuery 按指定行数转置的评论 (共 条)

分享到微博请遵守国家法律