哪个 Excel 函数最适合通过输入每个变量的最小值/最大值来创建变量组合的自动填充列表(3 个变量)

哪个 Excel 函数最适合通过输入每个变量的最小值/最大值来创建变量组合的自动填充列表(3 个变量)

如果有的话,我可以使用/学习哪个函数来创建一个自填充表,在其中输入 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;

相关内容