VBA如何将工作簿上的行复制到具有条件的其他行
我有一个包含所有原始数据的主工作簿。此字段的B列为空或包含文本“是” 我有另一个工作簿,它必须包含主工作簿中B列中包含“是”的所有行 每次宏运行时,我都需要清空第二个筛选工作簿,并检查第1行的主工作簿 如何使用VBA实现这一点 编辑1:这是我一直在编写的代码VBA如何将工作簿上的行复制到具有条件的其他行,vba,excel,macros,Vba,Excel,Macros,我有一个包含所有原始数据的主工作簿。此字段的B列为空或包含文本“是” 我有另一个工作簿,它必须包含主工作簿中B列中包含“是”的所有行 每次宏运行时,我都需要清空第二个筛选工作簿,并检查第1行的主工作簿 如何使用VBA实现这一点 编辑1:这是我一直在编写的代码 Sub filter() Dim LastRow As Integer, i As Integer, erow As Integer LastRow = ActiveSheet.Range(“A” & Rows.Count).E
Sub filter()
Dim LastRow As Integer, i As Integer, erow As Integer
LastRow = ActiveSheet.Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Cells(i, 1) = Date And Cells(i, 2) = “Yes” Then
Range(Cells(i, 1), Cells(i, 7)).Select
Selection.Copy
Workbooks.Open Filename:="C:\Users\212557423\Desktop\2.xls"
Worksheets(“Sheet1”).Select
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Cells(erow, 1).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
End If
Next i
End Sub
Edit2:经过进一步研究,我得到了以下代码:
Sub filter()
Dim strsearch As String, lastline As Integer, tocopy As Integer
lastline = Range("A65536").End(xlUp).Row
j = 1
For i = 1 To lastline
For Each c In Range("B" & i)
If InStr(c.Text, "ja") Then
Rows(i).Copy Destination:=Sheets(2).Rows(j)
j = j + 1
End If
Next c
Next i
End Sub
我现在的问题是,这个宏只能从一张图纸复制到另一张图纸。我需要的是“从属”工作簿从“主”工作簿中获取行
有人能帮忙吗?谢谢 edit:只需添加一条警告,即按照您的要求,在添加原始数据工作表中的当前筛选值之前,筛选工作簿始终为空 试试这个
Option Explicit
Sub main()
Dim rawDataSht As Worksheet, filtDataSht As Worksheet
Set rawDataSht = ActiveSheet
Workbooks.Open Filename:="C:\Users\212557423\Desktop\2.xls"
Set filtDataSht = ActiveWorkbook.Worksheets("Sheet1")
With rawDataSht
With .Range("A1:G" & .Cells(.Rows.Count, "A").End(xlUp).Row)
.AutoFilter field:=2, Criteria1:="YES"
If Application.WorksheetFunction.Subtotal(103, .Cells.Resize(, 1)) > 1 Then
filtDataSht.Cells.Clear
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeConstants).Copy
filtDataSht.Cells(1, 1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
Else
MsgBox "No data with ""YES"" in column B of sheet " & .Parent.name & " of workbook " & .Parent.Parent.name
End If
.AutoFilter
End With
End With
ActiveWorkbook.Close (True)
End Sub
这是一种稍微不同的完成任务的方法
With ActiveSheet
.AutoFilterMode = False
With Range("B1", Range("B" & Rows.Count).End(xlUp))
.AutoFilter Field:=1, Criteria1:=Array("YES"), Operator:=xlFilterValues
On Error Resume Next
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy
End With
Workbooks("C:\Users\212557423\Desktop\2.xls").Sheets("Sheet1").Cells(1, 1).PasteSpecial xlPasteValues
.AutoFilterMode = False
Application.CutCopyMode = False
End With
你试过什么?发布一些代码以及对您有效/无效的内容。。。。我们非常乐意为您提供指导,但不会为您编写代码。请先尝试一下,发布您所拥有的,我们可以帮助您修复它。首先用简单的步骤制定一个计划,例如1:打开masterWb和otherWb。2:在otherWb的B列中循环所有单元格,并检查masterWb中相应的单元格等。我用代码编辑了我的第一篇文章。谢谢谢谢看起来比我的解决方案好。但是我得到了错误1004,我不知道为什么…这一个:
。自动筛选字段:=2,标准1:=“是”
当启动宏时,包含原始数据的工作表实际上是“活动”的吗?是否有从“A”列到“G”列的数据?是的,包含原始数据的工作表处于活动状态,并且包含从A到G列的数据。我意识到,尽管我收到了该错误消息,但工作表上的数据将被过滤,所有不包含“是”的行都将被隐藏。工作表是否受到保护?