Среднее арифметическое в макросе

Автор baphomet, 26 декабря 2017, 14:24

0 Пользователи и 1 гость просматривают эту тему.

baphomet

Здравствуйте уважаемые пользователи. Вопрос может будет примитивный, но очень мне зависит на вашей помощи.
Подскажите пожалуйста как написать макрос который подсчитает среднее арифметическое из колон, а результаты впишет в любые ячейки. 

Вот например колона на каринке. Как подсчитать среднее арифметическое для ячеек А2:А25, а результат вписать в А26?

rami

Например, так:
Sub Main
Dim a(), svc, aver#
oSheet=ThisComponent.Sheets(0)
a=oSheet.getCellRangeByName("A2:A25").DataArray
svc=createUnoService("com.sun.star.sheet.FunctionAccess")
aver=svc.callFunction("AVERAGE",Array(a))
oSheet.getCellRangeByName("A26").setValue(aver)
End Sub

almaster13

Цитата: rami от 26 декабря 2017, 14:51Например, так:
Sub Main
Dim a(), svc, aver#
oSheet=ThisComponent.Sheets(0)
a=oSheet.getCellRangeByName("A2:A25").DataArray
svc=createUnoService("com.sun.star.sheet.FunctionAccess")
aver=svc.callFunction("AVERAGE",Array(a))
oSheet.getCellRangeByName("A26").setValue(aver)
End Sub

Здравствуйте! В строке, начинающейся с aver= выдается ошибка в библиотеке libreoffice 7.5.2

А хотелось бы использовать макрос для вычисления среднего значения столбца. Прошу помочь.

sokol92

В этом макросе предполагается, что ячейки A2:A25 не пустые и в них записаны числа.
Если это Ваш случай, то выгрузите, пожалуйста, образец файла для анализа.
Владимир.

almaster13

Спасибо! Действительно, если нет пустых ячеек, высчитывается среднее. Теперь буду думать, как исключить пустые ячейки (убрать их из усреднения).

sokol92

При получении свойства DataArray диапазона ячеек значения пустых ячеек преобразовываются в текстовую строку длины 0.
Если надо просто вычислить среднее в макросе, то можно самому "пробежаться" по массиву DataArray.
Владимир.