在 VBA 中复制整行时是否可以排除某些列?
Is it possible to exclude certain columns when copying an entire row in VBA?
我目前正在复制特定行,具体取决于它们是否包含特定值。但是,我实际上只想复制一些列而不是整行。最简单的方法是什么?我当前的代码:
Sub output()
Dim i, Lastrow As Long
Lastrow = Sheets("Dec").Range("A" & Rows.Count).End(xlUp).Row
'Looping from tenth row to last row
For i = 7 To Lastrow
If Sheets("Dec").Cells(i, "AQ").Value = "Shortage" Or Sheets("Dec").Cells(i, "AQ").Value = "Customer" Then
Sheets("Dec").Cells(i, "AQ").EntireRow.Copy Destination:=Sheets("Action").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next i
Sheets("Action").Activate
End Sub
假设以下数据:
如果您想复制列 A、B、C 和 G、H,您可以使用 Range("A1:C1,G1:I1").Copy
来完成。如果您随后使用 Range("A3").Paste
将其粘贴到 A3 中,您将得到
但是如果您希望它粘贴时 D、E、F 列为空,如下所示
然后你必须一个接一个地复制和粘贴每个范围(你不能一步完成)
Range("A1:C1").Copy
Range("A3").Paste
Range("G1:I1").Copy
Range("G3").Paste
当然,您也可以复制整行并清除 D、E、F 列。
您可以使用 Union 函数合并至少两个区域或单元格
Private Const column1 As String = "A"
Private Const column3 As String = "C"
Private Const column5 As String = "E"
Private Const column7 As String = "G"
Sub Button1_Click()
Dim i As Long
Dim unionRange As Range
Dim rangeSelection As String
i = 1
rangeSelection = column5 & i & ":" & column7 & i
Set unionRange = Union(Cells(i, column1), Cells(i, column3), Range(rangeSelection))
unionRange.Select
unionRange.Copy
Range(column1 & "2").PasteSpecial
End Sub
我目前正在复制特定行,具体取决于它们是否包含特定值。但是,我实际上只想复制一些列而不是整行。最简单的方法是什么?我当前的代码:
Sub output()
Dim i, Lastrow As Long
Lastrow = Sheets("Dec").Range("A" & Rows.Count).End(xlUp).Row
'Looping from tenth row to last row
For i = 7 To Lastrow
If Sheets("Dec").Cells(i, "AQ").Value = "Shortage" Or Sheets("Dec").Cells(i, "AQ").Value = "Customer" Then
Sheets("Dec").Cells(i, "AQ").EntireRow.Copy Destination:=Sheets("Action").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next i
Sheets("Action").Activate
End Sub
假设以下数据:
如果您想复制列 A、B、C 和 G、H,您可以使用 Range("A1:C1,G1:I1").Copy
来完成。如果您随后使用 Range("A3").Paste
将其粘贴到 A3 中,您将得到
但是如果您希望它粘贴时 D、E、F 列为空,如下所示
然后你必须一个接一个地复制和粘贴每个范围(你不能一步完成)
Range("A1:C1").Copy
Range("A3").Paste
Range("G1:I1").Copy
Range("G3").Paste
当然,您也可以复制整行并清除 D、E、F 列。
您可以使用 Union 函数合并至少两个区域或单元格
Private Const column1 As String = "A"
Private Const column3 As String = "C"
Private Const column5 As String = "E"
Private Const column7 As String = "G"
Sub Button1_Click()
Dim i As Long
Dim unionRange As Range
Dim rangeSelection As String
i = 1
rangeSelection = column5 & i & ":" & column7 & i
Set unionRange = Union(Cells(i, column1), Cells(i, column3), Range(rangeSelection))
unionRange.Select
unionRange.Copy
Range(column1 & "2").PasteSpecial
End Sub