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

CIL*_*UEA 8 spreadsheet worksheet-function microsoft-excel

我想比较两个 Excel 电子表格

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

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

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

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

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

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

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

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

如您所见,两者都具有相同的列,但是:

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

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

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

Sco*_*ott 4

\xe2\x80\x99 您的电子表格使用 50 列会很方便,\n因为这意味着 #51、#52、\xe2\x80\xa6 列可用。\xc2\xa0\n您的问题很容易通过以下方法解决使用\xe2\x80\x9chelper列\xe2\x80\x9d,\n我们可以将其放入Column\xc2\xa0 AZ(即列\xc2\xa0#52)中。\xc2\xa0\nI\xe2\x80 \x99ll 假设每张工作表上的行\xc2\xa01 包含标题\n(单词\ xe2\x80\x82 IDNameAddress等)\n所以你\xe2\x80\x99t 不需要比较这些\n(因为您的列在两张表中的顺序相同)。\xc2\xa0\nI\xe2\x80\x99ll 还假设(ID唯一标识符)位于 Column\xc2\xa0 中A。\xc2\xa0\n(如果它是\xe2\x80\x99t,答案变得有点复杂,\n但仍然相当简单。)\xc2\xa0\n在单元格\xc2\xa0中AZ2(可用列,用于数据的第一行中),输入

\n\n
=B2&C2&D2&\xe2\x80\xa6&X2&Y2&Z2&AA2&AB2&AC3&\xe2\x80\xa6&AX2\n
Run Code Online (Sandbox Code Playgroud)\n\n

B2列出从\xc2\xa0到\xc2\xa0的所有单元格AX2。\xc2\xa0\n&是文本连接运算符,\n因此如果B2containsAndyC2contains New\xe2\x80\xafYork,则B2&C2计算结果为AndyNew\xe2\x80\xafYork。\xc2\xa0\n类似地,上面的公式将连接一行的所有数据\n(不包括ID),给出的结果可能如下所示:

\n\n
AndyNew\xe2\x80\xafYork1342\xe2\x80\xafWall\xe2\x80\xafStreetInvestment\xe2\x80\xafBankerElizabeth2catcollege\xe2\x80\xaf DegreeUCLA\xe2\x80\xa6
\n\n

该公式很长,输入起来很麻烦,但您只需执行一次\n(但在实际执行之前请参阅下面的注释)。\xc2\xa0\n我展示了它,因为AX2Column\xc2\xa0AX是列\xe2\x80\xaf#50.\xc2\xa0\n自然地,公式应该涵盖除ID。\xc2\xa0\n更具体地说,\nit 应包括要比较的每个数据列。\xc2\ xa0\n如果您有一个人\xe2\x80\x99年龄的列,\n那么每年每个人的年龄都会(自动?)不同,\n并且您\xe2\x80\x99不希望报告这一点。 \xc2\xa0\n当然,包含串联公式的辅助列\n应该位于最后一个数据列右侧的某个位置。

\n\n

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

\n\n

最后,在您想要突出显示更改的工作表上\n(我猜,根据您的说法,这是更新的工作表),\n选择您想要突出显示的所有单元格。\xc2\xa0\ n我不知道这是否只是 Column\xc2\xa0 A,或者只是 Column\xc2\xa0 B,\也不知道整个行(即,A通过 \xc2\xa0AX)。\xc2\xa0\n选择这些单元格在行\xc2\xa02到\xc2\xa01000\n(或数据最终可能到达的任何地方)上,\n然后进入\xe2\x80\x9c条件格式\xe2\x80\x9d\xe2\x86\x92\xe2\x80 \x9cNew\xe2\x80\xafRule\xe2\x80\xa6\xe2\x80\x9d,\n选择\xe2\x80\x9c使用公式确定要格式化的单元格\xe2\x80\x9d,然后输入

\n\n
=IFERROR(VLOOKUP($A2,\'December 2017\'!$A$2:$AZ$1000,52,FALSE), "") <> $AZ2\n
Run Code Online (Sandbox Code Playgroud)\n\n

进入 \xe2\x80\x9cFormat 值,其中该公式为 true 框\xe2\x80\x9d。\xc2\xa0\n这ID从当前行\n获取值 (\xe2\x80\x9cJanuary\xe2\x80 \xaf2018\xe2\x80\x9d) 工作表(在 cell\xc2\xa0 中$A2),\n在上一个A(\xe2\x80\x9cDecember\xe2\x80\xaf2017\xe2\x80\) 的 Column\xc2\xa0 中搜索它x9d) 工作表,\n获取该行的串联数据值\n并将其与该行上的串联数据值进行比较。\xc2\xa0\n(当然AZ是辅助列,\n52是辅助列的列号,\nand1000是 \xe2\x80\x9cDecember\xe2\x80\xaf2017\xe2\x80\x9d 工作表上的最后一行,其中包含数据\n\xe2\x80\x94 或更高;\ne.g,您可以输入1200而不用担心是否准确。)\xc2\xa0\n然后单击 \xe2\x80\x9cFormat\xe2\x80\x9d\n 并指定所需的条件格式(例如,橙色填充)。

\n\n

我做了一个只有几行和几个数据列的示例,\n其中的辅助列位于 Column\xc2\xa0 中H

\n\n

\xe2\x80\x83上月/上年(2017 年 12 月)表

\n\n

\xe2\x80\x83当月/当年(2018 年 1 月)工作表,其中更改以橙色突出显示

\n\n

观察到 Andy\xe2\x80\x99s 行的颜色为橙色,\n因为他从纽约搬到了洛杉矶,\nDebra\xe2\x80\x99s 的行颜色为橙色,因为她是新条目。

\n\n

注意: \xe2\x80\x82\n如果一行可能在两个连续列中具有类似于the和 的值react,\n这可能会在接下来的一年中更改为thereact,\n这不会被报告为差异,\n因为我们\xe2\ x80\x99 只是比较连接的值,\n并且 ( thereact) 在两张纸上是相同的。\xc2\xa0\n如果您\xe2\x80\x99 担心这​​一点,\n请选择一个不太可能出现在您的字符中的字符数据(例如|),\n并将其插入字段之间。\xc2\xa0\n因此您的辅助列将包含

\n\n
=B2&"|"&C2&"|"&D2&"|"&\xe2\x80\xa6&"|"&X2&"|"&Y2&"|"&Z2&"|"&AA2&"|"&AB2&"|"&AC3&"|"&\xe2\x80\xa6&"|"&AX2\n
Run Code Online (Sandbox Code Playgroud)\n\n

产生的数据可能如下所示:

\n\n
安迪|新\xe2\x80\xafYork|1342\xe2\x80\xafWall\xe2\x80\xafStreet|投资\xe2\x80\xafBanker|伊丽莎白|2|猫|学院\xe2\x80\xaf学位|加州大学洛杉矶分校|\xe2 \x80\xa6
\n\n

并且将报告更改,因为the|react\xe2\x80\xaf\xe2\x89\xa0\xe2\x80\xaf there|act。\xc2\xa0\n您可能应该担心这一点,\n但是,根据您的列的实际内容,\n您可能有理由相信这永远不会成为问题。

\n\n

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

\n