首页 文章

Excel宏分别复制x行数

提问于
浏览
-3

我想创建一个excel宏,允许我复制某些列的x行 . 例如,我有10.5行的列K.我想每次复制1000行,最后还要复制500行 . 有什么帮助编码部分?我查看了很多网站但没有成功 . 我不需要将复制的数字粘贴到任何其他Excel工作表中 . 我只需要宏命令每次从我选择的列复制1000行 . 非常感谢youuuuu非常感谢!干杯

2 回答

  • 1
    • 选择一列并从“宏”对话框(Alt F8)运行子过程 . 前1000个单元格将被复制到剪贴板 .

    • 将数据粘贴到另一个程序中 .

    • 返回Excel并再次运行子过程 . 接下来的1000行数据将被复制到剪贴板 .

    • 将最后一组数据复制到剪贴板后,将显示一个消息框 .

    Option Explicit
    
    Sub progressiveCopy()
        Dim m As Long
        Static i As Long, k As Long
    
        Application.CutCopyMode = False
        m = 1000
    
        If k <> ActiveCell.Column Then
            k = ActiveCell.Column
            i = 0
        End If
    
        With Worksheets("sheet1")
            m = Application.Min(m, .Cells(.Rows.Count, k).End(xlUp).Row - i)
            .Cells(i + 1, k).Resize(m, 1).Copy
            i = i + m
            If i >= .Cells(.Rows.Count, k).End(xlUp).Row Then
                MsgBox "This column is complete. Select another column next time."
            End If
        End With
    End Sub
    

    您可能希望在“宏”对话框中为子过程设置热键组合,以简化重复操作 .

  • 0

    此代码查找当前所选列中的行数 . 检查要复制的数字是否小于剩余的行数 . 选择范围并将范围置于复印模式 . 复制范围后,您必须转到它们的工作表,文档或其他任何粘贴数据 .

    我已经修改了代码,然后选择了1000行或列中剩下的内容 . 因此,您应该能够运行代码,粘贴数据,运行代码,粘贴数据 . 当您结束时,会显示一条消息,告知您位于列的末尾 .

    Application.CutCopyMode = False
    numRowstoCopy = 1000
    varCurrentRow = ActiveCell.Row
    varCurrentColumn = ActiveCell.Column
    FinalRow = Cells(Rows.Count, varCurrentColumn).End(xlUp).Row
    varRowsToEnd = FinalRow - varCurrentRow
    If varRowsToEnd < numRowstoCopy Then
        Range(Cells(varCurrentRow, varCurrentColumn), Cells(varCurrentRow + varRowsToEnd, varCurrentColumn)).Select
        Selection.Copy
        MsgBox "Last Rows to Paste Have been copied"
    Else
        Range(Cells(varCurrentRow, varCurrentColumn), Cells(varCurrentRow + numRowstoCopy - 1, varCurrentColumn)).Select
        Selection.Copy
        ActiveCell.Offset(numRowstoCopy, 0).Select
    End If
    

相关问题