Excel函数将两列排序为一列

时间:2016-02-09 12:16:37

标签: excel excel-formula

我有两个txt文件。第一个有这样的数据。

A
B
C
D
E

第二个有这样的数据。

A1
A2
+++
B1
B2
B3
+++
C1
C2
C3
C4
+++

+++
E1
E2
E3
E4
E5
E6

我希望他们这样排序。

A,A1
A,A2
B,B1
B,B2
B,B3
...
...
...
D,
E,E1
E,E2
E,E3
E,E4
E,E5
E,E6

请注意,第一个txt文件中的列D没有匹配的子列!我该如何对这些数据进行排序?

1 个答案:

答案 0 :(得分:0)

这不是一个真正的Excel问题,但过去常常需要按摩数据文件,Excel可以用于这些一次性数据转换问题。

将第一个加载到工作表中并添加一个名为“Type”的列,并使用“Primary”填充它,如下所示:

First File Spreadsheet with Type column

将第二个文件导入工作表,然后添加一个名为“Type”的列,并使用公式填充type列。我假设从你的例子中你有一些“垃圾”分隔符,这个公式可以标记那些。

Second File Spreadsheet with Type column

示例数据的公式如下所示。您可以根据实际数据更改文字或逻辑。

=IF(A7="+++","Ignored","Secondary")

将两个表(剪切和粘贴都很好)合并到一个新工作表中,然后按键对它们进行排序,这样就得到了这个工作表:

Spreadsheet with merged tables, after sorting

现在我们可以通过添加两个带公式的列来获取组合键。使用此公式添加“派生的主要”列。

=IF(ROW(B2)>2,IF(B2="Primary","A2,C1),"")

(上面的公式假设你有一个标题行,就像我的例子,数据从第二行开始。)

添加使用此公式的“复合键”列:

=IF(B2="Ignored","",IF(B2="Primary",IF(C2=C3,"", C2 &","),C2 &","&A2))

基本上,上面的逻辑检查三个条件之一:

  1. “忽略”类型:在复合键中不显示任何内容。
  2. “辅助”类型:将“派生的主要”与“密钥”结合起来
  3. “Primary”类型:如果下一行的派生主值与当前派生的主值匹配,则不显示任何内容,否则显示派生的主值。 (即没有辅助的单身主键。)
  4. 然后你的表格看起来像这样:

    Final spreadsheet with composite key

    您可以复制最后一列,并对其进行排序以删除空白。

    我猜你的真实情况有更多的数据,并且垃圾分隔符的值可能会有所不同,因此请根据需要调整公式。希望它有所帮助。