Excel VBA - выполнение функции для каждой ячейки в диапазоне - PullRequest
7 голосов
/ 16 января 2012

Допустим, у меня есть диапазон с именем rng1

Set rng1 = Worksheets("Sheet1").Range("A1","A5")

Существует ли быстрый и простой способ выполнения математической функции, скажем, разделить все эти значения ячеек на 2 для всех ячеек в rng1?

Любая помощь приветствуется!

Ответы [ 2 ]

15 голосов
/ 16 января 2012

Это очень просто, но окончательный код будет зависеть от того, где вы хотите сохранить новые значения. Например, если вы хотите сохранить значения, разделенные на 2, в следующем столбце:

Sub test()

Dim cell As Range

For Each cell In Range("A1:A5")
    cell.Offset(, 1).Value = cell.Value / 2
Next

End Sub

Помните, что есть более эффективные способы сделать это, чем использовать смещение, если ваш диапазон большой, но для меньшего диапазона это вполне приемлемо и быстро.

Если вы хотите перезаписать значения, вы можете просто использовать cell.Value вместо cell.Offset(,1).Value

2 голосов
/ 11 марта 2014

Другой путь

Sub Main()
    [B1:B5] = [INDEX((A1:A5/2),)]
End Sub

Как это работает, хорошо объяснено здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...