根据第三列数据将一列中的数据复制到另一张纸上的不同列

时间:2018-04-06 14:44:25

标签: excel vba excel-vba

所以,我对VBA很新,我很难找到我认为应该是一个相当简单的问题的答案。

我有一张包含2张的工作簿,我们称之为Sheet1和Sheet2。

我想将Sheet1上B,D和E列的数据复制到Sheet 2上A,B和C列的第一个可用行,并进行以下更改:

Sheet1 Sheet2
Col E Col A
Col D Col B
Col B Col C

但是,如果Sheet1第I列中每行的单元格值为" Y"我只希望复制数据。

我还没有任何代码。

更新: 在收到回复的建议后,我运行了一条宏记录,并得到了这个:

    Sub VBlk()
    '
    ' VBlk Macro
    ' V Block Copy
    '

    '
        Range("B2").Select
        Selection.Copy
        Sheets("Sheet2").Select
        Range("C3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _
            :=False, Transpose:=False
        Range("B3").Select
        Sheets("Sheet1").Select
        Range("D2").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Sheet2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Sheet1").Select
        Range("E2").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Sheet2").Select
        Range("A3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End Sub

1 个答案:

答案 0 :(得分:3)

尝试下面的代码(希望它有所帮助):

   Sub test()

        Dim ws1 As Worksheet
        Dim ws2 As Worksheet
        Set ws1 = Sheets("sheet1")
        Set ws2 = Sheets("sheet2")

        'get the Last non empty row in sheet1 based on Column B
        lastrow1 = ws1.Cells(Rows.Count, 2).End(xlUp).Row


        For i = 1 To lastrow1
            'get the Last non empty row in sheet2 based on Column A
            lastrow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
            If ws1.Range("I" & i).Value = "Y" Then
                ws2.Range("A" & lastrow2 + 1).Value = ws1.Range("E" & i)
                ws2.Range("B" & lastrow2 + 1).Value = ws1.Range("D" & i)
                ws2.Range("C" & lastrow2 + 1).Value = ws1.Range("B" & i)
            End If
        Next i

    End Sub