比较多个列,仅拉出每列中出现的单元格

时间:2014-07-16 20:12:59

标签: excel excel-formula

我的工作表中有10个左右的列。每列包含大约200个名称,并且工作表上有其他数据。

我想要做的是创建一个只包含列之间通用名称的新列。因此,基本上将每列中的每个单元格与所有其他列中的所有其他单元格进行比较,并仅返回公共单元格。

例如:

Column1:name_A,name_C,name_F

Column2:name_C,name_B,name_D

Column3:name_C,name_Z,name_X

所以在这个例子中,新列只包含name_C,因为它是所有三列共有的唯一值。

有没有办法做到这一点?我对Excel的了解很差,而且在网上找不到与我的问题类似的内容,所以我将不胜感激。

感谢阅读,

<磷>氮

2 个答案:

答案 0 :(得分:0)

将所有内容放在一个电子表格中,创建一个数据透视表可能比您想到的算法更有效。

答案 1 :(得分:0)

这是我的模拟。我添加了额外的名字来展示更好的

D(公式)具有最简单的版本。这将仅列出所有列中显示的值,但这些值将显示在与A列中相应名称相同的行中,带有空格,而不是已排序(给出D(结果))

如果您希望所有名称都显示在顶部 - 如E列所示,您可以对表格进行排序(如果列更改,则必须重新排序)或者您可以使用我的解决方案:

  • 获取Excell的MoreFunc Addon(这是我找到的最后一个download link,这是一个很好的installation walk-through video
  • 完成所有操作后,选择单元格E1:E8,单击公式栏并键入以下内容:=UNIQUEVALUES(IF(COUNTIF(A2:C9,A2:A9)=3,A2:A9,""))
  • 通过单击ctrl-shift-enter接受公式(这将创建一个数组公式,并且公式周围会出现花括号)

            A       B       C       D(formula)                              D(result)       E(result - sorted)
        -------------------------------------------------------------------------------------------------------
    1   |   name_A  name_C  name_C  =IF(COUNTIF($A$1:$C$8,A1)=3,A1,"")                      name_m
    2   |   name_C  name_B  name_Z  =IF(COUNTIF($A$1:$C$8,A2)=3,A2,"")      name_C          name_C
    3   |   name_F  name_D  name_X  =IF(COUNTIF($A$1:$C$8,A3)=3,A3,"")
    4   |   name_t  name_o  name_g  =IF(COUNTIF($A$1:$C$8,A4)=3,A4,"")
    5   |   name_y  name_p  name_h  =IF(COUNTIF($A$1:$C$8,A5)=3,A5,"")
    6   |   name_u  name_k  name_7  =IF(COUNTIF($A$1:$C$8,A6)=3,A6,"")
    7   |   name_i  name_5  name_9  =IF(COUNTIF($A$1:$C$8,A7)=3,A7,"")
    8   |   name_m  name_m  name_m  =IF(COUNTIF($A$1:$C$8,A8)=3,A8,"")      name_m