我有一个ID列表(大约140个),我想查询一个大的(50k +)电子表格。这不是一个简单的“项目是否存在于列表中”;我想查看存储在大电子表格中的详细信息。最简单的方法是手动使用ID中的过滤器和键,但ID的列表非常大,这一次输入140 ID是一个非常痛苦的过程。有没有办法可以使用高级过滤器或宏来帮助我过滤我想要的项目?
注意:我不想使用VBA,因为这需要花费很多时间。我已经了解到数据透视表是最好的解决方案。我想知道是否有任何公式或宏可以更容易地做到这一点。
答案 0 :(得分:2)
如果您希望使用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
注意: 以上内容仅适用于您的ID不是数字的情况,如果您的ID可以使用以下内容:
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")
更改为您查询所在的范围。
答案 1 :(得分:1)
实际上是的,你可以使用高级过滤器来做到这一点:
在示例F1中:F6包含可能的值(在您的情况下,包含140个值的范围)。标准范围是A8:C9,在C9中你只需写下公式:
=COUNTIF($F$1:$F$6;A13)>0
A13是包含数据范围中第一个ID的单元格。
你应该在高级过滤器中写这个:
不要忘记C9公式。