【问题标题】:Filter Data and copy the result from one workbook to another using VBA使用 VBA 过滤数据并将结果从一个工作簿复制到另一个工作簿
【发布时间】:2016-11-29 12:12:47
【问题描述】:

我有 2 个工作簿说工作簿 1 和工作簿 2。需要在工作簿 2 中放置一个过滤器,在 G 列中使用过滤器“INTDN”,并在工作簿 1 的“B”列中复制“O”列和“J”列和列“I”分别。

任何人都可以为此提供 VBA 代码吗?

工作簿和工作表名称可以是任何名称,具体取决于来源,但格式始终相同。

更多信息供您参考:-

工作簿 2 在第 12 行 G 列中放置一个过滤器:-“INTDN”

工作簿 1 将复制的数据从“O”列向下粘贴到单元格 B25。 将复制的数据从“J”列向下粘贴到单元格 I25。

然后我会将这个宏分配给我需要它工作的每个工作表。

我是 VBA 的新手。感谢您的帮助。

这是我可以写的:-

Sub CopyData()
'
' CopyData Macro
'

'
    Windows("Book1 (8).xlsx").Activate
    Range("A12").Select
    Selection.AutoFilter
    Range("G12").Select
    ActiveSheet.Range("$A$12:$AV$72").AutoFilter Field:=7, Criteria1:="INTDV"
    Range("O35").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("DebitNotes.xlsm").Activate
    ActiveSheet.Paste
    Range("I25").Select
    Windows("Book1 (8).xlsx").Activate
    Range("J35").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("J35:J72").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("DebitNotes.xlsm").Activate
    ActiveSheet.Paste
End Sub

【问题讨论】:

  • Stackoverflow 不是代码编写服务,您需要进行一些研究并尝试编写一些自己的代码。一旦您尝试过(可能会遇到困难或困惑,这很正常),您可以发布您的代码,其他人将更有可能提供帮助,因为这表明您已尝试自己解决问题。
  • 你应该可以录制一个宏给自己一个起点。
  • @JamesC。我修改了我的问题以添加代码。不知道这有多合乎逻辑。感谢您的投入。

标签: excel macros copy-paste vba


【解决方案1】:

此代码将从 sheet1 的 O 列复制值并复制到 sheet2 的 P 列的末尾。 我还将它设为通用,因此它可以用于任何列和工作表。

Sub Test()
    Call CopyColumn("Sheet1", "O", "Sheet2", "P") 
End Sub

Function CopyColumn(sourceSheetName As String, sourceColIndex As String, destSheetName As String, destColIndex As String)
    Dim lastRowSource As Integer: lastRowSource = Sheets(sourceSheetName).Cells(Rows.Count, sourceColIndex).End(xlUp).Row
    Dim lastRowDest As Integer: lastRowDest = Sheets(destSheetName).Cells(Rows.Count, destColIndex).End(xlUp).Row
    Sheets(sourceSheetName).Range(sourceColIndex & "1:" & sourceColIndex & lastRowSource).Copy Destination:=Sheets(destSheetName).Range(destColIndex & lastRowDest + 1)
End Function

【讨论】:

  • 谢谢,我已经发布了一个代码,如果你能看看它,将不胜感激。
【解决方案2】:

我有这个工作正常的最终代码。唯一的问题是我希望此代码适用于任何打开的工作簿>工作表。工作簿或工作表的名称可以是任何名称。它不在我的控制范围内。

Sub CopyPaste()
'
' CopyPaste Macro
'

'
    Range("H11").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("H12").Select
    Windows("Data1.xlsx").Activate
    Range("A12").Select
    Selection.AutoFilter
    Range("G12").Select
    ActiveSheet.Range("A12").AutoFilter Field:=7, Criteria1:="INTDV"
    Range("O35").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("DebitNotes.xlsm").Activate
    Range("B25").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("I25").Select
    Windows("Data1.xlsx").Activate
    Range("J35").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("DebitNotes.xlsm").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("I207").Select
    Selection.End(xlUp).Select
    Selection.End(xlUp).Select
    Selection.End(xlUp).Select
    Selection.ClearContents
    Range("I207").Select
    Columns("I:I").EntireColumn.AutoFit
    Columns("H:H").EntireColumn.AutoFit
    Range("I207").Select
End Sub

【讨论】:

    猜你喜欢
    • 2023-02-02
    • 2017-02-26
    • 1970-01-01
    • 2021-11-16
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    相关资源
    最近更新 更多