按共享值对数据列进行分组

按共享值对数据列进行分组

我不知道如何正确描述我需要做什么,所以我举个例子。一位同事在 Excel 中有一组数据,如下所示:

Col A    Col B    Col C
aaaaa    aaaaa    bbbbb
bbbbb    ccccc    ccccc
ccccc    ddddd    eeeee

最终结果应该是这样的:

Col A    Col B    Col C
aaaaa    aaaaa
bbbbb             bbbbb
ccccc    ccccc    ccccc
         ddddd
                  eeeee

甚至:

      Col A    Col B    Col C
aaaaa Yes      Yes      No
bbbbb Yes      No       Yes

ETC。

(如果有帮助的话,列是蛋白质提取方法,字母是蛋白质 ID - 我们需要确定哪些蛋白质是通过哪种方法提取的)

我的同事正在手动执行此操作,但有足够的数据,因此自动化操作将非常有帮助。

Excel 中是否有公式可以自动执行此操作?

答案1

这不是一个“交钥匙”解决方案,但如果您有数千行,这可能会为您节省一些精力。(在文件的临时副本中执行此操作,以防万一出现问题或崩溃,因为“撤消”并不总是有效。)注意:此过程是为 Excel 2007 开发的(但我已在 Excel 2013 中重新验证了它)。

首先,将所有数据复制到临时列中;我们称之为 V。请注意,您必须从 A 列复制标题,否则在单元格 V1 中放置一些虚拟值。

复制数据的图示

现在转到“数据”选项卡,“排序和过滤”组,然后单击“高级”:

                        “排序和过滤”组,其中“高级”突出显示

这将打开“高级过滤器”对话框:

                  “高级过滤器”对话框

确认“列表范围”在 V 列中显示您的数据。选择“复制到另一个位置”和“仅唯一记录”。在“复制到”字段中输入“W1”——或者单击该字段,然后单击 W1(有几种方法可以获得相同的结果)。单击“确定”。您应该得到如下结果:

                              将 V 中的数据复制到 W 中并删除重复项

即您的唯一数据值的列表。您可能需要对 W 列进行排序。

现在=NOT(ISNA(VLOOKUP($W2,A$2:A$4,1,FALSE)))输入 X2( 4用包含数据的最后一行的编号替换),然后向下拖动/填充以匹配 W 列(即,原始数据中每个唯一值一行)并向右移动到 Z 列(即,数据中的列数)。

                              显示每个值是否在每一列中的 TRUE/FALSE 的表格

这将为您提供与问题中所需结果的第二种形式相对应的真值表(但使用“TRUE”和“FALSE”而不是“是”和“否”)。例如,

  • X2 为 TRUE,因为 A 列包含“aaaaa”,
  • X3 为 TRUE,因为 A 列包含“bbbbb”,
  • Y2 为 TRUE,因为 B 列包含“aaaaa”,
  • Y3 为 FALSE,因为 B 列不包含“bbbbb”等。

删除 V 列,并随意修改标题(第 1 行)。如果您不想在电子表格中保留 AC 列,请复制 WZ 列并粘贴值。


关于公式的一些解释:上面我给出的公式用于第 X 列, 对应于 A 列。  因为我使用了,所以这是对 W 列的绝对引用, 当公式被拖拽/填充到行时, $W2它将引用单元格Wnn任何列的。相比之下,A$2:A$4是对第 2 行至第 4 行的绝对引用,但对 A 列的相对引用。当将公式拖到 Y 列时,此引用将自动更改为 B$2:B$4。当将公式拖到 Z 列时,此引用将自动更改为 C$2:C$4

相关内容