Возможно вместо VBA использовать python или php, имхо на VBA проще реализовать.
ТЗ написано под VBA/xlsx
--------------
Есть 2 таблицы service_values и counters
Для каждого непустого и ненулевого counter_id из таблицы counters рассчитать среднее и СКО и заполнить counters.avg_value и counters.stdev_value соответственно.
Расчет среднего и СКО ведется по данным таблицы service_values , где для каждого counter_id формируется массив из service_values.value и соответствующий ему массив service_values.created, затем выполняется сортировка service_values.value, но по полю service_values.created. По возрастанию или убыванию неважно.
Исходная выборка для расчета среднего и СКО получается как разность соседних отсортированных значений service_values.value.
Написать функцию на VBA, которая заполняет counters.avg_value и counters.stdev_value в файле counters.xslx по находящемуся в этой же папке файле service_values.xlsx(формат может быть и csv мне непринципиально). Количество строк в обоих файлах может быть произвольным, первая строка обязательно присутствует и содержит названия полей. Имена файлов всегда одинаковые, расположение папки, где они лежат, может быть разным.
На выходе функции мы получаем тот же counters.xlsx, но с заполненными полями avg_value и stdev_value.
Если заполняемые поля не пустые, все равно пишем в них вычисленные значения.
В дальнейшем , функция скорее всего будет переводиться на другой язык программирования. Поэтому она должна быть написана максимально академично, без использования встроенных функций Эксель и трюков, вроде копирования отфильтрованного листа на промежуточный лист и т.п.
Выборочное СКО считается традиционно
Приемка:
я генерирую другие файлы counters.xslx и service_values.xlsx, запускаю по ним функцию и проверяю результаты заполнения полей путем пересчета. Если значения, размещенные в соответствующих полях не сходятся с моими для хотя бы одного counter_id из случайно выбранных объясняю как считал и отправляю на доработку.
Отвечу на любые вопросы и разберу с Вами в личке примеры расчета до начала работы.