Excel VBA Выбрать каждую другую ячейку и вставить ее на другой лист? - PullRequest
1 голос
/ 04 марта 2020

Мне нужно скопировать данные из 8-й строки на другой лист (лист 2). Мне нужно только скопировать каждую другую ячейку, она должна скопировать ячейку C8 (первая ячейка, в которой находится значение), E8, G8, I8 и т. Д. Со всей ячейки Upto IK8.

Есть ли способ сделать это? Я пробовал пошаговую функцию в for для l oop, но она не работает и выбирает только одну ячейку. Она вставляет только одно значение для ячеек H2: H130.


Sub Workplace()

Dim rng As Range
Dim LastRow As Long
Dim I As Long

LastRow = Worksheets("Questions").Range("C" & Rows.Count).End(xlUp).Row
For I = 8 To LastRow Step 3
Set rng = Worksheets("Questions").Range("C" & I)
rng.Copy
Next I
Worksheets("Sheet1").Range("H2:H130").PasteSpecial Transpose:=True
End Sub

1 Ответ

0 голосов
/ 04 марта 2020

Вам нужно увеличить столбец, а не строку.

И переместить вставку в l oop, хотя вам нужно увеличить ячейку назначения.

For i = 3 to 245 Step 2 ' column C to column IK
    Set rng = Worksheets("Questions").Cells(8, i)

    With Worksheets("Sheet1")
        Dim dest as Range
        Set dest = .Range("H" & .Rows.Count).End(xlUp).Offset(1)
    End With

    rng.copy Destination:=dest
Next

Или лучше, просто используйте Union, чтобы создать диапазон для копирования, а затем скопируйте за один шаг:

For i = 3 to 245 Step 2 ' column C to column IK
    If rng Is Nothing Then
        Set rng = Worksheets("Questions").Cells(8, i)
    Else
        Set rng = Union(rng, Worksheets("Questions").Cells(8, i))
    End If
Next

rng.Copy
Worksheets("Sheet1").Range("H2").PasteSpecial Transpose:=True

Application.CutCopyMode = False

РЕДАКТИРОВАТЬ :

«Есть ли способ вставить его в первую пустую ячейку для строки H на листе 1 вместо указания диапазона?»

Да, например:

Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Transpose:=True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...