VBA宏 - 复制数据

时间:2018-03-02 15:59:36

标签: excel vba excel-vba copy-paste

我正在努力将数据从Sheet1中的单元格拉到Sheet2,并且我有正确的数据副本宏,但是,我需要根据另一个单元格中的信息提取特定条目。

我从单元格A14开始为我的代码而且所有的工作都将在A列中完成。基本上,我需要从Sheet1中的单元格A14开始并拉出每个第5个单元格并根据找到的标准将其复制到Sheet2中细胞下面的细胞我决定是否需要复制。是否复制上述2个单元格中的数据的标准是单元格是否包含"选择答案"或不。

例如, X + 5 = N 如果n + 2 ="选择并回答",请将n复制到Sheet2

我目前可以在下面找到宏。

Sub CopyNthData()
Dim i As Long, icount As Long
Dim ilastrow As Long
Dim wsFrom As Worksheet, wsTo As Worksheet

Set wsFrom = Sheets("Sheet1")
Set wsTo = Sheets("Sheet2")
ilastrow = wsFrom.Range("A1000000").End(xlUp).Row
icount = 1

For i = 14 To ilastrow Step 5
    wsTo.Range("A" & icount) = wsFrom.Range("A" & i)
    icount = icount + 1
Next i
End Sub

Image of Sheet

1 个答案:

答案 0 :(得分:0)

这样的东西?

原则是使用Offset。您可以将其用于比较范围和要检索的范围。

鉴于您的比较存在不确定性,似乎

wsFrom.Cells(i, 1).Offset(2, 0)) = "choose an answer" 

比较当前的两行,而

wsFrom.Cells(i, 1).Offset(-2, 0)) = "choose an answer" 

比较

下面的两行

如果您想要复制当前单元格以外的其他内容,则可以从当前单元格进行偏移,例如

wsTo.Range("A" & icount) = wsFrom.Range("A" & i).Offset(1,0)

上面的示例,然后从当前的单元格中复制值。

在偏移中,第一个数字是从当前位置移动的行数,第二个数字是列数。

Option Explicit

Sub CopyNthData()

    Dim i As Long, icount As Long
    Dim ilastrow As Long
    Dim wsFrom As Worksheet, wsTo As Worksheet

    Set wsFrom = Sheets("Sheet1")
    Set wsTo = Sheets("Sheet2")

    ilastrow = wsFrom.Range("A1000000").End(xlUp).Row
    icount = 1

    For i = 14 To ilastrow Step 5

         If LCase$(Trim$(wsFrom.Cells(i, 1).Offset(2, 0))) = "choose an answer" Then
            wsTo.Range("A" & icount) = wsFrom.Range("A" & i)
            icount = icount + 1
        End If

    Next i
End Sub