【问题标题】:compare two excel sheet and print the difference?比较两个excel表并打印差异?
【发布时间】:2019-05-15 10:43:45
【问题描述】:

我有两张 Excel 表格(表格 A 和表格 B),我需要将表格 A 中的一列与表格 B 进行比较并打印差异。

工作表A

Account Number  |    Status
----------------|-------------
876251251       |    Not Active
716126181       |    Not Active
888281211       |    Not Active
666615211       |    Not Active
787878787       |    Not Active
111212134       |    Not Active

工作表B

Customer Number 
----------------
876251251
716126181
792342108
792332668
666615211
760332429
791952441
676702288

我需要将“帐号”与“客户编号”进行比较。

  • sheetA 中的所有帐号都应该出现在 sheetB 的客户编号中,如果 sheetB 缺少任何“帐号”,那么我们应该打印出这些信息。
  • 还有sheetB 中所有那些在sheetA 帐号中不存在的额外客户编号,我也想打印出来。

我正在阅读有关 awk 的信息,我认为我们可以使用 awk 但不明白该怎么做?

$ awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' sheetB sheetA

输出应该是:

Account Number:
888281211
787878787
111212134

CustomerNumber:
792342108
792332668
760332429
791952441
676702288

【问题讨论】:

  • 您的预期结果是什么?可以发帖吗?
  • 答案不够,但我的 2 美分: 1. 现代 Excel 文件格式,后缀为 .xlsx,是基于 xml 的,因此可以使用 xml_grep 之类的工具进行解析。要获得更复杂的结果,您可能需要使用 Perl 或其他带有 XML 插件的脚本语言。 2. 如果你能得到一个 CSV 输出,你可能能够使用传统的 *nix 工具 awk、sed 和 bash 来解析它。
  • @Kalanidhi 用输出更新了我的问题
  • "比较两个 Excel 工作表" - 您不能对 Excel .xls 文件使用文本处理(您必须先将它们转储为文本或 .csv)Excel 文件格式比你在屏幕上看到的要多得多。 (尝试在记事本中打开 excel 文件,看看里面有什么——哎哟!)
  • 此问题的标记已关闭。它与所有给定的标签类别无关。

标签: linux shell perl text-processing


【解决方案1】:

VlookUp 将适用于这种匹配。

=VLOOKUP(A2,B2:B9,1,FALSE)

将“AccountNumber”列中的数字与“customer number”匹配并生成第 1 列的匹配数字。过滤掉 N/A(不匹配),您将获得所有与第 1 列不匹配的数字。

适用于不同的工作表

=VLOOKUP(A2,Sheet1!$A$2:$A$7,1,FALSE)

考虑到 sheet 1 是 ACnumbers,而 sheet2 有 Custnumber

【讨论】:

  • 在我的情况下,我有两个不同的 Excel 表(不在一张表中)。您的建议是否适用于两个不同的 Excel 表?
  • 是的,它会起作用,在选择 B2 时,从其他工作表中选择它。
  • =VLOOKUP(A2,Sheet1!$A$2:$A$7,1,FALSE) 考虑到 sheet 1 是 ACnumbers 而 sheet2 有 Custnumber
  • 我的两张表(sheet1 和 sheet2)都有很多列,但“AccountNumber”是 sheet1 中的第一列,而“Customer Number”始终是 sheet2 中的第一列。所以考虑到我有你描述的 seet1 和 sheet2,我应该在其中运行上述公式=VLOOKUP(A2,Sheet1!$A$2:$A$7,1,FALSE)。我对 vlookup 比较陌生,所以试图理解这一点..
  • @falsh 我采取了同样的做法,我试图在客户编号列旁边的 sheet2 中填充结果,因此选择 A2 这是“CustomerNumber”第一个值,然后选择 Shee11“AccountNumber”列所有项目从 A2 到 A7,1 表示列的索引,False 表示完全匹配。希望你明白了。它按您的预期工作。
猜你喜欢
  • 2019-08-03
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多