首页 文章

VBA宏 - 复制数据

提问于
浏览
0

我正在努力将数据从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

    像这样的东西?

    原则是使用偏移量 . 您可以将其用于比较范围和要检索的范围(如果需要) .

    看来你的比较存在不确定性

    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
    

相关问题