通过检查条件复制整行并将其粘贴到不同范围的单元格中

时间:2016-12-09 15:54:12

标签: excel-vba range row conditional-statements copy-paste

我使用下面的代码通过检查B列上的条件是主要还是备份来复制范围A:D中的4列数据直到该行的结尾。如果主类别代码将数据粘贴到列K:N中,如果备份类别将整行粘贴到P:S列。

但是在执行时我得到了对象定义错误。任何人都可以帮忙解决这段代码中的错误吗?谢谢

Public Sub CopyData()


Dim rngSinglecell As Range
Dim rngQuantityCells As Range
Dim intCount As Integer

Range("K2:S1400").Clear

Set rngQuantityCells = Range("B120", Range("B120").End(xlDown))

For Each rngSinglecell In rngQuantityCells

  If rngSinglecell.Value = "Primary" Then

    Range("K" & Rows.Count).End(xlUp).Offset(1).Resize(rngSinglecell.Value,   14).Value = _
        Range(Range("A" & rngSinglecell.Row), Range("D" & rngSinglecell.Row)).Value
  ElseIf rngSinglecell.Value = "Backup" Then

    Range("P" & Rows.Count).End(xlUp).Offset(1).Resize(rngSinglecell.Value, 19).Value = _
        Range(Range("A" & rngSinglecell.Row), Range("D" & rngSinglecell.Row)).Value
  End If
Next

End Sub

2 个答案:

答案 0 :(得分:0)

尝试复制:

Public Sub CopyData()


Dim rngSinglecell As Range
Dim rngQuantityCells As Range
Dim intCount As Integer

Range("K2:S1400").Clear

Set rngQuantityCells = Range("B120", Range("B120").End(xlDown))

For Each rngSinglecell In rngQuantityCells

  If rngSinglecell.Value = "Primary" Then

    Range(Range("A" & rngSinglecell.Row), Range("D" & rngSinglecell.Row)).Copy Range("K" & Rows.Count).End(xlUp).Offset(1)

  ElseIf rngSinglecell.Value = "Backup" Then

        Range(Range("A" & rngSinglecell.Row), Range("D" & rngSinglecell.Row)).Copy Range("P" & Rows.Count).End(xlUp).Offset(1)

  End If
Next

End Sub

无需调整大小。

答案 1 :(得分:0)

嗯,除其他外,你以两种完全不同的方式使用rngSingleCell.value,其中一种方式不起作用。

rngSingleCell是包含Primary/Backup的单元格,对吗?但是你试图在resize方法中使用该值,该方法需要一个数值。这肯定会让你失望。

当然,如果没有看到数据的实际布局,很难确定,但是不清楚为什么要使用Range().end(xlup).offset(1)之类的方法来定义复制范围;它将继续以这种方式复制相同的数据。