Excel 从某些单元格复制值并将其粘贴到下一个空单元格的宏
Excel macro to copy values from certain cells and paste them into next empty cells
我想制作一个非常简单的宏,它将从某些单元格(在我的例子中是 A1、A5、A9)复制值并将它们粘贴到同一行的下一个空单元格中
像 B1、B5、B9。每个 运行 都应该创建一个包含复制值的下一个单元格(不是覆盖 B1、B5、B9,而是将它们放入 C1、C5、C9 等等)
这是我之前管理的代码
Private Sub CommandButton4_Click()
'Use the Range.Copy method for a simple copy/paste
'The Range.Copy Method - Copy & Paste with 1 line
Range("A1").Copy Range("B1")
Range("A5").Copy Range("B5")
Range("A9").Copy Range("B9")
End Sub
这会将 A1、A5、A9 复制到同一行中的下一个空单元格
Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
With Range("A" & i)
If .Offset(0, 1) = vbNullString Then 'if B is empty
.Copy .Offset(0, 1)
Else 'find next free cell
.Copy .End(xlToRight).Offset(0, 1)
End If
End With
Next i
或者复制到同一行最后使用单元格后的单元格
Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
With Range("A" & i)
.Copy .Parent.Cells(i, .Parent.Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
End With
Next i
请注意,我强烈建议指定范围 A1 在哪个工作表中(对于两种变体):
而不是
Range("A" & i)
始终指定工作表,如
Worksheets("SheetName").Range("A" & i)
另一种方法是使用后期绑定:
With ThisWorkbook.Worksheets("Sheet1")
.Range("A1").Copy .Cells(1, .Cells(1, .Columns.count).End(xlToLeft).Column + 1)
.Range("A5").Copy .Cells(5, .Cells(5, .Columns.count).End(xlToLeft).Column + 1)
.Range("A9").Copy .Cells(9, .Cells(9, .Columns.count).End(xlToLeft).Column + 1)
End With
我想制作一个非常简单的宏,它将从某些单元格(在我的例子中是 A1、A5、A9)复制值并将它们粘贴到同一行的下一个空单元格中 像 B1、B5、B9。每个 运行 都应该创建一个包含复制值的下一个单元格(不是覆盖 B1、B5、B9,而是将它们放入 C1、C5、C9 等等)
这是我之前管理的代码
Private Sub CommandButton4_Click()
'Use the Range.Copy method for a simple copy/paste
'The Range.Copy Method - Copy & Paste with 1 line
Range("A1").Copy Range("B1")
Range("A5").Copy Range("B5")
Range("A9").Copy Range("B9")
End Sub
这会将 A1、A5、A9 复制到同一行中的下一个空单元格
Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
With Range("A" & i)
If .Offset(0, 1) = vbNullString Then 'if B is empty
.Copy .Offset(0, 1)
Else 'find next free cell
.Copy .End(xlToRight).Offset(0, 1)
End If
End With
Next i
或者复制到同一行最后使用单元格后的单元格
Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
With Range("A" & i)
.Copy .Parent.Cells(i, .Parent.Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
End With
Next i
请注意,我强烈建议指定范围 A1 在哪个工作表中(对于两种变体): 而不是
Range("A" & i)
始终指定工作表,如
Worksheets("SheetName").Range("A" & i)
另一种方法是使用后期绑定:
With ThisWorkbook.Worksheets("Sheet1")
.Range("A1").Copy .Cells(1, .Cells(1, .Columns.count).End(xlToLeft).Column + 1)
.Range("A5").Copy .Cells(5, .Cells(5, .Columns.count).End(xlToLeft).Column + 1)
.Range("A9").Copy .Cells(9, .Cells(9, .Columns.count).End(xlToLeft).Column + 1)
End With