Страницы: 1
RSS
Расчет среднего в динамическом массиве, Расчет среднего в динамическом массиве при помощи VBA
 
Всем привет!

В таблице имеется столбец А с данными. Каждая цифра в этом столбце помечается 1 и 2 (при помощи цикла for..next) в соседнем столбце В.
Таким образом, в моем случае получается 3 динамических массива:
по цифре 1 массивы 10-20-30 и 60-70-80
по цифре 2 массив 40-50
В каждом из этих массивов мне нужно рассчитать среднее и записать рядом.
в 1 массиве среднее 20, во 2 - 45, а 3 - 70.

Если данных в столбце несколько тысяч, то как сделать расчет средних при помощи VBA?

Образец таблицы внизу.

Заранее спасибо за помощь!    :)
101
20120
301
402
50245
601
70170
801
Изменено: leonardik - 28.08.2018 20:27:08
 
Цитата
leonardik написал:
Образец таблицы внизу
Внизу должен быть Excel-файл, а не описание таблицы.
 
В отдельный столбец выведите все числа со второго столбца.
СРЗНАЧЕСЛИ()
 
Видимо некорректно вопрос сформулировал...
Рабочий файл вложил.

В моем случае, если применить формулу СРЗНАЧЕСЛИ()
Мне нужно, чтобы среднее считалось в каждом из диапазонов ограниченных 1, то есть в моем  случае - А1:А6, А10:А12 и А15:А16.
Также рассчитал средние в этих диапазонах: 12,5; 20 и 24,5 соответственно.

В моей работе размеры диапазонов разные и их количество может быть несколько сотен или тысяч.
 
Формула массива, ввод тремя клавишами
=ЕСЛИ(B2-B3=1;СРЗНАЧ(ИНДЕКС($A$1:A2;МАКС(ЕСЛИ($B$1:B2="";СТРОКА($B$1:B2)+1))):A2);)
 
Код
Sub iMean()
Dim Rng As Range
Dim iSumma As Double
  For Each Rng In Range("B1:B" & Cells(Rows.Count, "A").End(xlUp).Row).SpecialCells(2, 1).Areas
    Rng.Cells(1, 2) = WorksheetFunction.Average(Rng.Offset(, -1))
    iSumma = iSumma + WorksheetFunction.Sum(Rng.Offset(, -1))
  Next
    Range("D3") = iSumma
End Sub

Изменено: Kuzmich - 01.09.2018 21:55:50
 
Всем большое спасибо!  :)  Все получилось!
Страницы: 1
Наверх