vba - VBA过滤剪切和粘贴
问题描述
一般来说,我是宏和 VBA 的新手。只是试图自动化一些可以节省我大量时间的过滤。我一直在尝试在 excel 中使用宏来选择数据,根据某些条件进行过滤(为了方便起见,我将其放在一个过滤器上)剪切,然后粘贴到新工作表中。我希望它也删除我从中剪切的空行。下面的代码只复制,不删除。
Sub filtertest()
Dim LastRow As Long
Sheets("Sheet1").Cells.Clear
Sheets("Sheet2").Activate
'Find the last row
LastRow = Range("A1").CurrentRegion.Rows.Count
'Select Table
Range("A1:K" & LastRow).Select
'Filter table
Selection.AutoFilter Field:=1, Criteria1:="51192"
'Copy/Paste
Selection.Copy
Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues
'Turn off autofilter
Selection.Autofilter
End Sub
我还尝试将其他一些代码组合在一起,以便将它们结合起来。但是,我不断收到有关对象的错误。不确定是因为“sub button_click()”还是我说的我对此不熟悉。任何帮助表示赞赏。谢谢!
Sub Button1_Click()
Application.ScreenUpdating = False
Columns(1).AutoFilter 1, "51192"
With Range("a1", Range("i" & Rows.Count).End(3))
.Copy FalsePositives.Cells(Rows.Count, 1).End(3).Offset(1)
.EntireRow.Delete
End With
Columns(1).AutoFilter
Application.ScreenUpdating = True
End Sub
解决方案
复制并粘贴值,然后返回并删除原始值,跳过标题。
Sub filtertest()
Dim LastRow As Long
Worksheets("Sheet1").Cells.Clear
With Worksheets("Sheet2")
'Find the last row
LastRow = .Range("A1").CurrentRegion.Rows.Count
'Filter table
.Range("A1:K" & LastRow).AutoFilter Field:=1, Criteria1:="51192"
'Copy/Paste
.Range("A1:K" & LastRow).SpecialCells(xlCellTypeVisible).Copy
Worksheets("Sheet1").Range("A1").PasteSpecial xlPasteValues
'remove originals
.Range("A1:K" & LastRow).Offset(1, 0).EntireRow.Delete
'Turn off autofilter
.AutoFilterMode = False
End With
End Sub
推荐阅读
- c# - 使用在 EC2 上运行的 c# 控制台应用程序连接到雪花的问题
- java - Java Spring 依赖注入创建了两个 bean,而应该只有一个
- html - 当我尝试将亚马逊链接嵌入 iframe 时,拒绝连接错误
- r - 使用 R 中的 dplyr 将数据框中的某些行替换为其他新数据框
- excel - vlookup 有问题
- python - 我怎样才能知道这个等式是否有效?
- shell - 将 tcsh 中的变量设置为包含引号和方括号的值
- java - java.lang.UnsupportedClassVersionError: io/github/spencerpark/ijava/IJava 已由 Java 运行时的更新版本编译
- docker - 启动nginx docker容器时如何替换文件的内容
- python - 包含 MEDIA_ROOT 设置时找不到 Django 管理页面