Возникли проблемы с усреднением неопределенного диапазона столбцов - PullRequest
0 голосов
/ 08 июля 2019

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

Пока мне удалось усреднить один столбец (B),но кажется не в состоянии сделать автозаполнение до последнего столбца, который может измениться по длине.Я также пытался сделать оператор if типа «если есть значение в строке выше, тогда делайте среднее», но я не очень хорош в использовании VBA, поэтому не знаю, как это сделать.Мне нужна помощь в том же усреднении, которое видно из приведенного ниже кода по всем столбцам, в которых содержатся значения.Мои значения конкретно начинаются со строки 5 и опускаются до неопределенного диапазона.

Dim rng1 As Range
Dim rng2 As Range
Dim myavg As Range

Set rng1 = Range("B5")
Set rng2 = Range("B5").End(xlDown)
Set myavg = Range("B5").End(xlDown).Offset(1, 0)

myavg = "=Average(" & rng1.Address & ":" & rng2.Address & ")"

1 Ответ

2 голосов
/ 08 июля 2019

Вы можете использовать Do While следующим образом:

Dim rng1 As Range
Dim rng2 As Range
Dim myavg As Range

Set rng1 = Range("B5")

Do While rng1.Value <> ""
    Set rng2 = Cells(Rows.count, rng1.Column).End(xlUp) ' using @Chronocidal's suggestion above
    Set myavg = rng2.Offset(1, 0)

    myavg.Formula = "=Average(" & rng1.Address & ":" & rng2.Address & ")"

    Set rng1 = rng1.Offset(0, 1)
Loop
...