需求:把数据展开,并从小到大排序! “-”表示数据数据区间,比如20-30,表示20到30 这11个数字!
第一步:按照逗号分割 在Excel工作表函数中没有文本分割函数,处理文本类问题非常的痛苦,M函数中有Text.Split等函数,可以轻松按照指定字符分割! 语法:Text.Split(文本,分隔符) 结果:返回按照指定分隔符分割后的列表 下一步,我们就来遍历处理列表,把短划线替换成“..”列表的语法糖! 第二步:遍历列表,转成对应的列表
作用是转成列表格式! 想要真正变成列表,需要使用 Expression.Evaluate 来点睛 Expression.Evaluate 和VBA中的Evaluate 的有点类似,可以把文本表达式转成可以计算的表达式!比如案例中,我们只是构建除了List的表示方式 但是无法计算, Expression.Evaluate 处理后则可以计算,比如列表的展开等等! 关于列表的语法糖, 可以看前面写过的文章:PQ实战 | Power Query中如何构建日期列表 第三步:合并列表并排序
List.Combine 把多个列表合并成一个,下一步排序即可! List.Combine更加基础的案例: 排序,直接使用List.Sort,默认就是升序,所以不用加第二参数! 如果是降序,第二参数使用 Order.Descending
排序好,我们需要合并到一个单元格中! 第四步:合并到一个单元格
合并直接可以使用Text.Combine即可,但是这样都是数字,Text.Combine要求是文本,所以我们要使用Text.From把数字转成文本,再合并! 肯定有新手会问,关于List.Transform 第二参数在这里的用法问题,直接写了一个函数名称,一般都是each 函数+参数!为什么,申请情况下可以这么写? 首先参数必须是function,也就是函数,其实上下文正好对应这个函数的参数!比如我们上面一般写成 each Text.From(_),此时遍历的元素正好是Text.From的唯一参数,没有歧义! List.Transform官方案例: 本文由“壹伴编辑器”提供技术支持 |
|