VBA 将值粘贴到范围内的下一个空单元格

VBA Paste Value to Next Empty Cell in a Range

我正在尝试将一个 sheet(Sheet1 上的 C39)中的值复制并粘贴到另一个 sheet(Sheet2 上的 B6 到 B18)范围内的下一个空单元格。这是我正在使用的代码。

Sheets("Sheet1").Range("C39").Copy
With Sheets("Sheet2").Range("B6:B18").End(xlUp).Offset(1)
.PasteSpecial Paste:=xlPasteValues
End With
End Sub

当我运行这个宏时,它继续覆盖Sheet2上的B6。理想情况下,它会看到 B6 中有一个值并粘贴到 B7,然后粘贴到 B8 等。我该怎么做才能更正此问题?

需要从Sheet2中的B16开始向上看:

Sub dural()
    Dim r1 As Range, r2 As Range
    Set r1 = Sheets("Sheet1").Range("C39")
    Set r2 = Sheets("Sheet2").Range("B16").End(xlUp).Offset(1, 0)
    r1.Copy r2
End Sub

(类似于 PasteSpecial)

您可以设置彼此相等的值而不是 copy/paste。尽管在逐个电池的基础上,效率增益基本上是不存在的。在更大的范围内,这将节省内存

Sub dural()

Sheets("Sheet2").Range("B16").End(xlUp).Offset(1, 0).Value = Sheets(“Sheet1”).Range(“C39”).Value

End Sub

这将复制值并将其粘贴到 Sheet 中的 B 列 2.

Sub CopyPaste()

Dim lrow As Integer
Sheets("Sheet1").Range("C39").Copy - What cell value to copy
lrow = 18 'End row on Sheet2
For i = 6 To 18 'Loop from row 6 to 18
    If Cells(i, 2) = "" Then 'If cell is empty then paste new value
    Sheets("Sheet2").Range(Cells(i, 2), Cells(i, 2)).PasteSpecial xlPasteValues
    End If
Next i
End Sub