在VBA中复制整行时是否可以排除某些列?

问题描述 投票:1回答:2

我目前正在复制某些行,具体取决于它们是否包含某个值。但是,我实际上只想复制一些列,而不是整个行。最简单的方法是什么?我当前的代码:

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


excel vba copy-paste
2个回答
0
投票

您可以使用联合功能来联合至少两个范围或单元格enter image description here

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

1
投票

想象以下数据:

enter image description here

如果要复制A,B,C和G,H列,我可以使用Range("A1:C1,G1:I1").Copy进行复制。如果然后使用Range("A3").Paste将其粘贴到A3中,则将得到[

enter image description here

但是,如果您希望它粘贴时,D,E,F列为空,如下所示

enter image description here

然后,您必须一个接一个地复制并越过每个范围(您不能一步一步完成)

Range("A1:C1").Copy
Range("A3").Paste

Range("G1:I1").Copy
Range("G3").Paste

当然,您也可以复制整行并清除D,E,F列。

© www.soinside.com 2019 - 2024. All rights reserved.