如何过滤列表与另一个列表的内容?

我有一个ID(约140)的列表,我想查询一个大的(50k +)电子表格。 这不是一个简单的“项目是否存在于名单上”; 我想查看大电子表格中存储的详细信息。 最简单的方法是手动使用filter和密钥,但是ID列表非常大,这将是一个非常痛苦的过程,一次input140个ID。 有没有一种方法可以使用高级filter或macros来帮助我过滤我想要的物品?

注意:我不想使用VBA,因为这需要花费很多时间。 我从那以后就知道了数据透视表是最好的解决scheme。 我想知道是否有任何公式或macros可以更容易地做到这一点。

如果您希望使用VBA而不添加列,则可以使用以下内容:

Sub Filter() Dim Criteria As Variant Criteria = Worksheets("Sheet1").Range("A1:A140") Worksheets("Sheet2").Range("$A$1:$B$10").AutoFilter Field:=1, Criteria1:=Criteria, Operator:=xlFilterValues End Sub 

注意:以上只有在你的身份证号码不是数字的情况下才有效,如果你可以使用以下的话:

 Sub Filter2() Dim tempCriteria As Variant Dim i As Long Dim Criteria() As String tempCriteria = Worksheets("Sheet1").Range("A1:A140") ReDim Criteria(1 To UBound(tempCriteria)) For i = 1 To UBound(tempCriteria) Criteria(i) = CStr(tempCriteria(i, 1)) Next Worksheets("Sheet2").Range("$A$1:$B$10").AutoFilter Field:=1, Criteria1:=Criteria, Operator:=xlFilterValues End Sub 

在上面的代码中,将Worksheets("Sheet1").Range("A1:A140")更改为保存您的140 ID和Worksheets("Sheet2").Range("$A$1:$B$10")您查询的范围在。

其实是的,你可以使用高级filter来做到这一点:

在这里输入图像说明

在例子中F1:F6包含可能的值(在你的情况下,包含140个值的范围)。 标准范围是A8:C9,在C9中您只需编写公式:

 =COUNTIF($F$1:$F$6;A13)>0 

A13是在您的数据范围内包含您的第一个ID的单元格。

你应该写在高级filter:

在这里输入图像说明

不要忘了C9公式。