Передача диапазона функции ABS в VBA

Я хотел бы выполнить функцию, которая выглядит следующим образом

Selection.FormulaArray = "=GEOMEAN(ABS((C646:E646)))"

Так как мой диапазон продолжает меняться, я хотел бы передать диапазон как переменную, которая выглядит так

Range1 = Range("C646", Range("C646").Offset(0, 2)).Address(False, False)
Selection.FormulaArray = "=GEOMEAN(ABS(Range1))"

Я получаю ошибку как #NAME?

но если я пройду этот путь

x = Range("C646").Address(False, False)    
Y = Range("C646").Offset(0, 2).Address(False, False)    
Selection.FormulaArray = "=GEOMEAN(ABS((x:y)))"

Я получаю ошибку как #VALUE!

может кто-нибудь помочь?

13
задан Simon
10.12.2022 2:34 Количество просмотров материала 3337
Распечатать страницу

2 ответа

заменить строку Selection.FormulaArray = "=GEOMEAN(ABS(Range1))" в коде следующим образом:

Selection.FormulaArray = "=GEOMEAN(ABS(" & Range1 & "))"

Я не проверял это, но это кажется правильным. (Примечание: ваше соглашение об именовании сбивает с толку, так как Range1 действительно строка, а не диапазон.

1
отвечен Excellll 2022-12-11 10:22

ABS просто возвращает абсолютное значение числа не диапазон. Возможно, вы хотите AVEDEV функция, которая возвращает среднее абсолютных отклонений точек данных от их среднего значения.

для GEOMEAN вам либо нужно зациклить диапазон в коде, применяя ABS к каждому значению и создавая новый диапазон для передачи функции.

или по этой StackOverflow ответ использовать альтернативную формулу:

EXP(AVERAGE(LN(A1:A171)))
0
отвечен Brad Patton 2022-12-11 12:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх