Копировать значение n раз подряд

#vba #excel

#vba #excel

Вопрос:

У меня есть две таблицы: «ЗНАЧЕНИЯ» и «ВСТАВИТЬ». В таблице «ВСТАВКА» ячейка «A1» содержит значение, которое необходимо скопировать столько раз, сколько строк > «» в «ЗНАЧЕНИЯХ»

Я пробовал следующий код, но он работает не так, как я предполагал, а копирует значение «A1» 4 раза через каждую строку в «ЗНАЧЕНИЯХ».

Что я делаю не так? Спасибо за вашу помощь!

 Sub InsertValuePart()
Dim maxRow As Integer
Dim calcVal As String
Dim x As String
Dim i As Long
Sheets("VALUES").Select
maxRow = Cells(Rows.Count, 1).End(xlUp).row

Sheets("INSERT").Select
Cells(1, 1).Activate
x = Cells(1, 1).Value

Cells(2, 1).Select

For i = 1 To maxRow
Cells(i, 1).Value = x
i = i   1
Next
Application.CutCopyMode = False

Range("A1").Select

End Sub
  

Ответ №1:

Нет необходимости определять, i как оно обрабатывается в вашей for команде. Также for команда автоматически выполняет итерацию по каждому значению, поэтому использование i = i 1 выдаст вам значения i = 1, 3, 5 . Если вы не включите это, то i = 1,2,3,....,maxRow . Также calcVal нигде не использовался, поэтому я от него избавился.

 Sub InsertValuePart()
Dim maxRow As Integer
Dim x As String

maxRow = Sheets("VALUES").Cells(Rows.Count, 1).End(xlUp).Row
x = Sheets("INSERT").Cells(1, 1).Value

For i = 1 to maxRow
    Sheets("INSERT").Cells(i,1).Value = x
Next

Sheets("INSERT").Range("A1").Select

End Sub
  

Другой способ сделать это приведен ниже в одной строке:

 Sub InsertValuePart()
    Sheets("INSERT").Range("A1", "A" amp; CStr(Sheets("VALUES").Cells(Rows.Count, 1).End(xlUp).Row)).Value = Sheets("INSERT").Range("A1").Value
End Sub
  

Комментарии:

1. Я использовал «Option explicit» и, таким образом, мне пришлось объявить i. Другая переменная предназначалась для последующего действия. Но ваш скрипт работает просто отлично 🙂 Спасибо!