我有一个calc(excel)产品列表,每个产品都有一个关联的IP地址。许多名称都有多个IP地址,但它们一次只能组织一列。我试图删除所有的倍数,并在一个名称下拉所有的IP地址。我已经尝试过nslookup和索引匹配,但它们并不能很好地处理多个输出。现在它看起来像这个
一个| 1
一个| 2
一个| 3
C | 1
C | 2
C | 3 等...
我希望它看起来像这样
1,2,3
b 1,2,3
有没有办法在不浪费大量时间的情况下做到这一点,我有几种方法可行,但他们将永远安排我。
答案 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
旁打上 Selection
和Paste all
,然后单击< kbd>确定。
选择“列A:D”,“数据”>“过滤器”>“自动过滤器”,单击“ 是”,然后为列D和所有可见范围选择Formulas
。
复制并粘贴到新工作表中,将B1移至C1,然后删除列B和D。