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

用于比较/对比两个单独Excel文件的脚本-导出两者的差异,excel,vbscript,powershell-2.0,powershell-3.0,vba,Excel,Vbscript,Powershell 2.0,Powershell 3.0,Vba,所以,今天我的桌子上有一个任务,我似乎无法让这个脚本正常工作来完成这个任务。我的老板给了我两个单独的.xlsx文件,上面都有一个名字列表。她要求我查找并列出两个excel文件中出现的名称,同时查找并列出每个文件中没有出现的名称 比如说 菲利亚有亨利和特里 菲利布有亨利和萨曼莎 生成FileC以显示Henry同时出现在FileA和FileB上 生成文件以显示Terry出现在文件A上而不是文件B上 生成文件E以显示Samantha出现在文件B上而不是文件A上 我开始尝试拉一个比较列表的第一部分,

所以,今天我的桌子上有一个任务,我似乎无法让这个脚本正常工作来完成这个任务。我的老板给了我两个单独的.xlsx文件,上面都有一个名字列表。她要求我查找并列出两个excel文件中出现的名称,同时查找并列出每个文件中没有出现的名称

比如说

  • 菲利亚有亨利和特里
  • 菲利布有亨利和萨曼莎
  • 生成FileC以显示Henry同时出现在FileA和FileB上
  • 生成文件以显示Terry出现在文件A上而不是文件B上
  • 生成文件E以显示Samantha出现在文件B上而不是文件A上
我开始尝试拉一个比较列表的第一部分,但我已经无法让这个工作。它完成了,但输出不正确。所有用户都列在A列的两个xlsx文件中

$strReference=获取内容“C:\Users\person\Desktop\FileA.xlsx”
$strDifference=获取内容“C:\Users\person\Desktop\FileB.xlsx”
比较对象$strReference$strDifference

只需将文件1中的名称复制并粘贴到新文件“文件3”的A列中,并将文件2中的名称粘贴到文件3的B列中,可能会更快…然后在文件3的C列中,您可以只执行=匹配(B1,A:A,0)和文件3的D列中执行=匹配(A1,B:B,0)…返回值的单元格表示您有匹配项,而给出错误的单元格没有匹配项。我认为您不需要VBA来完成这项工作……这样行吗?

只需将文件1中的名称复制并粘贴到新文件“File3”的A列,然后将文件2中的名称粘贴到文件3的B列……然后在文件3的C列中只需执行=匹配(B1,A:A,0),在文件3的d列中执行=匹配(A1,B:B,0)即可…返回值的单元格表示您有匹配项,而给出错误的单元格没有匹配项。我认为你不需要VBA来做这个……这样行吗?

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

因此,您将得到每个文件中的人员列表,其中=COUNTIF(其他工作表中的列表,人员名称)=1。这是两个文件共用的人员列表。在相同的COUNTIF=0的情况下,也会有很多这样的条目,它们是您唯一的条目

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


使用CONTIF也有额外的好处,你会发现工作表中的任何重复(虽然你会发现它与那个名字,在另一个工作表中),这是否也是一个潜在的问题。

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

因此,您将得到每个文件中的人员列表,其中=COUNTIF(其他工作表中的列表,人员名称)=1。这是两个文件共用的人员列表。在相同的COUNTIF=0的情况下,也会有很多这样的条目,它们是您唯一的条目

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


使用COUNTIF还有一个额外的好处,即您可以在工作表中发现任何重复项(尽管您会在另一个工作表中根据该名称发现重复项),如果这也是一个潜在问题。

Get Content
用于阅读文本文件。Excel工作簿不是文本文件。
Get Content
用于读取文本文件。Excel工作簿不是文本文件。我来试一试。非常感谢你!我来试一试。非常感谢你!这听起来确实容易多了,我来试一试!非常感谢。这听起来确实容易多了,我来试一试!非常感谢你。