【发布时间】:2021-06-04 11:13:38
【问题描述】:
我是 VBA 新手,我的 VBA 代码被阻止。我正在尝试做的事情:在我的数据库中,在列 M:M 内,如果列 M:M 中的每个单元格包含“B1”,它会将工作表“数据库”中的行复制到另一个工作表(“工作”),在工作表(“分配”)上对单词“B1”进行过滤,并将过滤后的单元格从工作表(“分配”)复制到工作表(“工作”)
请找到我的代码:
Dim r As Range
Dim rw As Long, Cell As Range
For Each Cell In Sheets("Database").Range("M:M")
rw = Cell.Row
If UCase(Cell.Value) Like UCase("*B1*") Then
Cell.EntireRow.Copy
Sheets("Work").Select
Range("A1048576").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial xlPasteValues
Sheets("Alloc").Select
Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$H$10000").AutoFilter Field:=1, Criteria1:= _
"B1"
Set r = Sheets("Alloc").Range("B2")
Do While r.Value <> ""
Range("N1048576").End(xlUp).Offset(1, 0).Value = r.Value
Set r = r.Offset(1)
Loop
Set r = Sheets("Alloc").Range("C2")
Do While r.Value <> ""
Range("O1048576").End(xlUp).Offset(1, 0).Value = r.Value
Set r = r.Offset(1)
Loop
Set r = Sheets("Alloc").Range("D2")
Do While r.Value <> ""
Range("P1048576").End(xlUp).Offset(1, 0).Value = r.Value
Set r = r.Offset(1)
Loop
Set r = Sheets("Alloc").Range("E2")
Do While r.Value <> ""
Range("Q1048576").End(xlUp).Offset(1, 0).Value = r.Value
Set r = r.Offset(1)
Loop
Sheets("Alloc").Select
Rows("1:1").Select
Selection.AutoFilter
End If
Next
我的代码正在运行,唯一的问题是它的复制也是工作表(“alloc”)中的数据,这些数据也已归档 你知道我如何只将工作表(“Alloc”)中的过滤数据放入工作表(“work”)吗?
非常感谢您的帮助
【问题讨论】:
-
你已经成功了一半。首先过滤您的数据,然后而不是循环,只需复制可见单元格并一次性粘贴它们。此处无需循环
-
以this solution 为例。您可以在此站点上找到许多示例。这只是搜索“过滤和复制可见单元格”后弹出的第一个
-
它正在工作 :) 非常感谢