Microsoft Excel 2003 - 按列合并

Microsoft Excel 2003 - 按列合并

我正在尝试合并两个 Excel 文件,以下是文件的结构:

[答][答]

我想将一个文件中的 B 列添加到另一个文件中作为 C 列,但问题是 A 下有一些行在每个文件中都是相同的,但有些行在每个文件中都是唯一的。我需要根据 A 列条目合并它们。例如:

File 1:  
A   | B  
One | 1  
Two | 2

File 2:  
A    | B  
Four | IV  
One  | I

Merge result file:
A    | B | C  
One  | 1 | I  
Two  | 2 |   
Four |   | IV

因此,如果它们共享相似的 A 条目,那么当一个文件中的相应 B 条目被添加为另一个文件的 C 条目时,它应该位于共享 A 条目的行中。否则,如果添加的条目不与目标文件共享其相应的 A 条目,则应将其添加为具有空白 B 条目的新行。

实际上,A 列实际上是 3 列,我只是以一列为例。我真的需要将前 3 列条目视为一个条目并以此方式进行比较。因此,只有当两个文件都有一行,其中前 3 列条目全部相同时,才认为匹配。否则不匹配。

做到这一点最简单的方法是什么?

答案1

首先,您需要制作一张包含您想要从每个原始工作表的 A 列中包含的所有值的工作表。这是一个简单的复制粘贴操作,您需要使用“删除重复项”来清理它。

我们假设您会将其放在新工作表的 A 列中,正如您所描述的那样。

然后,您需要让新工作表将原始工作表中的 B 列值拉到新工作表的 B 列和 C 列中。 VLOOKUP可以在不同的电子表格之间工作,即使它们存在于完全独立的文件中。下面我将给出一些例子。

对于以下所有示例,我均进行如下假设: - 第 1 行用于显示标题 - 新工作表中的 A 列是原始工作表中 A 列的合并 - 新工作表中的 B 列用于显示文件 1 的 B 列中的项目 - 新工作表中的 C 列用于显示文件 2 的 B 列中的项目

对于工作表/文件的命名,我将使用以下约定: - “结果”将是您要创建的电子表格的名称 - “来源1”是来自“文件 1”的数据,如您的问题所述 - “来源2”是来自“文件 2”的数据,如您的问题所述

以下VLOOKUP是“结果”中单元格 B2 的计算结果。此公式假定您的“源”文件是存储在桌面文件夹中的单独工作簿,您的用户名是“Me”,并且您运行的是 Windows Vista 或更高版本。这还假定您没有重命名源工作簿中的任何工作表(保留 Sheet1、Sheet2 等的默认值)。

=VLOOKUP(A2,'C:\Users\Me\Desktop\[Source1.xlsx]Sheet1'!A:B,2,FALSE)

对于“结果”中的单元格 C2,使用完全相同的公式,但更改[Source1.xlsx][Source2.xlsx]。要完成工作表,请将 B2 和 C2 复制到其各自的列中。

如果您想要稍后打破文件之间的关系,以便“结果”表可以独立于源表,只需在该表的 A:C 列上复制/粘贴“仅值”即可。

或者,您可以将所有三个工作表放在一个工作簿中。由于您不需要指定源文件名,因此公式会更简洁一些。使用上面所述的工作表名称命名约定,B2 的公式将是:

=VLOOKUP(A2,Source1!A:B,2,FALSE)

同样,C2 的公式相同,但替换Source1Source2。如果您稍后想要删除源工作表,则必须按照前面所述复制/粘贴“仅值”,以便在“结果”中保留所需的数据。

对此有一个小警告。如果VLOOKUP查找数据但未找到,您会#N/A在单元格中收到一条丑陋的消息。您可以使用 来解决这个问题IFERROR。以下是使用上面的最后一个公式作为基础的示例:

=IFERROR(VLOOKUP(A2,Source1!A:B,2,FALSE),"")

这实际上是说,“如果VLOOKUP返回错误,则将此单元格的值为空。否则,显示的结果VLOOKUP。”

如果您遇到麻烦,我建议您查阅帮助文档和/或在 Google 上搜索“删除重复项”、“VLOOKUP”、“选择性粘贴”和/或“IFERROR” - 无论您遇到问题的部分。

注意:我在 Excel 2010 中测试过这些功能,在 Excel 2007 中也有使用它们的经验。我不确定 Excel 2003 中是否提供所有这些功能。我强烈建议您在不久的将来升级到 Office 2007 或更高版本。 对 Office 2003 的支持将于 2014 年结束。

相关内容