Chciałbym wykonać funkcję, która wygląda tak
Selection.FormulaArray = "=GEOMEAN(ABS((C646:E646)))"
Ponieważ mój zasięg ciągle się zmienia, chciałbym przekazać zakres jako zmienną, która wygląda tak
Range1 = Range("C646", Range("C646").Offset(0, 2)).Address(False, False)
Selection.FormulaArray = "=GEOMEAN(ABS(Range1))"
Otrzymuję błąd jako #NAME?
Ale jeśli przejdę w ten sposób
x = Range("C646").Address(False, False)
Y = Range("C646").Offset(0, 2).Address(False, False)
Selection.FormulaArray = "=GEOMEAN(ABS((x:y)))"
Dostaję błąd jako # WARTOŚĆ!
Czy ktoś może pomóc?
ABS po prostu zwraca wartość bezwzględną dla liczby, a nie zakresu. Być może chcesz AVEDEV funkcja, która zwraca średnią bezwzględnych odchyleń punktów danych od ich średniej.
Dla GEOMEAN musisz albo zapętlić zakres w kodzie stosując ABS do każdej wartości i zbudować nowy zakres, aby przejść do funkcji.
Lub zgodnie z tym Odpowiedź StackOverflow użyj alternatywnej formuły:
źródło