Power M列表非1步长枚举咨询:如何生成{0,25,50,…250}序列
在Power Query M中生成步长为25的序列{0, 25, 50, …, 250}
嘿,这个问题我太熟悉了!默认的{x..y}语法确实只能生成步长为1的序列,但要实现自定义步长的序列,Power Query M里有好几种简单又靠谱的方式,我给你一一拆解:
方法1:用List.Generate自定义生成逻辑(最灵活)
这个函数可以完全掌控序列的生成规则,完美适配你的需求:
List.Generate( () => 0, // 序列的起始值 each _ <= 250, // 终止判断:只要当前值≤250就继续生成 each _ + 25 // 每次迭代的步长:加25 )
运行这段代码就能直接得到{0, 25, 50, ..., 250},之后要调整起始值、终止值或者步长,直接改对应的参数就行,非常灵活。
方法2:基于步长1的序列做乘法(最简洁)
如果你的序列起始值、步长和终止值是整数倍关系,这种写法会特别清爽:
List.Transform({0..10}, each _ * 25)
原理很简单:先生成0到10的整数序列(一共11个元素),每个元素乘以25之后,正好就是你要的0,25,...,250(因为10*25=250)。这种写法一行搞定,简直是懒人福音。
方法3:用List.Numbers生成等差序列(语义最清晰)
Power Query M其实有专门生成等差序列的函数,完全就是为这种场景设计的:
List.Numbers(0, 11, 25)
参数解释:
- 第一个参数
0:序列的起始值 - 第二个参数
11:序列的总元素个数(从0到250一共11个值) - 第三个参数
25:步长
如果怕数错元素个数,也可以用公式自动计算长度,这样就算之后修改终止值也不用手动数了:
let startValue = 0, endValue = 250, stepSize = 25, itemCount = Number.RoundDown((endValue - startValue)/stepSize) + 1 in List.Numbers(startValue, itemCount, stepSize)
这样只要调整startValue、endValue和stepSize三个变量,就能生成任意等差序列,特别适合动态场景。
内容的提问来源于stack exchange,提问作者Hoy Cheung
相关产品推荐
相关产品推荐

