如何比较两个Excel电子表格?


8

我想比较两个Excel电子表格

两者具有相同的列,顺序相同但行不同。

我有一个包含1,000行和50列的电子表格,其中包括每行的唯一ID和个人数据(地址,电话号码等)。

我想将它与一年前提取的相同基数进行比较。

我的目标是了解所有变化(例如,更改其地址的人)。

我尝试使用电子表格(如下所述: 比较两个excel文件 )但它不起作用,因为在我的“新”文件中我有新行,并且我在旧文件中有一些不在新文件中的行。

电子表格与Excel行号进行比较。 是否可以与第一列(唯一ID)进行比较?

这是一个非常简单的例子: https://filebin.net/g4w98251y9mfwug6

有两张纸代表我的两个电子表格。

正如你所看到的,两者都有相同的列但是:

  • 两个工作表上都有行没有更改(所有行都相同)
  • 两张纸上都有行但有变化(在我的示例中为橙色)
  • 有些行只在12月表中(我不需要识别这些行)
  • 有些行只在1月份工作表中(在我的示例中为橙色)

橙色正是我想要的,但在这个例子中我可以手动完成:比较12月和1月。 在真正的电子表格中,我无法手动执行,因为有太多的更改,数据,行,列等,我将每月执行此操作。

只有一列永远不会改变:A列。


仅供参考,人们不喜欢下载文件,特别是在未知用户发布时。我不是说你不应该上传文件并发布链接给他们,而是试着让你的问题独立 - 应该可以在不查看文件的情况下理解它。我实际上相信你的问题很好;我没有看文件就能回答它。但是,当然,样本数据更清楚问题(特别是Excel问题)。 ......(续)
Scott

1
(续)......我们希望您像过程一样发布数据的文本表示 这里 这里 ;使用 将文本格式化为表格 网站或 纯文本表生成器 网站,如果你想。我建议我在答案中使用的数据恰到好处:您在问题中确定的四个类别中的每一个中都有一行。
Scott

那里有一个很好的Excel Compare工具。它可以比较2个excel文件并注销差异。您也可以尝试Araxis Merge,虽然它不是免费的。
Kromster

Answers:


3

您的电子表格使用50列很方便 因为这意味着列#51,#52,...可用。 使用“辅助列”可以很容易地解决您的问题, 我们可以放入专栏 AZ (这是第52栏)。 我假设每张纸上的第1行都包含标题 (该 IDNameAddress等) 所以你不需要比较那些 (因为您的列在两个工作表中的顺序相同)。 我也会假设 ID (唯一标识符)在列中 A。 (如果不是,答案就变成了答案 有点复杂, 但还是相当容易。) 在细胞中 AZ2 (可用列,在用于数据的第一行中),输入

=B2&C2&D2&…&X2&Y2&Z2&AA2&AB2&AC3&…&AX2

列出所有细胞 B2 通过 AX2& 是文本连接运算符, 因此,如果 B2 包含 AndyC2 包含 New York, 然后 B2&C2 将评估为 AndyNew York。 同样,上面的公式将连接起来 所有 一行的数据 (不包括 ID ),给出一个看起来像这样的结果:

AndyNew York1342 Wall StreetInvestment BankerElizabeth2catcollege degreeUCLA…

键入的公式很长且很麻烦,但您只需要执行一次 (但在实际执行之前请参阅下面的注释)。 我展示了它 AX2 因为专栏 AX 是第50列。 当然,该公式应涵盖除以外的每个数据列 ID。 进一步来说, 它应该包括您要比较的每个数据列。 如果您有一个人的年龄列, 那么每年都会(自动?)对每个人都不同, 你不会希望报道。 当然还有辅助列,它包含串联公式, 应该位于最后一个数据列的右侧。

现在选择单元格 AZ2,并将其向下拖动/填充所有1000行。 并在两个工作表上执行此操作。

最后,在您希望突出显示更改的工作表上 (我想,根据你的说法,这是最近的表格), 选择要突出显示的所有单元格。 我不知道这是否只是专栏 A,或只是列 B, 或整行(即 A 通过 AX )。 在第2行到第1000行中选择这些单元格 (或您的数据最终可能到达的任何地方), 并进入“条件格式”→“NewRule ......”, 选择“使用公式确定要格式化的单元格”,然后输入

=IFERROR(VLOOKUP($A2,'December 2017'!$A$2:$AZ$1000,52,FALSE), "") <> $AZ2

进入“格式化该公式为真的值框”。 这需要 ID 当前行的值 当前(“January2018”)表(在单元格中) $A2 ) 在Column中搜索它 A 之前的(“December2017”)表, 从该行获取连接的数据值 并将其与此行上的连接数据值进行比较。 (当然 AZ 是辅助列, 52 是个 列号 辅助列的 和 1000 是“December2017”工作表中包含数据的最后一行 - 或稍高; 例如,你可以进入 1200 而不是担心确切。) 然后点击“格式” 并指定所需的条件格式(例如,橙色填充)。

我做了一个只有几行而且只有几个数据列的例子, 使用Column中的帮助列 H

previous month/year (December 2017) sheet

current month/year (January 2018) sheet, with changes highlighted in orange

观察安迪的行是橙色的, 因为他从纽约搬到洛杉矶 和黛布拉的行是橙色的,因为她是一个新的条目。

注意: 如果一行可能有像这样的值 thereact 连续两列, 这可能会在接下来的一年发生变化 thereact, 这不会被报告为差异, 因为我们只是比较连接值, 然后 ( thereact )两张纸都是一样的。 如果你担心这个, 选择一个不太可能存在于您的数据中的字符(例如, | ) 并将其插入字段之间。 所以你的助手列将包含

=B2&"|"&C2&"|"&D2&"|"&…&"|"&X2&"|"&Y2&"|"&Z2&"|"&AA2&"|"&AB2&"|"&AC3&"|"&…&"|"&AX2

导致数据看起来像这样:

Andy|New York|1342 Wall Street|Investment Banker|Elizabeth|2|cat|college degree|UCLA|…

并且将报告更改,因为 the|reactthere|act。 你可能应该关注这一点, 但是,根据你的列实际是什么, 你可能有理由相信这永远不会成为一个问题。

完成此操作后,您可以隐藏辅助列。


1

转到“视图”选项卡,然后单击“新窗口”。转到新窗口并单击并排。您可以通过单击“同步滚动”来同步滚动。检查附图: Excel sheets side by side

同步滚动为您提供了同时滚动不同工作表的优势。切换按钮将使您可以一起查看并仅滚动一个工作表。


我在每个电子表格中有超过1 000行... 50列..有些数据很难通过查看来比较(银行数据,电话号码,日期......)这样做太长了,并且存在风险错误/遗漏我将不得不每月这样做..没有更快的解决方案? :(
CILUEA

在同一视图中,您可以对列应用过滤器。在任一工作表上添加查找公式。
Cetza Nido

我不想对列应用过滤器...我有两个电子表格(一行=一名员工),我想高亮显示旧电子表格之间的每个员工的更改数据(地址,电话..)月)和新的电子表格(本月)我不能每个月手动完成..每个电子表格和50列超过1000行
CILUEA

您可以使用查找或索引+匹配公式以及条件格式。是否可以与一些样本数据共享您的工作表?
Cetza Nido

我用一个例子和更多解释编辑了我的帖子。谢谢!
CILUEA

1

好的,你可以做两件事之一。

1.- OOTB解决方案是转到“数据” - &gt;“数据工具” - &gt;“删除(这是西班牙语的直接翻译)重复”。通过这种方式,您必须附加两个表,并且最终只会得到已更改的数据,并且只有唯一的数据。所以过滤掉使用 CountIf 在你的独特性上,取消选择被算作的内容1.通过uniqueId排序,您将清楚地看到已经改变的内容。

2.-使用此公式

IF(Index("rangetoreturn";Match("CellofUniqueID";"Rangeofuniqueidtolookinto";0))<>"OneOftheCellthatcontainsthesameasRangeToReturn";"Info Has Changed";"InfoHasNotChanged")

这个公式可以向右和向下拖动。因此,您将获得一个包含if条件的表,其行数与“CellofUniqueID”表的行数相同。 “信息已更改”的位置将告诉您其他表中的哪个单元格已更改其内容。 因此,在新工作表中使用此公式并构建新表。然后查看过滤器并取消选择“InfoHasNotChanged”(或任何您想要使用的单词)。

“rangetoreturn”和“Rangeofuniqueidtolookinto”来自一个表(或表),“CellofUniqueID”来自另一个表。

干杯


谢谢 !第一个解决方案可能是最简单的一个,但它不起作用:(或者我可能不太了解?)选项“删除重复”将删除一些行,我想保留两个表中的所有行此外,我只在工作表上有一列具有唯一数据,其他所有列都有许多具有相同数据的行(例如,两个具有相同出生日期或相同年龄的人...)
CILUEA

选项2:什么是rangetoreturn / Rangeofuniqueidtolookinto / OneOftheCellthatcontainsthesameasRangeToReturn?
CILUEA

选项2的@CILUEA,“rangeofreturn”,这是您想要带回的信息范围。 “Rangeofuniqueidtolookinto”,这就是你将寻找独特身份的独特范围。 “OneOftheCellthatcontainsthesameasRangeToReturn”这是你将与你带回来的信息进行比较的信息,所以如果不同,它会告诉你。可悲的是,除非你知道一点VBA,否则没有任何舒服的答案。
dmb

选项1的@CILUEA,你必须从两个表创建一个新表。然后删除重复项。然后你也可以使用 CountIf 并且过滤2次,当你有1次发生意味着信息没有改变。最后,按您的唯一身份订购。同时在新列列中抛出一个标志,以便从您的表中了解您的信息来自何处。现在您可以清楚地看到差异是什么
dmb

@Scott“开箱即用”......在那里犯了错误应该是OOTB,抱歉英语不是我的第一语言。
dmb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.