|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
供参考,用List.Accumulate。这有点类似累计求和的逆过程。- let
- 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
- 替换 = Table.ReplaceValue(源,null,0,Replacer.ReplaceValue,{"行驶里程表数"}), //把行驶里程表数这一列中的null替换为0
- 变形 = let L = Table.ToRecords(替换),
- f = (x,y)=>List.PositionOf(x,y,2,each [牌照号] )
- in List.Accumulate( L , { {},{} },
- (s,c)=>{ s{0}&{c}, //相当于一个动态引用的区域,类似于工作表函数中的A$1:A1
- s{1}&{ c & [ l = f(L,c), //计算当前车牌号在源表牌照号这一列中出现的所有位置
- p = List.Count(f(s{0},c)), //计算当前车牌号在当前记录之前出现的次数
- i =[ 里程数= if p=0 then null
- else L{l{p}}[行驶里程表数]-L{l{p-1}}[行驶里程表数] ]
- ] [i] } } ){1},
- 结果 = Table.FromRecords(变形)
- in
- 结果
复制代码
|
|