生成两个Excel列的所有可能的唯一组合

时间:2019-05-05 20:58:27

标签: excel powerquery

我有以下简化的数据集,我需要从中创建一个唯一列表并同时转置B列中的数据。我认为我需要使用INDEX,但不确定这种情况下的正确语法。

B列中的数据用空格分隔。

这是我的数据:

(New-Version 1 2 3 4).BuildRevision
3.4

必填结果

|---------------------|------------------|
|      Column A       |      Column B    |
|---------------------|------------------|
|          1          |       AA BB      |
|---------------------|------------------|
|          2          |       BB CC      |
|---------------------|------------------|
|          3          |       DD EE      |
|---------------------|------------------|

2 个答案:

答案 0 :(得分:1)

要在输入表中得到输出表,只需几个步骤,就可以从UI使用Power Query:

  • space分隔符分隔B列。
  • 选择列A,然后选择到unpivot other columns
  • 删除在取消透视时出现的多余的列Attribute

这是该操作的M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Column2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Column2.1", "Column2.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column2.1", type text}, {"Column2.2", type text}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Column1"}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Other Columns",{"Attribute"})
in
    #"Removed Columns"

结果:

enter image description here

答案 1 :(得分:0)

Ron Rosenfeld's answer将数据作为所需结果指示的OP取消透视。

如果需要从两列创建数据的所有组合(而不是取消透视),请通过将每组值放置在其自己的列中来规范化数据。在此示例中,列B每个单元具有两个数据条目,可以使用Data > Text to Columns进行拆分。要使用唯一条目,请使用标准Excel工具Data > Remove Duplicates,或在Excel Power Query Editor中,右键单击数据列标题,然后单击Remove Duplicates

为要包括在组合中的每一列创建单独的查询。通过添加带有引用第一个数据查询的公式的自定义列,Power Query将在两列之间执行 Full Outer Join (完全外部联接)。

最终表结果

Final data table


第1步:数据>文本到列

(a)选择列B。在功能区中,转到“数据”>“文本到列”。

Excel data table

Data > Text to Columns


(b)在适当的定界符(空格,制表符等)上分割数据。

Select delimiter


步骤2:合并数据并删除重复项

(a)从C列中剪切数据并粘贴到B列中

Three columns of data

(b)将C列数据粘贴到B列中。

Combined column data

(c)选择B列,然后单击数据>删除重复项

Remove duplicates

(d)如果弹出警告,提示您在选择项旁边找到的数据,请单击“继续当前选择项”

Remove duplicates warning

(e)选中“ B列”复选框,然后单击“确定”。

Select columns to remove duplicates

步骤3:为列A创建数据查询

(a)选择A列,然后单击数据>来自表/范围

Data - From Table/Range

(b)查询设置>属性>名称并输入名称“ ColumnA”

(c)主页>关闭并加载>关闭并加载到...

(d)选择:仅创建连接

Query Settings - enter name

步骤4:为B列创建数据查询

(a)选择B列

(b)数据>来自表/范围

Column B data query

(c)查询设置>属性>名称并输入名称“ ColumnB”

(d)添加列>自定义列

Add Column > Custom Column

(e)新列名称:组合

(f)自定义列公式:= ColumnA

Custom column formula

(g)展开新的“组合”列(带有向左/向右箭头的图标)

Expand new Combinations column

(h)将“组合”列拖到左侧

(i)主页>关闭并加载

第5步:对输出数据表进行排序

Sort data