如果有的话,我可以使用/学习哪个函数来创建一个自填充表,在其中输入 3 个输入的最小最大变量,并获取包含这 3 个输入的每种组合的列表?
又名
Variable N = Min 1, Max 100
Variable M = Min 10, Max 50
Variable P = Min 1, Max 365
List:
N1, M10, P1
N1, M10, P2
N1, M10, P3
....
N1, M11, P1
N1, M11, P2
N1, M11, P3
.....
N2, M10, P1
N2, M10, P2
N2, M10, P3
...
N100, M50, P363
N100, M50, P364
N100, M50, P365
答案1
如果您不介意不能将数据放入工作簿(例如,如果您只想在 PowerPivot 数据模型或数据透视表中使用它),那么您可以这样做:
使用数据>获取和转换数据>获取数据>从其他来源>空白查询>
当 Power Query 编辑器打开时,单击主页选项卡上的“高级编辑器”。
将高级编辑器的内容替换为以下查询:
let
listN = List.Numbers(1,100),
#"Convert listN to a table" = Table.FromList(listN, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
listM = List.Numbers(10,41),
#"convert listM to a table" = Table.FromList(listM, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
listP = List.Numbers(1,365),
#"convert listP to a table" = Table.FromList(listP, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Rename Column1 from tableP to P" = Table.RenameColumns(#"convert listP to a table",{{"Column1", "P"}}),
#"Change P to integer data type" = Table.TransformColumnTypes(#"Rename Column1 from tableP to P",{{"P", Int64.Type}}),
#"Add tableM as a column called M" = Table.AddColumn(#"Change P to integer data type", "M", each #"convert listM to a table"),
#"Expanded M" = Table.ExpandTableColumn(#"Add tableM as a column called M", "M", {"Column1"}, {"Column1"}),
#"Rename Column1 from tableM to M" = Table.RenameColumns(#"Expanded M",{{"Column1", "M"}}),
#"Change M to integer data type" = Table.TransformColumnTypes(#"Rename Column1 from tableM to M",{{"M", Int64.Type}}),
#"Add tableN as a column called N" = Table.AddColumn(#"Change M to integer data type", "N", each #"Convert listN to a table"),
#"Expanded N" = Table.ExpandTableColumn(#"Add tableN as a column called N", "N", {"Column1"}, {"Column1"}),
#"Rename Column1 from tableN to N" = Table.RenameColumns(#"Expanded N",{{"Column1", "N"}}),
#"Change N to integer data type" = Table.TransformColumnTypes(#"Rename Column1 from tableN to N",{{"N", Int64.Type}})
in
#"Change N to integer data type"
这将创建三个列表,然后在它们之间执行交叉连接。
然后,您可以使用主页>关闭并加载到>并选择“仅创建连接”和“将此数据添加到数据模型”。
同样,这不会将查询结果放入工作簿中,因为正如另一位评论者指出的那样,结果中的行数太多。如果您不习惯使用 DAX,这可能会行不通。
如果仅创建列表就足够了(而不进行连接),那么您可以将这些公式放在不同的列中:
=SEQUENCE(100)
=SEQUENCE(41,1,10)
=SEQUENCE(365)
总而言之,如果您打算进行这种连接并且没有适当的编程背景,我的建议您首先在数据库(SQL Server,MySQL,无论什么)中创建三个单列表,每个列表对应一个您想要连接的列表,并使用简单:
create table three_lists
as
select *
from tableN, tableM, tableP;