在PowerQuery公式中能否使用Excel的Countifs/Sumifs公式?假设我有[列1]作为“条件范围”,[列2]作为“条件”(例如条件[列2]文本包含“产品”),我希望计算/求和新自定义列([列3])中[列1]单元格的数量。
在PowerQuery公式中能否使用Excel的Countifs/Sumifs公式?假设我有[列1]作为“条件范围”,[列2]作为“条件”(例如条件[列2]文本包含“产品”),我希望计算/求和新自定义列([列3])中[列1]单元格的数量。
List.Count(List.FindText(Source[Column1], [Column2]))
它不像SUMIFs那样灵活,但是可以计算Column1中包含Column2当前行的单词的记录数。
我在Power Query Editor中使用这个函数来进行COUNTIF,但我还没有掌握COUNTIFS或SUMIFS:
let
countif = (tbl as table, col as text, value as any) as number =>
let
select_rows = Table.SelectRows(tbl, each Record.Field(_, col) = value),
count_rows = Table.RowCount(select_rows)
in
count_rows
in
countif
add_column = Table.AddColumn(
last_expression,
"count",
each
f_countif(Product, "Id",[ProductId]))
我认为我解决了这个问题。
我创建了一个 csv 文件 [Sumifs test.csv],并将查询链接到该文件。
这是源表格,看起来像这样: [Header] {rows}
[Alpha1] {A A A A A A A A A}
[Alpha1] {AA AA AA AA BB BB BB BB BB}
[Num1] {1 1 1 1 1 1 1 1 1}
[Num2] {11 11 11 11 22 22 22 22 22}
[Value] {1 2 3 4 5 6 7 8 9}
让
Source = Csv.Document(File.Contents("D:\Power BI\Tests\Sumifs test.csv"),[Delimiter=",", Encoding=1252]),
#"Promoted Headers1" = Table.PromoteHeaders(Source),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers1",{{"Num1", Int64.Type}, {"Num2", Int64.Type}, {"Value", Int64.Type}}),
第一阶段=#"更改类型" ,
#"分组行" = Table.Group(#"更改类型", {"Alpha1", "Alpha1_1"}, {{"Values", each List.Sum([Value]), type number}}),
MyList = List.Buffer(#"分组行"[Values]),
Custom1 = #"分组行",
#"添加自定义" = Table.AddColumn(Custom1, "Acumulative", each List.Sum( List.Select(MyList, (x) => x>=[Values]))),
#"分组行1" = Table.Group(#"添加自定义", {"Alpha1"}, {{"Values2", each List.Sum([Values]), type number}}),
MyList2 = List.Buffer(#"分组行1"[Values2]),
Custom2 = #"分组行1",
#"合并查询" = Table.NestedJoin(第一阶段,{"Alpha1"},Custom2,{"Alpha1"},"NewColumn",JoinKind.LeftOuter),
#"展开新列" = Table.ExpandTableColumn(#"合并查询", "NewColumn", {"Values2"}, {"NewColumn.Values2"}),
第二阶段=#"展开新列",
Powerquery遵循更多的ETL方法。因此,在使用Powerquery时,您不能有一个活动的OLE。您可以将现有的Excel表格作为数据源链接,并生成一些特定的汇总内容。如果要实现与Excel类似的功能,则需要满足一些先决条件。
您的数据应该在Excel表格中。 创建另一个包含您的搜索条件的表格。 现在,您需要创建两个表格,一个用于数据源,另一个用于搜索条件
现在,在从现有数据中获取的表格中,您可以创建一个附加的指示器列,在其中,根据您的搜索条件输出所需的内容。例如,如果要实现countifs,则可以执行以下操作: 如果Text.Contains(col1,search criteria1) and Text.Contains(col2,searchcriteria 2)则输出1,否则输出0 要实现sumifs 如果Text.Contains(col1,search criteria1) and Text.Contains(col2,searchcriteria 2)则输出[sumcol],否则输出0 基于此列对表格进行汇总,然后在表格上选择输出范围(这将是另一个单元格表格)的输出结果。
如果您已经从其他来源提取数据,只需为搜索条件创建参数表格,如果您的搜索条件是固定的,请跳过数据和搜索条件表格并使用指示器列。
不幸的是,这是一个过程,没有捷径或公式。