Excel VBA: использование .formula с динамическими диапазонами

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

Кроме того, у меня есть несколько наборов наборов данных на каждом листе, и поскольку наборы данных являются динамическими, я добавляю столбцы к листу ранее в коде, поэтому я не могу переустановить отправную точку для набора данных. Другими словами, я не могу просто сказать …

Range("L5").formula = "=AVERAGE(H5:K5)"

… потому что я не могу точно знать, что наборы данных начинаются с H5. Он может начинаться с F5 или G5 и т. Д.

Поэтому я пытаюсь передать начальную точку в качестве аргумента в переменной As Range, но я не знаю, как интерфейс это с .formula.

Следующий код не работает. Я предполагаю, потому что я не могу поместить переменную диапазона в такую ​​строку.

 Sub Average() Dim c As Range Set c = Range("B5:B10") Range("F5").FormulaR1C1 = "=Average(" & c & ")" 

Есть ли способ использовать диапазоны с такими же формулами excel?

Он ищет адрес, а значение по умолчанию для объекта диапазона – значение:

 Range("F5").Formula = "=Average(" & c.Address(0,0) & ")" 

Если усредненный диапазон – это единственные данные на листе, вы можете найти «последнюю строку» и «последний столбец», а затем использовать эти переменные в формуле.

Чтобы найти последнюю строку: LastRow = Cells.Find («*», Range («A1»), xlFormulas, xlPart, _ xlByRows, xlPrevious, False, False) .Row

Чтобы найти последнюю букву столбца: LastCol = Split (Ячейки (1, ActiveSheet.Cells.Find (What: = "*", _ SearchDirection: = xlPrevious, _ SearchOrder: = xlByColumns) .Column) .Address, "$") ( 1)

Формула в будет меняться от: "= СРЕДНЕЕ (H5: K5)" до: "= СРЕДНЕЕ (H5:" & LastCol & Last Row & ")"

Давайте будем гением компьютера.