Excel VBA根据不使用合并单元格的列中的条件复制和粘贴多个范围

时间:2016-06-30 18:39:28

标签: excel vba excel-vba merge

感谢您花时间阅读我的问题。

我有一张带有2张标签的工作簿" Sheet1"和" Sheet2"。

On" Sheet1"我有范围B14:G65,I14:I65,合并范围J14:J65合并范围内的每个合并单元格跨越J:N或J14:N:14到J65:N65。

我需要将满足F列标准的范围值复制到" Sheet2"在同一范围内。

我有以下宏工作得很好,除非它到达合并的单元格时出错。如果细胞没有合并,它可以正常工作。希望有人可以帮助我。

我不能使用行复制功能,因为在H和P列中有公式:AD不能被覆盖并且从Sheet1复制整行会覆盖它,因此我需要这些范围。

Sub Test()
Dim rng As Range
Dim lastRow As Long
Dim cell As Variant
Dim count As Long
count = 0

With ActiveSheet.Previous
    lastRow = .Range("F" & .Rows.count).End(xlUp).Row
    Set rng = .Range("F14:F" & lastRow)

For Each cell In rng
    If cell.Value = "WIP" Or cell.Value = "WNS" Then
       Range(cell.Offset(0, -4), cell.Offset(0, 1)).Copy
       Range("B14").Offset(count, 0).PasteSpecial xlPasteValues
       Range(cell.Offset(0, 3), cell.Offset(0, 3)).Copy
       Range("I14").Offset(count, 0).PasteSpecial xlPasteValues
       Range(cell.Offset(0, 4), cell.Offset(0, 4)).Copy
       Range("J14").Offset(count, 0).PasteSpecial xlPasteValues
       count = count + 1
    End If
Next
End With
End Sub

1 个答案:

答案 0 :(得分:1)

想想我发现了自己的问题。

通过更改行

Range(cell.Offset(0, 4), cell.Offset(0, 4)).Copy
Range("J14").Offset(count, 0).PasteSpecial xlPasteValues

Range("J14").Offset(count, 0) = Range(cell.Offset(0, 4), cell.Offset(0, 4))