复制并粘贴到另一个工作表的第一个空行,如果第一个单元格为空,则粘贴到上一行

Posted

技术标签:

【中文标题】复制并粘贴到另一个工作表的第一个空行,如果第一个单元格为空,则粘贴到上一行【英文标题】:Copy and paste to another sheet first empty row, pastes over the previous row if first cell is empty 【发布时间】:2014-01-24 19:18:01 【问题描述】:

我正在从一个工作表 (B14:I14) 复制一个范围并将值粘贴到第一个空行中的另一个工作表。如果范围在第一个单元格 (B14) 中有数据,则此方法可以正常工作。

当某些单元格中有数据但 B14 没有数据时,下次它粘贴到与我上次执行宏时相同的行。

范围会因所有单元格包含数据或只有两个而异。我需要它来检查目标行是否为空,而不仅仅是第一个单元格。

这是我的宏:

Sub Save7()
    Dim NextRow As Range
    With Sheets("Sheet3")
        Set NextRow = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0)
    End With
    Sheet1.Range("B14:I14").Copy
    NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
    Application.CutCopyMode = False
    Set NextRow = Nothing
End Sub

【问题讨论】:

【参考方案1】:

我建议使用这个:

Sub Save7()
    Dim NextRow As Range
    Set NextRow = Range("B" & Sheets("Sheet3").UsedRange.Rows.Count + 1)
    Sheet1.Range("B14:I14").Copy
    Sheet3.Activate
    NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
    Application.CutCopyMode = False
    Set NextRow = Nothing
End Sub

这应该很好用。 UsedRange 检查所有列,因此如果 B 为空,则不会覆盖它。唯一的问题是如果第一行是空白的,但你可以在那里添加标题数据,或者其他东西,它不会再被它打扰了。当第一行为空时 UsedRange.Rows.Count 仍然输出 1. 享受!

【讨论】:

天啊,这工作得很好。谢谢你们俩。我可以等着把它拆开,这样我才能理解代码。谢谢谢谢 投反对票的原因?似乎工作完美。我很想知道我做错了什么。 抱歉,我无意投反对票。这一定是一个糟糕的鼠标点击。我非常感谢您的帮助。它工作得很好,你的解释也是如此。谢谢。

以上是关于复制并粘贴到另一个工作表的第一个空行,如果第一个单元格为空,则粘贴到上一行的主要内容,如果未能解决你的问题,请参考以下文章

将单元格从打开的工作簿复制到另一个

利用vba怎样编写将工作表中第三行到最后一行(不确定)的数据复制并插入到另一个工作表的第二行前?

根据行数据复制特定单元格并粘贴到特定工作表上

将整行从一张excel表复制到另一张表的下一个空行

Excel VBA 宏将复制一系列单元格并粘贴到另一个工作簿中

用于将行复制并粘贴到另一个工作表而不将其粘贴到页面数英里的宏