如何在Excel Power Query中创建计算滑动窗口最大值的自定义列?
在Power Query中实现连续N行最大值计算
这里的N对应你提到的4(即Excel中G1的值),以下是两种实用的实现方法:
方法1:利用现有手动添加的idx列
假设你的数据源表名为Source,且idx是从1开始的连续整数索引,添加自定义列的公式如下:
Vmax = let currentIdx = [idx], // 筛选当前行到后续3行的范围 targetRows = Table.SelectRows(Source, each [idx] >= currentIdx and [idx] <= currentIdx + 3), // 提取V列数据并计算最大值 maxVal = List.Max(targetRows[V]) in maxVal
如果最后几行的idx+3超出表的最大索引,List.Max会自动仅计算现有行的最大值,和你Excel公式的行为一致。
方法2:基于Power Query内置索引(无需手动idx列)
如果不想依赖手动添加的idx列,可直接用内置索引实现:
- 先给表添加内置索引:
添加列→索引列→从0开始 - 添加自定义列,公式如下:
Vmax = let currentIndex = [索引], // 从当前位置开始提取最多4个V列值 valueRange = List.Range(Source[V], currentIndex, 4), maxVal = List.Max(valueRange) in maxVal
List.Range会自动处理超出表长度的情况,比如最后一行仅能取到自身的V值,直接返回该值作为最大值。
动态调整行数的扩展
如果需要像Excel中G1那样动态修改连续行数,可先定义一个参数RowCount(设为4),然后将公式中的4替换为RowCount即可。
内容的提问来源于stack exchange,提问作者BogdanK
相关产品推荐
相关产品推荐

