Power Query(M语言):按组查找taknie列首个"TAK"的位置
Power Query分组查找每组内首个"TAK"的位置修正方案
你的代码问题出在分组时没有使用当前分组的子表,而是一直用整个源表Source去查找,所以所有分组都返回了全表中第一个"TAK"的位置(也就是2),完全没用到分组后的子数据。
修正后的完整代码
Source = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content], Grupa = Table.Group(Source, "Grupa", {"wynik", each let taknieList = [taknie], firstIndex = List.PositionOf(taknieList, "TAK", Occurrence.First) in if firstIndex = -1 then 0 else firstIndex + 1 }) in Grupa
关键修正点
- 分组逻辑里的
each代表当前分组的子表,用[taknie]可以直接提取子表的taknie列转为列表 - 使用
List.PositionOf查找列表中首个"TAK"的索引(Power Query索引从0开始),找不到匹配项时返回-1 - 通过判断索引值,将索引+1得到从1开始的位置;如果是
-1则返回0,符合无TAK时的要求
运行结果
执行后会得到你期望的结果:
| Grupa | wynik |
|---|---|
| g1 | 2 |
| g2 | 4 |
| g3 | 1 |
| g4 | 2 |
| g5 | 0 |
内容的提问来源于stack exchange,提问作者Anna Hołdyńska
相关产品推荐
相关产品推荐

