删除重复项并保留相关数据Calc(Excel)

时间:2016-01-06 19:21:14

标签: openoffice-calc

我有一个calc(excel)产品列表,每个产品都有一个关联的IP地址。许多名称都有多个IP地址,但它们一次只能组织一列。我试图删除所有的倍数,并在一个名称下拉所有的IP地址。我已经尝试过nslookup和索引匹配,但它们并不能很好地处理多个输出。现在它看起来像这个

一个| 1

一个| 2

一个| 3

C | 1

C | 2

C | 3 等...

我希望它看起来像这样

1,2,3

b 1,2,3

有没有办法在不浪费大量时间的情况下做到这一点,我有几种方法可行,但他们将永远安排我。

2 个答案:

答案 0 :(得分:0)

我建议在到达最终的“结果单元格”之前,在多个“辅助”单元格中设置公式。这将问题分解为更容易制定的较小步骤,并且如果将来需要更新。设置完成后,您可以通过右键单击列字母并选择“隐藏”来隐藏帮助列。

要设置的第一列是不同产品名称的列表。要使下面的公式起作用,产品/ IP列表需要按升序排序。如果列表尚未排序,则要对其进行排序,请首先突出显示整个列表,包括标题。然后选择数据→排序;选择“产品”排序,确保选中单选按钮“升序”,然后按OK。

出于本示例的目的,我假设产品名称在A列中,从第2行开始,IP在第2行开始的B列中(第1行是标题标签)。在要列出不同产品名称的列中(我使用了列D),请输入顶部单元格=A2。在下面的单元格中输入

=INDEX($A$2:$A$13;MATCH(D2;$A$2:$A$13;1)+1)

匹配公式有1作为第三个变量,意味着范围按升序排序,MATCH将返回最后匹配单元格的位置。我们将1添加到最后一个匹配单元格的位置,这将是具有新产品名称的第一个单元格的位置。该位置将输入INDEX函数以显示下一个产品名称。

根据需要复制并粘贴该单元格,以显示所有产品名称。

现在我们将设置一系列单元格来显示每个IP地址。我使用F到I列来显示最多4个地址:

=IF(MATCH(D2;$A$2:$A$13;0)<=MATCH($D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH($D2;$A$2:$A$13;0));"")
=IF(MATCH(D2;$A$2:$A$13;0)+1<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+1);"")
=IF(MATCH(D2;$A$2:$A$13;0)+2<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+2);"")
=IF(MATCH(D2;$A$2:$A$13;0)+3<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+3);"")
带有第三个变量1的

MATCH返回 last 匹配单元格的位置; MATCH,第三个变量为0,返回第一个匹配单元格的位置。

IF语句检查第一个匹配单元格(在第一个查找列中)的位置或下面的单元格(在第二个查阅列中)或第一个匹配下面的单元格(第三个匹配)查询列)等小于或等于最后一个匹配单元的位置。如果是,则查找相关的IP地址。如果不是,则显示空白。

在上面的公式中,您需要在每列的顶行手动输入公式。如果您有一些具有大量IP地址的产品,您可能需要设置公式,以便可以在列之间以及在行之间复制和粘贴。如果您从F列开始,这将有效:

=IF(MATCH($D2;$A$2:$A$13;0)+COLUMN()-6<=MATCH($D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH($D2;$A$2:$A$13;0)+COLUMN()-6);"")

根据需要设置顶行后,复制并粘贴所需的行数。

如果要将所有IP组合成一个用逗号分隔的单个单元格,可以使用如下公式:

=CONCATENATE(F2;IF(G2<>"";","&G2;"");IF(H2<>"";","&H2;"");IF(I2<>"";","&I2;""))

如果选中的单元格不为空,则每个IF语句将添加逗号分隔符,后跟单元格内容,否则返回空字符串。您需要手动调整以添加额外的IF语句,无论您要连接的列数是多少。同样,一旦设置了顶行,请复制并粘贴到您需要的位置。

答案 1 :(得分:0)

假设您有两列(A和B),它们按如下所示进行了标记和排序,然后输入C2:

for ... loop

和D1中的

=IF(A1<>A2;B2;C1&","&B2)

将两者复制到适合的位置,选择ColumnC并选择复制,选择性粘贴...,在每个=A1<>A2 旁打上 SelectionPaste all,然后单击< kbd>确定。

选择“列A:D”,“数据”>“过滤器”>“自动过滤器”,单击“ ”,然后为列D和所有可见范围选择Formulas

复制并粘贴到新工作表中,将B1移至C1,然后删除列B和D。