Excel 为每个记录分配一个出现次数(如果有,则按计数排序)

Excel 为每个记录分配一个出现次数(如果有,则按计数排序),excel,count,powerquery,countif,Excel,Count,Powerquery,Countif,如何在电源查询中实现相同的计算 在Excel中,我会使用:=COUNTIF($2:A2,A2) 谢谢, Tamir在PQ中保持运行计数绝对是可能的,尽管其中一件事情并不是非常简单,因为PQ是如何看待数据的。也许有一种更有效的方法,但这就是我想到的 首先添加一个从1开始的索引列,这样我们就可以轻松地跟踪我们所在的“行”。然后添加一个自定义列,其中包含 Number.Abs(List.Count(List.RemoveItems(List.Range(#"Added Index"[Name], 0,

如何在电源查询中实现相同的计算

在Excel中,我会使用:
=COUNTIF($2:A2,A2)

谢谢,
Tamir

在PQ中保持运行计数绝对是可能的,尽管其中一件事情并不是非常简单,因为PQ是如何看待数据的。也许有一种更有效的方法,但这就是我想到的

首先添加一个从1开始的索引列,这样我们就可以轻松地跟踪我们所在的“行”。然后添加一个自定义列,其中包含

Number.Abs(List.Count(List.RemoveItems(List.Range(#"Added Index"[Name], 0, [Index]), {[Name]}))-List.Count(List.Range(#"Added Index"[Name], 0, [Index])))
我在PQ中没有看到一个简单的列表函数,它对列表中的匹配项进行计数,因此我们通过获取移除匹配项的列表与列表的基本计数之间的计数差来获得列表中的项计数。索引用于检查,因此我们可以使用list.Range检查当前“行”之前的列表

当我拉入样本数据表时,完整的M代码如下所示:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 1, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Occurence", each Number.Abs(List.Count(List.RemoveItems(List.Range(#"Added Index"[Name], 0, [Index]), {[Name]}))-List.Count(List.Range(#"Added Index"[Name], 0, [Index]))))
in
    #"Added Custom"

在PQ中保持运行计数是绝对可能的,尽管其中一件事情并不是非常简单,因为PQ是如何看待数据的。也许有一种更有效的方法,但这就是我想到的

首先添加一个从1开始的索引列,这样我们就可以轻松地跟踪我们所在的“行”。然后添加一个自定义列,其中包含

Number.Abs(List.Count(List.RemoveItems(List.Range(#"Added Index"[Name], 0, [Index]), {[Name]}))-List.Count(List.Range(#"Added Index"[Name], 0, [Index])))
我在PQ中没有看到一个简单的列表函数,它对列表中的匹配项进行计数,因此我们通过获取移除匹配项的列表与列表的基本计数之间的计数差来获得列表中的项计数。索引用于检查,因此我们可以使用list.Range检查当前“行”之前的列表

当我拉入样本数据表时,完整的M代码如下所示:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 1, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Occurence", each Number.Abs(List.Count(List.RemoveItems(List.Range(#"Added Index"[Name], 0, [Index]), {[Name]}))-List.Count(List.Range(#"Added Index"[Name], 0, [Index]))))
in
    #"Added Custom"
这只能通过“按钮”实现(几乎-除了一些自定义列公式):

或简称:

AddedIndex = Table.AddIndexColumn(Source, "Index", 0, 1),
GroupedRows = Table.Group(AddedIndex, {"Name"}, {{"tmp", each Table.AddIndexColumn(_, "Occurence", 1,1), type table}}),
Expanded = Table.ExpandTableColumn(GroupedRows, "tmp", {"Occurrence"}, {"Occurrence"})
如果需要保留初始行顺序,您还可以提取
索引
列并按其排序。此外,必须在最后一步提取所有其他必要的列

这只能通过“按钮”实现(几乎-除了一些自定义列公式):

或简称:

AddedIndex = Table.AddIndexColumn(Source, "Index", 0, 1),
GroupedRows = Table.Group(AddedIndex, {"Name"}, {{"tmp", each Table.AddIndexColumn(_, "Occurence", 1,1), type table}}),
Expanded = Table.ExpandTableColumn(GroupedRows, "tmp", {"Occurrence"}, {"Occurrence"})
如果需要保留初始行顺序,您还可以提取
索引
列并按其排序。此外,在最后一步中还必须提取所有其他必要的列