VBA使用VBA在循环中复制和粘贴随机单元格

时间:2017-12-18 13:57:40

标签: excel vba excel-vba

我想使用VBA将单元格中的单元格复制并粘贴到VBA中的另一个工作表中。

例如,我想将sheet2中的单元格A2复制到sheet1中的单元格A1,将sheet2中的单元格B2复制到sheet1中的单元格B1。然后是Sheet2中的A3到sheet1中的单元格A1,单元格B3中的单元格B1中的单元格B1。我想这样做直到最后一排。

我尝试了下面的代码,但我的数据集太大了。还有另一种替代方法吗?

'Worksheets("Sheet1").Range("C28").Value = Worksheets("Sheet2").Range("B2").Value

3 个答案:

答案 0 :(得分:1)

嗨,当我做这样的事情时,我发现录制宏最容易,然后如果你去查看你的宏并编辑它们,你就可以看到创建的代码了。可以直接复制到你的vba项目

答案 1 :(得分:1)

好的,我想你可能会想要这些内容。

Sub x()

Dim r As Long

With Sheet2
    For r = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
        Sheet1.Range("A1").Resize(, 2).Value = .Cells(r, 1).Resize(, 2).Value
        'presumably do something else?
    Next r
End With

End Sub

答案 2 :(得分:1)

您好,您可以使用随机数生成行号和列号

Sub test1()

 Dim LastRow, Lastcol As Long
 Dim wb As Workbook
 Dim ws1, ws2 As Worksheets


    Set wb = ThisWorkbook

    ' Sheet name where data is present
    Set ws1 = wb.Worksheets("OriginalSheet")
    ' Sheet name where data to be copied
    Set ws2 = wb.Worksheets("CopySheet")



    With ws1
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column

    End With



For i = 1 To Lastcol
    For j = 1 To LastRow

 ' Random number generation

 ' To create a random integer number between two values (range), you can use the following formula:

' Int ((upperbound - lowerbound + 1) * Rnd + lowerbound)

randrow = Int((50 - 10 + 1) * Rnd + 10)

randcol = Int((5 - 2 + 1) * Rnd + 2)

ws2.Cells(randrow, randcol).Value = ws1.Cells(j, i).Value


    Next
Next


End Sub