我正在尝试编写一个程序,我必须首先将过滤器应用到具有 6 个可能过滤器值(1、2、3、4、5、6)的 S 列。应用过滤器后,我必须复制 T 列中最后使用的单元格并将其粘贴到 V 列中下一个可用(空白)可见单元格中,过滤器仍处于打开状态。成功粘贴值后,如果我要再次为相同的值应用过滤器,它应该通过找到下一个可用的可见空白单元格列 V 并粘贴复制的数据来重复相同的操作。
循环应该继续工作,对于下一个实例,根据我可能对列中的值 2 应用过滤器的条件,我必须复制最后使用的列 T 数据并使用过滤器粘贴到 V 列中下一个可用的可见单元格仍在进行中。
我尝试了许多可能性,例如 End(xlUp) 它仅在从 T 列复制值之前有效,并且我也无法将其粘贴到 VI 列尝试使用 Application.SendKeys 方法。它并不总是有效。
我粘贴在下面的以下代码,我尝试使用 End(xlup) 复制列 T 中最后使用的单元格的值,这一直有效,问题在于在列中找到正确的下一个可用可见单元格V 粘贴相同,有时它可以工作,有时它粘贴在隐藏的行中
Sub auto_filter2()
Dim ws As Worksheet
Dim ds As Worksheet
Dim SrcLastRow As Long, DestLastRow As Long
Set ws = Worksheets("PVF")
Set ds = Worksheets("Filtered")
Worksheets("PVF").Range("T4").AutoFilter Field:=19, Criteria1:="2"
MsgBox "Its Working"
Sheets("PVF").Select
SrcLastRow = Cells(Rows.Count, "T").End(xlUp).Row
Range("T" & SrcLastRow).Select
Selection.Copy
MsgBox SrcLastRow & " is the row"
Sheets("PVF").Select
Range("V5").End(xlDown).Select
Application.SendKeys "{DOWN}"
Application.SendKeys ("^v{Enter}")
ws.AutoFilterMode = False
End Sub
Sub auto_filter()
Dim ws As Worksheet
Dim ds As Worksheet
Dim SrcLastRow As Long, DestLastRow As Long
Set ws = Worksheets("PVF")
Set ds = Worksheets("Filtered")
Worksheets("PVF").Range("T4").AutoFilter Field:=19, Criteria1:="4"
MsgBox "Its Working"
Sheets("PVF").Select
SrcLastRow = Cells(Rows.Count, "T").End(xlUp).Row
Range("T" & SrcLastRow).Select
Selection.Copy
MsgBox SrcLastRow & " is the row"
Sheets("Filtered").Select
DestLastRow = Cells(Rows.Count, "C").End(xlUp).Row
Range("C" & DestLastRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Dim cel As Range
With Sheets("PVF")
Set cel = .AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible)(1, 1)
If cel = "" Then
.Cells(cel.Row, "V") = Sheets("Filtered").Range("C3")
Else
MsgBox (" Non- empty box")
End If
End With
ws.AutoFilterMode = False
End Sub
我希望尽快解决这个问题。非常感谢您提前提供的解决方案。