如何在下一个空单元格中复制和粘贴动态表值?

Posted

技术标签:

【中文标题】如何在下一个空单元格中复制和粘贴动态表值?【英文标题】:How to copy and paste dynamic table values in next empty cell? 【发布时间】:2019-10-29 20:25:15 【问题描述】:

我希望从动态表中选择具有值的单元格,然后将这些值复制并粘贴到另一个工作表中,其中包含下一个空单元格可用的表。

我只能找到将定义的范围复制并粘贴到下一个空单元格中的代码,或者复制并粘贴包含一些值和空单元格的动态范围。

Sub SaveKit_1()

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopy As Long
Dim lDest As Long

  Set wsCopy = Worksheets("Kit_db") 'Copies table from Kit_db worksheet
  Set wsDest = Worksheets("Kit_db (1)") 'Pastes table to Kit_db (1) worksheet

  lCopy = wsCopy.Cells(wsCopy.Rows.Count, "E").End(xlUp).Row
  lDest = wsDest.Cells(wsDest.Rows.Count, "E").End(xlUp).Offset(1).Row

  'Copies any cell within the table
  wsCopy.Range("B3:I" & lCopy).Copy _ 
     wsDest.Range("B" & lDest)

End Sub

动态表格中的所有单元格都被复制和粘贴,而不是表格中带有值的单元格。我只想粘贴值,因为动态表中的某些单元格有公式。

我尝试了以下选择性粘贴

   PasteSpecial _
   Paste:=xlPasteValuesAndNumberFormats, _
   Operation:=xlPasteSpecialOperationNone, _
   SkipBlanks:=True, _
   Transpose:=False

但我认为我没有将其与现有代码正确放置,或者我使用了错误类型的代码进行粘贴。

【问题讨论】:

粘贴特殊值、粘贴值或进行值传输。 通过调整目标大小来传输值,如果您对格式不感兴趣,请保留复制粘贴。 @JvdV 我对 vba 还是很陌生,我该怎么做? 【参考方案1】:

以下是使用您的代码粘贴特殊值的示例

Sub SaveKit_1()

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopy As Long
Dim lDest As Long

  Set wsCopy = Worksheets("Kit_db") 'Copies table from Kit_db worksheet
  Set wsDest = Worksheets("Kit_db (1)") 'Pastes table to Kit_db (1) worksheet

  lCopy = wsCopy.Cells(wsCopy.Rows.Count, "E").End(xlUp).Row
  lDest = wsDest.Cells(wsDest.Rows.Count, "E").End(xlUp).Offset(1).Row

  'Copies any cell within the table
  wsCopy.Range("B3:I" & lCopy).Copy
  wsDest.Range("B" & lDest).PasteSpecial xlPasteValues

End Sub

【讨论】:

这很好用。有没有办法只复制带有值的表格单元格?我已经尝试过这段代码,它也复制了表格中的空白单元格,而不仅仅是带有值的单元格。 有没有办法只复制带有值的表格单元格?是的,您想摆脱空白行或空白列或每个空白单元格,复制任何空白单元格的屏幕截图并且您想摆脱它们? 我希望删除表中最后一行数据之后的所有非值单元格(行)。这有意义吗?

以上是关于如何在下一个空单元格中复制和粘贴动态表值?的主要内容,如果未能解决你的问题,请参考以下文章

复制& 粘贴到下一个空单元格。

Vba找到第一个空单元格并平均它上面的4个单元格并将值粘贴到另一个单元格中

使用 VBA 将多个单元格粘贴到一个单元格中

MAC VBA尝试从每个工作表中剪切一个单元格并粘贴到下一个空单元格中的另一张表中

在列中找到下一个空单元格时避免合并单元格

循环遍历范围,如果单元格包含值,则复制到列中的下一个空单元格