2014-03-03 126 views
2

我有一個ID(約140)的列表,我想查詢一個大的(50k +)電子表格。這不是一個簡單的「項目是否存在於名單上」;我想查看存儲在大電子表格中的詳細信息。最簡單的方法是手動使用ID中的過濾器和密鑰,但是ID列表非常大,這將是一個非常痛苦的過程,一次輸入140個ID。有沒有一種方法可以使用高級過濾器或宏來幫助我過濾我想要的物品?如何用另一個列表的內容過濾列表?

注意:我不想使用VBA,因爲這需要相當多的時間。從那以後,我瞭解到樞軸表是最好的解決方案。我想知道是否有任何公式或宏可以更容易地做到這一點。

+0

您是否只列出了ids數字? – user2140261

+0

我的ID是字母數字。 –

+0

在這種情況下,我的答案(第3行)中的第一個代碼就是您所需要的。 – user2140261

回答

1

其實是的,你可以使用高級過濾器來做到這一點:

enter image description here

在這個例子F1:F6包含的可能值(在你的情況下,包含140個值的範圍內)。該標準範圍是A8:C9和C9你只寫公式:

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

A13是包含在數據範圍內的第一個ID的小區。

你應該在高級篩選這樣寫:

enter image description here

不要忘了C9公式。

+0

你能詳細說明一下嗎?我如何獲得高級過濾器來處理您的答案? –

+0

我只是編輯我的答案... – CRondao

+0

我看到...雖然我不是在尋找什麼,但我希望它顯示a,b,c,d,e,f的Vals。但在我的情況下,大約有20列vals! –

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唯一沒有數字,如果他們是以上才起作用您可以使用以下命令:

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米的範圍,並Worksheets("Sheet2").Range("$A$1:$B$10")到您選擇查詢範圍英寸

相關問題