该宏尝试一次为一个条件(PE,AR,DC,FI)过滤工作表“ Temp”,然后将包含非重复数据的列5复制到另一工作表“ Detail”中。请帮助我理解两个问题。 (1)宏会为4个条件中的每一个进行正确的过滤。但是,每个标准的过滤列表始终包含第一个标准“ PE”的过滤列表中的第一项。即条件2“ AR”的过滤列表包含AR中的所有项目,但以“ PE”中的第一项开始。有一个标题行,但似乎没有什么不同。在过滤“ PE”(属于它)时,如何在所有情况下都摆脱掉第一项? (2)我希望能够计算和存储每个过滤列表的可见行数。我希望能够从单元格A4开始将每个过滤的列表粘贴到另一个电子表格(“详细信息”)中。每个连续的列表应从刚粘贴的列表下方开始两行。例如,如果第一个列表包含16个项目,则下一个列表应在单元格A22(A4 + 16 + 2)中开始。由于某种原因,复制行(用于记住已过滤列表中的行数)在第一次(= 16)左右是正确的,但是在第二次(= 1?)时是正确的。看来q的1和2是相关的。也许,如果我找出了#1,就可以对#2有所作为。我查看了有关自动过滤的现有帖子,但在这里仍然感到有些困惑。非常感谢您的帮助!
Sub FilterCategories()
Dim LastRow As Long
Dim startpos As Integer
Dim k As Integer
Dim copiedrows(1 To 4) As Long
Dim AG(1 To 4) As String
Dim rng As Range
AG(1) = "PE"
AG(2) = "AR"
AG(3) = "DC"
AG(4) = "FI"
'Autofilter based on each AG and copy over to 'Detail'. Create temporary
sheet for filtering.
startpos = 4
For k = LBound(AG) To UBound(AG)
Application.DisplayAlerts = False
On Error Resume Next
Sheets("Temp").Delete
Sheets("Lookup").AutoFilterMode = False
Sheets("Lookup").Copy After:=Sheets("Lookup")
ActiveSheet.Name = "Temp"
With Sheets("Temp")
AutoFilterMode = False
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
With .Range("A2:E" & LastRow)
.AutoFilter Field:=4, Criteria1:=AG(k)
.RemoveDuplicates Columns:=5
.Columns(5).SpecialCells(xlCellTypeVisible).Copy
Destination:=Sheets("Detail").Range("A" & startpos)
copiedrows(k) = .SpecialCells(xlCellTypeVisible).Rows.Count
Debug.Print copiedrows(k)
startpos = copiedrows(k) + 6
Debug.Print startpos
End With
End With
Next
End Sub