Existe uma função no Excel para encontrar o valor absoluto máximo de um intervalo?

15

Estou procurando uma função no Excel que se parece com

= MAX(ABS(A1:A10))

exceto ABS()não leva um intervalo de números.

O melhor que posso encontrar é:

= MAX(ABS(MIN(A1:A10)),ABS(MAX(A1:A10)))

Ele faz o truque, mas é bagunçado como todos e não acredito que não há uma maneira melhor. Alguma ideia?

Ben
fonte

Respostas:

23

Você deve inseri-lo como uma fórmula de matriz. Faça isso pressionando Ctrl. + Shift+ Enter. A fórmula aparecerá como {=MAX(ABS(A1:A10))}se tivesse sido feita corretamente.

Excellll
fonte
4
Nota para caveiras entorpecidas como eu: digite a fórmula e pressione Ctrl + Shift + Enter. Eu estava tentando pressionar ctrl + shift + enter primeiro e, em seguida, digite a fórmula, que realmente não funcionou tão bem. : P
Ben
O Excel não é fácil de usar quando se trata de fórmulas matriciais. Comportamentos é realmente irritante.
Pedro77
Não é obrigatória a utilização de uma fórmula de matriz (ver esta e esta Além disso, pode ser inconveniente..
sancho.s Restabeleça Monica
3
Isso retorna um erro se o intervalo também contém dados não numéricos (por exemplo, erros de texto ou fórmula)
CBRF23
22

Como não gosto de matrizes, usaria o seguinte:

=MAX(-MIN(range), MAX(range))

Isso funciona porque o único momento em que o absoluto do número mínimo seria maior que o valor máximo, se for um número negativo.

Julie
fonte
Isso funciona se o intervalo também contém dados não numéricos (por exemplo, erros de texto ou fórmula)
CBRF23
Bom, esse é um recurso que falta no excel, por que não max (abs ()) ??
Pedro77 31/05
@ Julie, sua resposta agora com mais de 5 anos ainda tem uma audiência. :) Você propõe uma alternativa que evita o uso da função array, que indica que considera uma vantagem. Você ainda não gosta de funções de matriz? Você poderia comentar por que você não gosta (ou não) de funções de matriz? Saber mais sobre suas considerações pode ajudar a mim e a outros leitores a avaliar qual solução gostaríamos de usar em que contexto.
Paul van Leeuwen
Isso também funciona no OpenOffice
Wolfgang Fahl
2

Tente esta fórmula ( daqui )

=MAX(INDEX(ABS(A1:A10),0,1))

Isto combina:

  • Os benefícios de uma fórmula sem matriz, como nesta resposta acima (veja isso para os benefícios da não matriz).
  • Inserir o intervalo de destino apenas uma vez, como nesta resposta acima (menos propenso a erros e mais fácil de modificar).
sancho.s Restabelecer Monica
fonte
1

Esta solução VBA também funciona.

Public Function absMax(values As Range)
    'returns the largest absolute value in a list of pos and neg numbers

    Dim myArray() As Double, i As Integer, numel As Integer
    numel = values.count
    ReDim myArray(1 To numel)
    For i = 1 To numel
        myArray(i) = Abs(values(i))
    Next i
    absMax = WorksheetFunction.Max(myArray)

End Function
  1. Abra seu editor VBA ( Alt+ F11)
  2. Inserir um novo módulo no painel direito
  3. Copie e cole o código no módulo
  4. Volte para o Excel e use =absMax(A1:A3)

insira a descrição da imagem aqui

VeryBadAss
fonte
0
=IF(ABS(LARGE(A1:A10,1))>ABS(SMALL(A1:A10,1)),LARGE(A1:A10,1),SMALL(A1:A10,1))

Isso encontrará o valor com o maior valor absoluto fora do intervalo, mas ainda assim retornará o valor real com seu sinal original (+/-) e não com o valor absoluto.

Rishi
fonte
(1) Como você sabe, esta não é uma resposta para esta pergunta. É a resposta para uma pergunta diferente. Preferimos manter as respostas com as perguntas que eles acompanham. Se você realmente deseja postar esta resposta, convém "fazer" a pergunta correspondente e respondê-la. ( Você pode fazer isso , mas, como você tem uma reputação baixa , pode ser necessário esperar várias horas antes de responder à sua própria pergunta.)
G-Man diz 'Reinstate Monica'
(2) O OP já tem uma resposta funcional para a pergunta, e a rejeita porque "é uma bagunça como todos, e eu não posso acreditar que não há uma maneira melhor". Então, por que postar uma resposta duas vezes maior que a que ele já tem? Por falar nisso, por que não dizer apenas =IF(ABS(MAX(A1:A10))>ABS(MIN(A1:A10)),MAX(A1:A10),MIN(A1:A10))?
G-Man diz 'Reinstate Monica'
@ G-Man Esta é a única solução de fórmula, publicada até agora, que mantém intacta a placa original, que não é explicitamente solicitada pelo OP, mas foi útil para mim. Discordo respeitosamente de ambas as suas avaliações.
Portland Runner
0

= MAX (MAX (X1: X5), ABS (MIN (X1: X5)))

TAZIOU
fonte
então, como é diferente da resposta de Julie?
phuclv
Esta é uma resposta para a pergunta (tardia, sim). Semelhante ao Julie, sim, um pouco menos eficiente, talvez, mas IMHO é um pouco mais óbvio para alguém que herda a planilha.
Xenoid
-1
=IF(MAX(A1:A10)+MIN(A1:A10)>0, MAX(A1:A10), MIN(A1:A10))
Andrew KIM
fonte
2
Preferimos respostas que incluam uma explicação.
Scott Scott