我有一個關於在Excel中過濾行的問題。在Excel中按數值過濾
我有一張大桌子,有超過10 000行。每一行都有獨特的ID
。 我複製了我的表格,並對某些行進行了修改並突出顯示了它們。
我需要根據唯一的ID
值的數組選擇行。 (ID
字段如下所示:1, 2, 3, 4, 5,.., 10500
)構成第一個Excel表的未修改副本。
我有一個關於在Excel中過濾行的問題。在Excel中按數值過濾
我有一張大桌子,有超過10 000行。每一行都有獨特的ID
。 我複製了我的表格,並對某些行進行了修改並突出顯示了它們。
我需要根據唯一的ID
值的數組選擇行。 (ID
字段如下所示:1, 2, 3, 4, 5,.., 10500
)構成第一個Excel表的未修改副本。
排序我將使用以下示例數據進行演示。
的主要爲藍色表A1:D16是一個命名myTable的的ListObject。 F3:I13中的主要綠色表是名爲MyTable_Copy的ListObject。
要過濾基於在的ID列中找到myTable_Copy的ID的所述myTable的的ListObject,我們需要構造ID號作爲一個字符串數組。可以使用一個函數。請記住,過濾器需要一個看起來像整數的字符串數組,而不是真正的整數。如果你有像前導零這樣的特殊數字格式,該功能將不得不改變以適應這種情況。
點擊Alt鍵 + F11和VBE打開時,立即使用下拉菜單插入►模塊(Alt鍵 + 我,中號)。將以下內容粘貼到名爲Book1 - Module1(Code)的新模塊代碼表中。
Function gather_IDs(sTBL As String, sCOL As String)
Dim aIDs() As String, i As Long, id As Range
For Each id In Range(sTBL & "[" & sCOL & "]")
ReDim Preserve aIDs(0 To i)
aIDs(i) = CStr(id.Value2)
i = i + 1
Next id
gather_IDs = aIDs
End Function
現在我們需要一個子調用該函數並根據返回的數組上過濾myTable的。在同一個模塊表中,粘貼以下內容。
Sub main()
Dim vIDs As Variant
vIDs = gather_IDs("myTable_Copy", "ID")
With ActiveSheet
.ListObjects("myTable").Range.AutoFilter Field:=1, Criteria1:=(vIDs), _
Operator:=xlFilterValues
End With
End Sub
請注意,傳入Criteria1
參數的變量數組包含在括號中。 括號非常重要。如果沒有它們,則.AutoFilter
命令不會將變量數組識別爲數組,而只會將數組中的第一個值用作過濾條件。
點擊Alt鍵 + Q返回到您的工作表,然後Alt鍵 + F8打開宏對話和運行的主要宏。您應該收到類似於以下的結果。
如果我理解正確,您希望能夠輕鬆查看/訪問修改過的行嗎?
您可以添加一個單獨的列,在修改後的行上添加一個值,然後按該列對整個表進行排序。您可以在表格頂部或底部找到修改的條目。
只要您不再需要這些信息,請清除此新列並根據ID使用表格(如有必要)。變體:留下此列並增加編輯時插入的值,以便您可以按
我需要使用值的數組從我的文檔的副本選擇行。我會修改這個問題。 – Litwos
非常感謝,這解決了它! :) – Litwos