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

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

我有一张标有“Sheet1”和“Sheet2”的2张工作簿。

在“Sheet1”我有范围B14:G65,I14:I65和合并范围J14:J65合并范围中的每个合并的单元格跨列J:N或J14:N:14到J65:N65。

我需要将满足F列标准的范围的值复制到相同范围区域的“Sheet2”中。

我有下面的macros,它工作的很好,除了当它到达合并单元格错误。 如果单元格没有合并,它工作正常。 希望有人能帮助我。

我不能使用行复制函数,因为有列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 

想我想出了我自己的问题。

通过改变线

 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))