公式来了!PQ里的列表排序函数超级好用!

昨天,在文章《将内容按字符出现次数排列?这个在Excel里的难题因为PQ而轻松解决!》,通过多个步骤的操作,实现了相应的排序效果,但是,原文中的操作方法也存在一个bug:

即在有相同内容的情况下,最后通过对内容的分组合并,会导致多个内容合并到一起,因此,应改为按索引分组合并。

非常感谢“四十而惑”的提醒!

此外,昨天提到,这个问题如果通过M函数来解决,其实也非常简单,同时,借这个例子稍为深入了解一下Power Query里的列表排序函数——List.Sort!

先上公式:

思路(由内而外逐层理解):

1、将数字内容拆分为列表(Text.ToList)并去重(List.Distinct)

2、对去重后的列表按照数字内容通过替换的方式剔除该字符(Text.Replace)后的长度(Text.Length)进行排序(List.Sort)

3、将排好序的内容合并(Text.Combine)

其中比较关键的地方在于第2点,List.Sort函数,可以根据自定义函数进行排序,而不限定于根据列表的内容本身进行排序——类似于Power Pivot中的按列(参照)排序。

比如这里,对于去重后的列表中的每一个字符,其在数字内容中的个数越多,以替换的方式剔除后,得到的结果就越短,即长度越小,List.Sort参照这个长度排序,自然就会排在较前的位置。

更具体一点儿,如数字内容“11124533”,拆分并去重后得到的列表为“1,2,4,5,3”,对于这个列表中的每一个字符:

  • 比如1,在整个数字内容中通过替换剔除后,将得到结果24533,即剔除了其中的3个1,剩余内容的长度为5;

  • 对于2,则替换后得到1114533,即剔除了其中的1个2,剩余内容的长度为7……

  • 显然,如果某个字符在数字内容中出现得越多,替换后剩余内容的长度就越短,List.Sort通过参考这个结果,就会将其排在越前面。

因为可以实现参照排序,List.Sort在对列内容的排序时非常灵活。实际上,           List.Sort的第2个参数还有很多种形式,我将在后续的文章中继续与大家分享。

(0)

相关推荐

  • Excel去重+排序,从没想到如此简单!

    随着版本的更新,现在有了获取唯一值的方式.同时也加入了排序的方式!传统的去重套路,对新手实在是有些难,获取你该学一学这些新函数! 需求如下:对A列的数据提取唯一值并按升序排列 本文由"壹伴编 ...

  • excel快速排序技巧,如何使用SORTBY函数对数据进行排序

    SORTBY 函数基于相应范围或数组中的值对范围或数组的内容进行排序. 在此示例中,我们按照人员年龄对人员姓名列表进行升序排列.  ---------------------------------- ...

  • Excel–谁工资最高,工资有多高,工资表序,各种排排排

    各种不同的排序需求,且看我一一解答.案例:分别按以下要求查询下图 1 的数据表:列出总收入最高的三个人将总收入按从高到低排序按总收入从高到低,将整个数据表重新排序效果如下图 2.3 所示. 解决方案 ...

  • OFFICE 365的两个筛选函数,颠覆了我对Excel的认知③

    最近推送的五篇文章: OFFICE 365的FILTER函数,颠覆了我对Excel的认知② OFFICE 365的这些功能,颠覆了我对Excel的认知① 你真的理解了相对引用?这三点95%的人都不会, ...

  • Excel如何实现按字符长度进行排序

    如果工作中需要将产品或编号等数据按长度进行排序,即按字符的个数进行排序,则需要用到LEN函数和辅助列解决方案. 操作 在C4:C8单元格区域分别输入公式=LEN(字符串所在单元格),例如C4单元格内的 ...

  • PQ里没有Ceiling这个函数,怎么办?

    随着很多朋友越来越喜欢用Power Query进行数据处理,开始不断地将更多日常在Excel中处理的工作均放到Power Query里处理,我想,主要是因为用Power Query处理数据能够使所有工 ...

  • PQ里还能按文件大小轻松排序?

    曾经写过一篇文章<批量获取文件名称及路径,用Power Query多简单!>,里面介绍了通过Power Query实现对文件夹及路径管理的问题,但对比我们常见的文件夹内容,PQ里获取的信息 ...

  • 精通Excel数组公式022:提取唯一值列表并排序(续)

    使用公式对数字进行排序 下图12展示了两个对数字进行排序的公式.使用SMALL/ROWS函数从小到大排序,使用LARGE/ROWS函数从大到小排序. 图12 使用辅助列公式对基于数字列的记录进行排序 ...

  • 精通Excel数组公式021:提取唯一值列表并排序

    excelperfect 本文将综合使用前面系列中学习到的技术,包括布尔逻辑.动态单元格区域.提取满足条件的数据.统计唯一值等,创建出一个解决问题的大型公式.当然,如果你不需要自动动态更新数据,完全可 ...

  • 理解PQ里的数据结构(二、行列引用)

    小勤:上次对PQ的数据结构做了一个总体的介绍,那在PQ里怎样取到一行.一列,甚至一个"单元格"里的值呢?大海:上次我们知道了每个查询步骤的名称其实就是表名,有了表名之后,可以这样取 ...

  • 理解PQ里的数据结构(一、总体结构)

    小勤:大海,怎么感觉Power Query里的数据结构跟Excel里的工作表是不一样的啊,但又说不出来哪里不一样.大海:嗯,要深入学习M及函数部分,的确需要更加深入了解PQ里的数据是怎么构成的.我们还 ...

  • PQ里轻松实现卡号每4位分隔显示

    小勤:现在的银行卡都是一长串的数字,能否用Power Query做成每4位加一个空格显示的方式?现在在Excel里可以写公式,但公式比较长,而且增加数据的时候也麻烦. 大海:当然可以啊.的确也是,虽然 ...

  • 动态分组合并同类项内容,PQ里的M语言很多时候只需要改改参数就搞定了!

    小勤:大海,上次你跟我说的分组合并同类项的方法(见文章<Excel固定类别内容分组合并同类项,PQ轻松实现>),只适用于分类情况不变的内容,但很多时候都是需要变化的啊. 大海:对的.那时因 ...

  • 重要!很重要!非常重要!理解PQ里的数据结构(五、跨查询的表引用)

    小勤:大海,前面说到一个工作簿里有多个查询,那么可以跨查询引用吗?比如在"订单明细表"查询里引用"产品表"查询的结果? 大海:当然啊,你做合并查询的时候,实际上 ...