Можно ли исключить определенные столбцы при копировании всей строки в VBA? - PullRequest
1 голос
/ 21 января 2020

В настоящее время я копирую определенные строки в зависимости от того, содержат ли они определенное значение. Однако на самом деле я хочу скопировать только некоторые столбцы, а не всю строку. Какой самый простой способ сделать это? МОЙ текущий код:

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


Ответы [ 2 ]

1 голос
/ 21 января 2020

Представьте себе следующие данные:

enter image description here

Если вы хотите скопировать столбцы A, B, C и G, H, вы можете сделайте это, например, с Range("A1:C1,G1:I1").Copy. Если затем вставить его в A3, используя Range("A3").Paste, вы получите

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.

0 голосов
/ 21 января 2020

Вы можете использовать функцию объединения для объединения как минимум двух диапазонов или ячеек 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...