Excel宏分别复制x行数

时间:2018-03-20 17:07:57

标签: excel excel-vba vba

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

2 个答案:

答案 0 :(得分:1)

  1. 选择一列并从“宏”对话框(Alt + F8)运行子过程。前1000个单元格将被复制到剪贴板。
  2. 将数据粘贴到另一个程序中。
  3. 返回Excel并再次运行子过程。接下来的1000行数据将被复制到剪贴板。
  4. 当最后一组数据被复制到剪贴板时,会显示一个消息框。

    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
    
  5. 您可能希望在“宏”对话框中为子过程设置热键组合,以简化重复操作。

答案 1 :(得分: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