gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:15:41 26 4
gpt4 key购买 nike

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

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

  • 我想复制 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/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com