我可以根据另一个内容过滤一个Excel表吗?

我有两个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| 

我可以使用Excelfunction吗? 或者,我可以用最less的代码来做到吗?

我想一个解决scheme是将表复制到同一个Excel实例上的单独工作表中,并使用公式列扩展两个表,创build公式列,每列检查其他表的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

您可以在Excel中打开这两个文件,并使用VLOOKUP检查值是否存在,并在其周围包含If(ISERROR()),并返回true或false。

如果如上所述,数据跨越列A,B和C,则可以使用以下公式(针对每个文件进行调整)。

 =IF(ISERROR(VLOOKUP(B1,<WorkbookToCheck>!B:B,1,False))=TRUE,"X","") 

如果ID不存在,WorkbookToCheck则公式将返回X,否则它将返回空白。