Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 使用List.Generate()动态筛选多列和不同条件_Excel_Powerbi_Powerquery - Fatal编程技术网

Excel 使用List.Generate()动态筛选多列和不同条件

Excel 使用List.Generate()动态筛选多列和不同条件,excel,powerbi,powerquery,Excel,Powerbi,Powerquery,我需要筛选一个表。我面临的挑战是筛选信息(列名、列数以及筛选值)可能会更改 在做了一些研究之后,我认为List.Generate()可以在这里帮助我。其思想是创建一个循环,在每个循环过程中应用一个过滤器条件,并动态地传递给循环 不幸的是,我对List.Generate()的理解不够透彻,无法自己构建它。因此,任何帮助都将不胜感激 以下是我的设置: 我有一个包含数据的表(DATASTART) 以及一个表(筛选器),其中包含应筛选哪些列的DATASTART以及相应的筛选器值的信息 +--------

我需要筛选一个表。我面临的挑战是筛选信息(列名、列数以及筛选值)可能会更改

在做了一些研究之后,我认为List.Generate()可以在这里帮助我。其思想是创建一个循环,在每个循环过程中应用一个过滤器条件,并动态地传递给循环

不幸的是,我对List.Generate()的理解不够透彻,无法自己构建它。因此,任何帮助都将不胜感激

以下是我的设置:

我有一个包含数据的表(DATASTART)

以及一个表(筛选器),其中包含应筛选哪些列的DATASTART以及相应的筛选器值的信息

+--------+--------+
| Column | Filter |
+--------+--------+
| A      |      1 |
| B      |      2 |
+--------+--------+
具有静态电源查询代码

= Table.SelectRows(DATASTART, each ([A] = 1) and ([B] = 2))
结果将是这个表(DATARESULT)

这个怎么样

let
    condition = (record as record) as logical =>
        List.AllTrue(
            List.Transform(
                Table.ToRecords(FILTER),
                each Record.Field(record, [Column]) = [Filter]
            )
        )
in
    Table.SelectRows(DATASTART, condition)

非常感谢这个解决方案。它适用于所描述的场景。将围绕一点来了解其工作原理。=)
+---+---+---+
| A | B | C |
+---+---+---+
| 1 | 2 | 2 |
+---+---+---+
let
    condition = (record as record) as logical =>
        List.AllTrue(
            List.Transform(
                Table.ToRecords(FILTER),
                each Record.Field(record, [Column]) = [Filter]
            )
        )
in
    Table.SelectRows(DATASTART, condition)