Intervalo de passagem para a função ABS no VBA

1

Eu gostaria de realizar uma função que se parece com isso

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

Como meu alcance continua variando, eu gostaria de passar o intervalo como uma variável que se parece com isso

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

Eu recebo o erro como #NAME?

Mas se eu passar desse jeito

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

Eu recebo o erro como #VALUE!

Alguém pode ajudar?

    
por NK1 12.04.2013 / 18:27

2 respostas

1

Substitua a linha Selection.FormulaArray = "=GEOMEAN(ABS(Range1))" em seu código pelo seguinte:

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

Eu não testei isso, mas isso parece certo. (Nota: sua convenção de nomenclatura é confusa, pois Range1 é realmente uma string em vez de um intervalo.

    
por 13.04.2013 / 06:44
0

ABS apenas retorna o valor absoluto para um número não alcance. Talvez você queira a função AVEDEV que retorna a média dos desvios absolutos dos pontos de dados da sua média.

Para GEOMEAN, você precisa fazer o loop do intervalo no código, aplicando ABS a cada valor e criando um novo intervalo para passar para a função.

Ou, de acordo com esta resposta do StackOverflow , use uma fórmula alternativa:

EXP(AVERAGE(LN(A1:A171)))
    
por 12.04.2013 / 19:44