我想将粘贴值从一个工作表中的4列复制到另一工作表的4列中,具体取决于单个列中的值是否为空。
以下是我的代码:
{{1}}
但是,当我尝试将值粘贴到测试工作表的第二列中时,此代码会产生错误,并且我怀疑这是因为它是由合并列组成的。
答案 0 :(得分:1)
这是引起问题的行吗?
Worksheets("jun").Paste Destination:=Worksheets("test").Cells(erow + 1, 3)
听起来您要粘贴在第三列中,但是当您合并列时,最左边的列将成为主要列。例如,您已经合并了B&C(第2列和第3列),因此对3的任何引用现在都是多余的。您可以粘贴到第2列或第4列。在该行中,如果要粘贴到D列,则需要引用第4列,而不是3。
答案 1 :(得分:1)
稍作试验就会出现。PasteSpecialPaste:= xlPasteValues会导致粘贴到合并单元格时出错,但是.PasteSpecial Paste:= xlPasteValuesAndNumberFormats可以粘贴到合并单元格而不会出现该错误
尝试以下更新的子项:
请注意对粘贴列进行了一些改动,以考虑合并列。我还调整了erow,所以它从21开始,以避免必须对所有条目使用'erow + 1'
Private Sub CommandButton1_Click()
Dim lastrow As Long, erow As Long
With Worksheets("jun")
erow = 21
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 8 To lastrow
If .Cells(i, 16).Value <> "" Then
.Cells(i, 16).Copy
Worksheets("test").Cells(erow, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(i, 3).Copy
Worksheets("test").Cells(erow, 2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(i, 2).Copy
Worksheets("test").Cells(erow, 4).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(i, 6).Copy
Worksheets("test").Cells(erow, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
erow = erow + 1
End If
Next i
End With
End Sub