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

时间:2016-05-13 12:30:21

标签: excel excel-vba vba

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

1 个答案:

答案 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,否则它将返回空白。