用于比较/对比两个单独的Excel文件的脚本 - 两者的导出差异

时间:2016-10-26 13:20:19

标签: excel excel-vba vbscript powershell-v2.0 powershell-v3.0 vba

所以,今天我把一个任务放在我的桌子上,我似乎无法使这个脚本正常工作以完成所述任务。我的老板给了我两个单独的.xlsx文件,两个文件都有一个名单。她要求我找到并列出哪些名称出现在两个excel文件中,并且还查找并列出哪些名称不会单独出现在每个文件上。

例如

  • FileA有Henry和Terry
  • FileB有Henry和Samantha
  • 生成FileC以显示Henry出现在FileA和FileB
  • 生成FileD以显示Terry出现在FileA上但不出现在FileB
  • 生成FileE以显示Samantha出现在FileB上但不出现在FileA

我开始尝试完成拉动比较列表的第一部分,但我已经无法使其工作了。它完成了,但它没有正确的输出。所有用户都列在A列的两个xlsx文件中。

$strReference = Get-Content "C:\Users\person\Desktop\FileA.xlsx"
$strDifference = Get-Content "C:\Users\person\Desktop\FileB.xlsx"
Compare-Object $strReference $strDifference

2 个答案:

答案 0 :(得分:1)

将名称从File1复制并粘贴到新文件的A列中可能会更快,然后将文件2中的名称粘贴到File3的B列中...然后在列中文件3的C你可以做= MATCH(B1,A:A,0)和文件3的D列只做= MATCH(A1,B:B,0)...返回值的单元格意味着你有一个匹配并且给出错误的单元格没有匹配项。我不认为你需要VBA ......那会有用吗?

答案 1 :(得分:1)

说实话,这是我甚至不值得编写脚本的任务。相反,在Excel工作表中的每个文件上使用= COUNTIF()函数来检查每个名称是否出现在另一个文件中似乎更简单。

所以你最终得到的是每个文件中的人员列表= COUNTIF(其他工作表中的列表,人名)= 1.这是两个文件之间通用的人员列表。你也有一些相同的COUNTIF = 0,这些是你唯一的条目。

当然,对于名称,您必须小心它们的格式相同,但无论您是在VBA还是在工作表中执行此操作,都是一样的。

使用COUNTIF还有额外的好处,你会发现工作表中的任何重复项(虽然你会在另一个工作表中发现它的名称),如果这也是一个潜在的问题。