Как я могу выполнить операцию в Excel VBA для определенного пользователем диапазона? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть серия ячеек со значениями, т.е.

enter image description here

Я хотел бы иметь цикл for, который выполняет усреднение первого значения в столбце A (1), смежного значения в столбце B (3) и смежного значения в столбце C (74). Мне нужно, чтобы пользователь выбрал этот диапазон с помощью msgbox.

До сих пор я мог закодировать это с помощью записи макроса:

Sub averager()
    Dim ran As Range, average As Variant, cell1 As Variant, cell2 As Variant
    Dim i As Variant

    Set ran = Application.InputBox(Prompt:="Enter range values: ", Type:=8)

    For i = 0 To i = 8
        ran.Offset(0, 13).Select
        ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-13]:RC[-11])"
        average = WorksheetFunction.average(ran.Text)
    Next i
End Sub

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

Как цикл может выполнить операцию для всех значений?

1 Ответ

1 голос
/ 11 марта 2019
  1. Перехватите ошибку, если пользователь нажмет кнопку Отмена .
  2. Вам не нужен цикл, вы можете написать формулу для нескольких ячеек одновременно.

Option Explicit

Public Sub Averager()        
    Dim ValueRange As Range
    On Error Resume Next 'if user presses cancel this throws an error
    Set ValueRange = Application.InputBox(Prompt:="Select range values: ", Type:=8)
    On Error GoTo 0

    If Not ValueRange Is Nothing Then
        ValueRange.Offset(ColumnOffset:=6).Resize(ColumnSize:=1).FormulaR1C1 = "=AVERAGE(RC[-6]:RC[-4])"
    End If
End Sub
...