vba - 使用 VBA 将动态范围复制并粘贴到 Excel 中的新工作表

标签 vba excel

我是宏写作新手,我需要一些帮助。

我有一张纸,需要复制列并重新排序以粘贴到软件程序中。

  • 我想复制 A2 - A 列中的最后一个数据条目并将其粘贴到 Sheet2
  • 上的 A1 中
  • 我想复制 B2 - A 列中的最后一个数据条目并将其粘贴到 Sheet2
  • 上的 K1 中
  • 我想复制 C2 - A 列中的最后一个数据条目并将其粘贴到 Sheet2
  • 上的 C1 中
  • 我想复制 D2 - A 列中的最后一个数据条目并将其粘贴到 Sheet2
  • 上的 D1 中
  • 然后从表 2 中,我想复制 A1:KXXXX(到 A 列中的最后一个条目)并将其保存在剪贴板上以粘贴到其他应用程序

  • 这是我的代码,我试过了......(我知道这只是为了复制 A 列,但我被困在那里。)
    Sub Copy()
        aLastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        Range("A2" & aLastRow).Select
        Selection.Copy
        Sheets("Sheet2").Select
        Range("A1").Select
        ActiveSheet.Paste
    End Sub
    

    非常感谢你的帮助!
    杰斯

    最佳答案

    试试这个。鉴于您说粘贴代码有错误,而我仍在使用它,我认为您仍然会有错误。发布错误消息。希望我们能弄清楚这一点。

    Sub copyStuff()
        Dim wsIn As Worksheet
        Set wsIn = Application.Worksheets("Sheet1")
    
        Dim endRow As Long
        wsIn.Activate
        endRow = wsIn.Cells(wsIn.Rows.Count, "A").End(xlUp).Row
    
        Dim r As Range
        Dim wsOut As Worksheet
        Set wsOut = Application.Worksheets("Sheet2")
    
        ' column a to column a
        Set r = wsIn.Range(Cells(2, 1), Cells(endRow, 1))
        r.Copy
        wsOut.Range("A1").PasteSpecial xlPasteAll
    
        ' column b to column k
        Set r = wsIn.Range(Cells(2, 2), Cells(endRow, 2))
        r.Copy
        wsOut.Range("K1").PasteSpecial xlPasteAll
    
        ' column c to column c
        Set r = wsIn.Range(Cells(2, 3), Cells(endRow, 3))
        r.Copy
        wsOut.Range("C1").PasteSpecial xlPasteAll
    
        ' column d to column d
        Set r = wsIn.Range(Cells(2, 4), Cells(endRow, 4))
        r.Copy
        wsOut.Range("D1").PasteSpecial xlPasteAll
    
        ' Copy data from sheet 2 into clipboard
        wsOut.Activate
        Set r = wsOut.Range(Cells(1, 1), Cells(endRow - 1, 11))
        r.Copy
    
    End Sub
    

    我的原始答案在下面。你可以无视。

    这应该实现您的第一个目标:
    Sub copyStuff()
        Dim wsIn As Worksheet
        Set wsIn = Application.Worksheets("Sheet1")
    
        Dim endRow As Long
        endRow = wsIn.Cells(wsIn.Rows.Count, "A").End(xlUp).Row
    
        Dim r As range
        Set r = wsIn.range(Cells(2, 1), Cells(endRow, 4))
        r.Copy
    
        Dim wsOut As Worksheet
        Set wsOut = Application.Worksheets("Sheet2")
    
        wsOut.range("A1").PasteSpecial xlPasteAll
    
    End Sub
    

    我一次复制了所有 4 列,因为这样会快得多,但它假设列的长度相同。如果不是这样,您将需要一次复制一个。

    数据应位于宏末尾的剪贴板中。

    编辑:我删除了“wsIn.Activate”,因为它并不是真正需要的。
    编辑2:哎呀!我刚刚注意到你想要不同列中的输出。我会努力的。

    关于vba - 使用 VBA 将动态范围复制并粘贴到 Excel 中的新工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420280/

    相关文章:

    javascript - 解析 Excel 工作簿并获取 JavaScript 或 Angular 中的复选框值

    excel - 使用 VBA 将 Excel 复选框链接到另一个工作表中的单元格

    html - VBA 从 HTML 中获取数字

    vba - 根据范围内的值填充单元格

    macos - 编译错误 : searching for one specific data point, 循环遍历整个工作簿,复制/粘贴数据

    python - 我的工作簿在哪里弹出?

    excel - 当我使用宏进行排序时,所有引用都变为#REF

    javascript - 分区 :hover works oddly in IE-8

    excel - 查找并突出显示一系列单元格中的特定单词

    vba - 使用 vbTextCompare 时 StrComp 出现意外结果