合并两个不重复的列表

一个经典的情况:您有两个列表需要合并为一个。 此外,在初始列表中,可以同时存在唯一元素和匹配元素(在列表之间和内部),但在输出中,您需要获得一个没有重复(重复)的列表:

合并两个不重复的列表

让我们传统地看几种解决这种常见问题的方法——从原始的“额头”到更复杂但更优雅的方法。

方法 1:删除重复项

您可以用最简单的方法解决问题——手动将两个列表的元素复制到一个列表中,然后将该工具应用于结果集。 删除重复 从标签 时间 (数据 - 删除重复项):

合并两个不重复的列表

当然,如果源列表中的数据经常更改,此方法将不起作用——您必须在每次更改后重复整个过程。 

方法 1a。 数据透视表

这种方法实际上是前一种方法的逻辑延续。 如果列表不是很大,并且预先知道其中的最大元素个数(例如不超过 10 个),则可以通过直接链接将两个表合二为一,在右侧添加一列,然后根据结果​​表构建汇总表:

合并两个不重复的列表

如您所知,数据透视表忽略重复,因此在输出中我们将得到一个没有重复的组合列表。 仅需要带有 1 的辅助列,因为 Excel 可以构建包含至少两列的汇总表。

当原始列表更改时,新数据将通过直接链接进入组合表,但必须手动更新数据透视表(右键单击 - 更新并保存)。 如果您不需要即时重新计算,那么最好使用其他选项。

方法三:数组公式

你可以用公式解决问题。 在这种情况下,结果的重新计算和更新将在原始列表发生更改后立即自动进行。 为了方便和简洁,让我们给我们的列表命名。 清单1 и 清单2运用 名称管理员 标签 公式 (公式 - 名称管理器 - 创建):

合并两个不重复的列表

命名后,我们需要的公式是这样的:

合并两个不重复的列表

乍一看,它看起来令人毛骨悚然,但实际上,一切都没有那么可怕。 让我使用 Alt+Enter 组合键并用空格缩进将这个公式扩展为几行,就像我们所做的那样,例如这里:

合并两个不重复的列表

这里的逻辑如下:

  • 公式 INDEX(List1;MATCH(0;COUNTIF($E$1:E1;List1); 0) 从第一个列表中选择所有唯一元素。一旦它们用完,它就会开始给出 #N/A 错误:

    合并两个不重复的列表

  • 公式 INDEX(List2;MATCH(0;COUNTIF($E$1:E1;List2); 0)) 以相同的方式从第二个列表中提取唯一元素。
  • 相互嵌套的两个 IFERROR 函数首先实现 list-1 中唯一的输出,然后依次从 list-2 中输出。

注意,这是一个数组公式,即键入后,必须在非普通单元格中输入 输入,但使用键盘快捷键 按Ctrl+转移+输入 然后复制(拖动)到带有边距的子单元格。

在英文版 Excel 中,此公式如下所示:

=IFERROR(IFERROR(INDEX(List1, MATCH(0, COUNTIF($E$1:E1, List1), 0)), INDEX(List2, MATCH(0, COUNTIF($E$1:E1, List2), 0)) ), "") 

这种方法的缺点是,如果源表具有大量(数百或更多)元素,则数组公式会显着减慢文件的处理速度。 

方法 3. 电源查询

如果您的源列表包含大量元素,例如数百或数千个,那么与其使用缓慢的数组公式,不如使用一种根本不同的方法,即 Power Query 加载项工具。 默认情况下,此加载项内置于 Excel 2016 中。 如果您有 Excel 2010 或 2013,则可以单独下载并安装(免费)。

动作的算法如下:

  1. 打开已安装插件的单独选项卡 电源查询 (如果您有 Excel 2010-2013)或只是转到选项卡 时间 (如果您有 Excel 2016)。
  2. 选择第一个列表并按下按钮 从表/范围 (从范围/表). 当被问及如何从我们的列表中创建“智能表”时,我们同意:

    合并两个不重复的列表

  3. 查询编辑器窗口打开,您可以在其中看到加载的数据和查询名称 表1 (如果需要,您可以将其更改为自己的)。
  4. 双击表头(word 清单1)并将其重命名为任何其他(例如 员工)。 确切地命名什么并不重要,但必须记住发明的名称,因为。 稍后在导入第二个表时必须再次使用它。 将来合并两个表只有在它们的列标题匹配时才有效。
  5. 展开左上角的下拉列表 关闭并下载 并选择 关闭并加载... (关闭并加载到…):

    合并两个不重复的列表

  6. 在下一个对话框中(它可能看起来有点不同 - 不要惊慌),选择 只需创建一个连接 (仅创建连接):

    合并两个不重复的列表

  7. 我们对第二个列表重复整个过程(第 2-6 点)。 重命名列标题时,使用与上一个查询相同的名称(人物)很重要。
  8. 在选项卡上的 Excel 窗口中 时间 或在选项卡上 电源查询 获取数据 - 合并请求 - 添加 (获取数据——合并查询——追加):

    合并两个不重复的列表

  9. 在出现的对话框中,从下拉列表中选择我们的请求:

    合并两个不重复的列表

  10. 结果,我们将获得一个新查询,其中两个列表将相互连接。 仍然可以使用按钮删除重复项 删除行 - 删除重复项 (删除行 - 删除重复项):

    合并两个不重复的列表

  11. 完成的查询可以在选项面板的右侧重命名,给它一个合理的名称(实际上这将是结果表的名称),并且可以使用命令将所有内容上传到工作表 关闭并下载 (关闭&加载):

    合并两个不重复的列表

将来,对原始列表进行任何更改或添加,只需右键单击即可更新结果表。

  • 如何使用 Power Query 从不同文件中收集多个表
  • 从列表中提取唯一项
  • 如何比较两个列表的匹配和差异

发表评论