Excel – 使用特殊规则过滤重复值

Excel – 使用特殊规则过滤重复值

我有两个位置(房间)和一组 ID,它们之间存在多对多关系;即,每个 ID 可以在一个或两个房间中出现一次或多次。这是一个小例子:

ID:       Location
1         Room_1
2         Room_2
3         Room_1
3         Room_2
4         Room_1
4         Room_1

我想根据位置将 ID 分成两组。如果某个 ID 仅出现在 Room_1 中,我希望将其归入第 1 组。如果某个 ID 仅出现在 Room_2 中,我希望将其归入第 2 组。如果某个 ID 出现在多个实例(行)中,如上面的 3 和 4,如果任何 ID 是 Room 2,我希望将其归入第 2 组。如果有多个实例,但它们都在 Room 1 中,那么 ID 可以保留在第 1 组中。

因此在示例中,我希望 ID 1 和 4 位于第一组,而 ID 2 和 3 位于第二组。

理想的解决方案是将它们分成单独的纸张,但任何类型的分离都可以。


这是一个更大的数据样本:

编号:位置
1 房间_1
2 房间_2
3 房间_1
3 房间_2
4 房间_1
4 房间_1
5 房间_2
6 房间_1
7 房间_2
7 房间_2

分组后看起来应如下所示:

第 1 组:

编号:位置
1 房间_1
4 房间_1
4 房间_1
6 房间_1

第 2 组:

编号:位置
2 房间_2
3 房间_1
3 房间_2
5 房间_2
7 房间_2
7 房间_2

也许更直接的表达方式是:

  • 出现的每一个 ID仅有的Room_1 中的 进入 Group 1。
  • 每个出现在 Room_2 中的 ID 都会进入第 2 组。

    维恩图

除此之外,我还想保留输入中的每一行,即使是相同的行。

答案1

我认为您想要的解决方案需要 4 个步骤:

步骤1

  • 将数据导入到表中 (表格选项卡
  • 在列上插入一个数据透视表 (PT),而不仅仅是当前数据,而是整个列;这将实现动态增长,当选择 PT 时,可以在选项菜单中“刷新”到 PT。请注意图像右侧的 PT 设置。

第2步

  • 只需在每个字段中插入 = 即可从“表格选项卡”复制每个单元格。
  • 在第二列中,插入如下公式复制标签从 B2 开始: =IFNA(IF(AND(LOOKUP(A2,Table!$J$3:$AZ$3)=A2,LOOKUP(A2,Table!$J$4:$AZ$4)=A2),"Room_2",Table!B2),Table!B2)

步骤3

  • 插入一个新工作表“Room_1”,一个与“复制标签”相对应的 PT。
  • 请注意 Room_1/Location 的过滤器。
  • 查看Room_1标签

步骤4

  • 插入新工作表“Room_2”,一个与“复制标签”相对应的 PT。
  • 请注意 Room_2/Location 的过滤器。
  • 查看Room_2标签

在此处输入图片描述

GIF 图像. 点击可放大查看每一层。

答案2

我希望你真的准确地描述了你的问题,你不会说这样的话:“哦,在我的真实的数据,我有两个以上的房间。”

我假设您在 Column 中有“ID” ,A在 Column 中有“Location” B,其他所有内容都可用于派生值。(如果不是这种情况,只需将其推到第一个未使用的列即可。)假设您在第 1 行中有标题(“ID”和“Location”),

  • 在单元格中C2插入=A2 & B2
  • 在单元格中D2,插入=ISERROR(MATCH(A2 & "Room_2", C$2:C$11, 0))
    替换11为有数据的最后一行的编号。
  • 选择单元格C2D2,然后向下拖动/填充到有数据的最后一行。

&是 Excel 的字符串连接运算符。您也可以说CONCATENATE(A2, B2),但A2 & B2显然更简洁。这在 Column 中产生诸如1Room_12Room_23Room_13Room_2、等值C。函数MATCH(A2 & "Room_2", C$2:C$11, 0)(在 Column 中D)在 Column 中搜索C此行中与字符串 连接的 ID 的出现Room_2。换句话说,是否存在一行ID 在 2 号房间吗?如果有,则 MATCH返回索引号并ISERROR返回 FALSE。否则,MATCH返回错误并ISERROR返回 TRUE。

因此,D对于每个仅出现在房间 1 中的 ID,Column 包含 TRUE,对于任何出现在房间 2 中(至少出现一次)的 ID,Column 包含 FALSE:

            排序前

D然后按从大到小(降序)的顺序对列进行排序,因此 TRUE 行位于 FALSE 行之前:

            排序后

相关内容