下面的宏将允许我在工作表1的标题中找到一个名称,并将整个列复制到工作表2.现在我想继续代码,但我遇到了一个问题,我将尝试解释。
Sub CopyColumnByTitle()
'Find "Name" in Row 1
With Sheets(1).Rows(1)
Set t = .Find("Name", lookat:=xlpart)
'If found, copy the column to Sheet 2, Column A
'If not found, present a message
If Not t Is Nothing Then
Columns(t.Column).EntireColumn.Copy _
Destination:=Sheets(2).Range("A1")
Else: MsgBox "Title Not Found"
End If
End With
End Sub
将所有数据粘贴到表2中,如下所示....
Sheet 2
Name Age Address Date of Birth
John 25 US 1-Sep-11
Hary 26 US 1-Sep-11
John 27 UK 1-Sep-11
Hary 28 US 2-Sep-11
King 29 UK 3-Sep-11
Peter 30 US 3-Sep-11
我需要设置过滤器,如下所示,并将过滤后的数据复制到第3页,如上所示:
Name
,并将整个数据复制并粘贴到表3中。Name
等于“John”且Date of Birth
等于“1-Sep-11”(注意日期应该始终是昨天)。复制并粘贴整个
数据到表4中。Name
等于“King”的过滤器,然后将整个数据复制到第5页。非常感谢John的回复,你给出的答复是有效的,但由于紧急要求,我已经设计了我的代码。
我需要一点帮助。我粘贴了部分代码,因为无法粘贴整个代码。
代码允许我将数据从一个工作簿复制到另一个工作簿,但在复制数据时,我需要复制整个列,因为其中有一些空白单元格。因此,如果我不使用.EntireColumn
,则宏不会在空白单元格之后复制单元格。现在,在将数据粘贴到其他工作簿时,我需要粘贴它而不使用标题。
如果你帮我解决这个问题,我将不胜感激。
Windows("macro2.xlsm").Activate
Range(Range("M2"), Range("N2").End(xlDown)).EntireColumn.Select
Application.CutCopyMode = False
Selection.Copy
Windows("formula.xls").Activate
Range(Range("I2"), Range("J2").End(xlDown)).EntireColumn.Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
答案 0 :(得分:2)
任务1:
thisworkbook.sheets(2).activate
activesheet.range("A:A").select 'set column you filter for probable names here
Selection.AutoFilter Field:=1, Criteria1:="=John", Operator:=xlOr, _
Criteria2:="=Hary" ' filters only for hary or john
activate.usedrange.select ' now select the filtered sheet to copy
selection.copy
ActiveSheet.ShowAllData ' now retain back the data so that you get your original file
thisworkbook.sheets(3).activate 'select your sheet3 and paste it
activate.range("A1").select
activesheet.paste
任务2:
thisworkbook.sheets(2).activate
activesheet.range("A:A").select \\'set column you filter for probable names here
Selection.AutoFilter Field:=1, Criteria1:="John" \\ filters for john
Selection.AutoFilter Field:=2, Criteria1:="1-sep-2011" \\ filters for date only for john rows
activate.usedrange.select ' now select the filtered sheet to copy
selection.copy
ActiveSheet.ShowAllData ' now retain back the data so that you get your original file
thisworkbook.sheets(4).activate 'select your sheet3 and paste it
activate.range("A1").select
activesheet.paste
任务3
thisworkbook.sheets(2).activate
activesheet.range("A:A").select 'set column you filter for probable names here
Selection.AutoFilter Field:=1, Criteria1:="=King" ' filters only king
activate.usedrange.select ' now select the filtered sheet to copy
selection.copy
ActiveSheet.ShowAllData ' now retain back the data so that you get your original file
thisworkbook.sheets(5).activate 'select your sheet3 and paste it
activate.range("A1").select
activesheet.paste
可能它可能会让你知道如何做到这一点。任何疑问都可以随意问我。
谢谢!你可能会去复制目的地:=还有很多方法可以做到。实际上我现在必须走了,所以我只是给你一个样品作品。