Вы используете определенный диапазон, вы можете сделать это с динамическим диапазоном, например:
Option Explicit
Sub PushButton()
Dim i As Long, LastRow As Long
With ThisWorkbook.ActiveSheet
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'first you need to find the last row on the active sheet
For i = 2 To LastRow 'then iterate through all the rows starting from 2, if row 1 has headers
.Cells(i, 3) = .Cells(i, 1) * .Cells(i, 2) / 100
Next i
End With
End Sub
Если вам нужна помощь в понимании этого кода, дайте мне знать.
Редактировать:Пояснение
Ну, первое, что вы должны сделать, это Измерение всех ваших переменных и помочь вам использовать Option Explicit
прямо над всем вашим кодом.
Я измерил 1 переменную для цикла и еще одну, чтобы найти последнюю строку с текстом.
Чтобы найти последнюю строку, то, что вы на самом деле собираетесь сделать лучше, выберите последнюю строку (1048576) и столбец, в котором будет текст, в данном случае 1 или столбец «А», а затем нажмите Ctrl.+ Up Excel и VBA приведет вас к последней ячейке с текстом.
Для этого вы используете Cells(Row, column)
вместо ручной вставки строки 1048576, вы можете просто использовать rows.count
, и она будет такой же.
Как только вы получите последнюю строку, которую вы просто итерируете сзначение цикла For i
Для переменной с именем i
, которая равна 2 (For i = 2
) To LastRow
(до последней рассчитанной строки) VBA будет повторять код между For
И Next
, добавляя 1 числов i
каждый раз, когда цикл перезапускается.
В этом случае просто добавьте число к строкам в Cells(i, 3)
, чтобы вы могли изменить эту ячейку в зависимости от ее значения i
.