Для следующего цикла (новичок)

Для следующего цикла (новичок)

Я хочу скопировать серые ячейки в строки, но скопирована только серая ячейка последнего столбца.

Копируются все ячейки, но каждая копия перезаписывает предыдущую. Выполните этот код, повторно нажимая F8, и наблюдайте за изменениями.

GSerg 27.10.2018 10:15

Это хорошее время, чтобы узнать, что вы не должны публиковать изображения кода, независимо от того, насколько мал сегмент кода.

user4039065 27.10.2018 11:11
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
2
89
3

Ответы 3

Вы так близко :)

Option Explicit

Sub istebu()

Dim x As Long
Dim i As Long

For i = 3 To 10 'Loop in row from 3 to 10
    For x = 3 To 21 Step 3 'Loop header row, from 3 to 21, jump 3
        Cells(i, 1) = Cells(1, x) 'Copy values.
        i = i + 1 'Add one row each time, so we don't overwrite previously row
    Next x
Next i
End Sub

Альтернатива:

Его можно сократить, так как нам не нужно перебирать строки. Нам нужно только добавить их. Итак, мы устанавливаем i в начальную строку, куда мы должны вставить наши данные.

Sub istebu()

Dim x As Long
Dim i As Long

i = 3 'Set first row number you want to loop from.

For x = 3 To 21 Step 3 'Loop header row, from 3 to 21, jump 3
        Cells(i, 1) = Cells(1, x) 'Copy values.
        i = i + 1 'Add one row each time, so we don't overwrite previously row
Next x
End Sub

Нет необходимости во вложенных циклах

Sub Test()
Dim r As Integer, c As Integer

r = 3
For c = 3 To 21 Step 3
    Cells(r, 1) = Cells(1, c)
    r = r + 1
Next c
End Sub

Хороший Яссер

Davesexcel 27.10.2018 12:46

Есть вообще альтернатива петлям.

Range("C1,F1,I1,L1,O1,R1,U1").Copy
Range("A3").PasteSpecial Paste:=xlPasteValues, Transpose:=True

Но если вам действительно нравятся петли, используйте их для создания союза.

dim i as long, rng as range

for 3 to 21 step 3
    if rng is nothing then
        set rng = cells(1, i)
    else
        set rng = union(rng, cells(1, i))
    end if
next i

rng.Copy
Range("A3").PasteSpecial Paste:=xlPasteValues, Transpose:=True

Другие вопросы по теме