我有两个excel文件(实际上,它们是XML文件,但通常由我的用户在excel中打开)。它们只是一张桌子。 这些表有一个“ID”文本列。
我想让我的用户看到另一个文件中没有匹配行(基于ID列)的每个文件的行。 表1:
|Some words1| IdA | Some more words1|
|Some words2| IdB | Some more words2|
|Some words3| IdD | Some more words3|
表2:
|Some words4| IdC | Some more words4|
|Some words5| IdA | Some more words5|
|Some words6| IdB | Some more words6|
|Some words7| IdE | Some more words7|
由于IdA和IdB出现在两个表中,我希望忽略它们 因此,我想提取
Table1_Filtered:
|Some words3| IdD | Some more words3|
Table2_Filtered:
|Some words4| IdC | Some more words4|
|Some words7| IdE | Some more words7|
我可以只使用Excel功能吗? 或者,我可以用最少的代码来做吗?
我认为一种解决方案是将表复制到同一Excel实例上的单独工作表中,并使用公式列展开两个表,该列创建一个公式列,每列检查其他表的ID列以查找匹配的文本
Table1_WithFormulaColumn:
|Some words1| IdA | Some more words1|**True**
|Some words2| IdB | Some more words2|**True**
|Some words3| IdD | Some more words3|**False**
....之后,这是正常的excel过滤问题。我不是肯定VBA代码会是什么样的(我是C#),但我认为它是可以解决的。
还有其他方法吗?或者这是最好的方法,然后你能告诉我代码是什么吗?
我的用户正在使用Excel 2013
答案 0 :(得分:0)
您可以在Excel中打开这两个文件并使用VLOOKUP检查该值是否存在,在其周围包装一个If(ISERROR())并且您可以返回true或false。
如果上面的数据跨越A,B和C列,您可以使用以下公式(针对每个文件进行调整)。
=IF(ISERROR(VLOOKUP(B1,<WorkbookToCheck>!B:B,1,False))=TRUE,"X","")
如果ID不存在,则WorkbookToCheck然后公式将返回X,否则它将返回空白。