Я хотел бы создать макрос, который усредняет значения каждых 12 элементов в одном столбце на листе Excel, например, A1 - A12 затем A13 - A24 и т.д., И помещает результаты в ячейки C12 , C24 и т.д.

Снимок экрана рабочего листа

Я не уверен, как начать; Вы могли бы посоветовать?

3 ответа3

5

Вам не нужен код для этого. Введите формулу среднего в ячейку C12 =AVERAGE(A1:A12) . Затем выберите C1-C12 и перетащите вниз маркер заполнения.

Изменить для уточнения

Дескриптор заливки скопирует выбранный диапазон вниз и сохранит шаблон выбранного диапазона. В этом случае первые 11 ячеек выбранного диапазона не заполнены, и только 12-я ячейка содержит формулу. Если выбраны C1-C12 и ручка заливки перемещается вниз, следующие 11 ячеек будут пустыми, а ячейка C24 будет иметь формулу. Перетащите вниз дальше, и это будет еще 11 пустых ячеек, пока ячейка C36 не получит формулу.

Это шаблон.

2

Используя эту страницу в качестве отправной точки, вы можете использовать формулу с MOD() чтобы получить ваши средние.

Начиная с C12, поместите эту формулу и перетащите вниз:

=IF(MOD(ROW(),12)=0,AVERAGE(OFFSET($A1,(ROW()-ROW($C12))*12,,12,)),"")

Редактировать: Святая корова, вышесказанное является излишним. Используйте это вместо:

=IF(MOD(ROW(),12)=0,AVERAGE(A1:A12),"")
-2

Эти несколько строк могут помочь вам создать MACRO, чтобы получить среднее значение для каждых 12 строк.

Примечание. Чтобы получить среднее значение для первых 12 рядов, выберите любую ячейку строки 1, например B1, C1 или D1, и запустите этот макрос, а затем просто заполните ячейку, чтобы получить среднее значение для другого набора из 12 рядов.

Sub Average()
ActiveCell.Formula = "=AVERAGE(OFFSET($A$1, (ROW() - ROW($A$1)) * 12, 0, 12, 1))"
End Sub

Или вы можете использовать эту формулу также как не VBA решение.

C2 =AVERAGE(OFFSET($A$2,(ROW()-ROW($C$2))*12,,12,))

Отредактировано: оба решения имеют умный подход, где строки для получения среднего значения доступны для редактирования.

Например, если требуется рассчитать Average of every 16 rows то для решения без VBA *12,,12, ,, 12 следует заменить на * 16 ,, *16,,16, аналогично для решения VBA *12,0,12,1 должно быть *16,0,16,1

NB

  • Заполните формулу без VBA.
  • При необходимости измените ссылки на ячейки в формуле и коде

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .