Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何应用多个if-then-else语句?_Excel_Powerbi_Powerpivot_Dax_Powerquery - Fatal编程技术网

Excel 如何应用多个if-then-else语句?

Excel 如何应用多个if-then-else语句?,excel,powerbi,powerpivot,dax,powerquery,Excel,Powerbi,Powerpivot,Dax,Powerquery,我希望开发一个excel模型,使用powerpivot/和power query从数据仓库中提取大量数据,然后根据特定规则执行一系列操作 我已经完成了第一部分,但是,我正在努力应用规则。简言之,模型应该首先检查规则1是否正确,如果不正确,那么它应该检查规则2是否正确,如果规则3不正确等等 可能有多个规则是正确的,但是,应用的操作应基于规则的顺序 一系列if语句可能会起作用,但我希望避免这种情况 感谢您的帮助/建议 我相信这是一种方法,使用外部联接 如果您有一个规则表(规则): 和一个记录表(记

我希望开发一个excel模型,使用powerpivot/和power query从数据仓库中提取大量数据,然后根据特定规则执行一系列操作

我已经完成了第一部分,但是,我正在努力应用规则。简言之,模型应该首先检查规则1是否正确,如果不正确,那么它应该检查规则2是否正确,如果规则3不正确等等

可能有多个规则是正确的,但是,应用的操作应基于规则的顺序

一系列if语句可能会起作用,但我希望避免这种情况

感谢您的帮助/建议


我相信这是一种方法,使用外部联接

如果您有一个规则表(规则):

和一个记录表(记录):

您可以合并每个表中的变量列,然后合并(联接)两个表,使用规则和记录表中新合并的变量列作为键匹配;然后拆分新合并表中的合并变量列,以最终获得此比较结果表(比较):

以下是规则表中的M代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Rule #", Int64.Type}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}),
#"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"),
#"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged")
in
#"Merged Columns"
以下是记录表中的M代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table15"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Record", type text}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}),
#"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"),
#"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged")
in
#"Merged Columns"
下面是比较表中的M代码:

let
Source = Table.NestedJoin(Records,{"Merged"},Rules,{"Merged"},"NewColumn",JoinKind.FullOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(Source, "NewColumn", {"Column1"}, {"NewColumn.Column1"}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Expanded NewColumn","Merged",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),{"Merged.1", "Merged.2", "Merged.3", "Merged.4", "Merged.5"}),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged.1", type text}, {"Merged.2", type text}, {"Merged.3", type text}, {"Merged.4", type text}, {"Merged.5", type text}}),
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
#"Renamed Columns" = Table.RenameColumns(#"Promoted Headers",{{"Rule #", "Rule # Matched"}})
in
#"Renamed Columns"