Esiste una funzione in Excel per trovare il valore assoluto massimo di un intervallo?


15

Sto cercando una funzione in Excel che assomigli a qualcosa

= MAX(ABS(A1:A10))

tranne ABS()che non accetta un intervallo di numeri.

Il meglio che posso inventare è:

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

Fa il trucco, ma è disordinato come diamine e non riesco a credere che non c'è un modo migliore. Qualche idea?

Risposte:


23

È necessario inserirlo come una formula di matrice. Fallo premendo Ctrl. + Shift+ Enter. La formula apparirà come {=MAX(ABS(A1:A10))}se fosse stata eseguita correttamente.


4
Nota ai teschi intorpiditi come me: inserisci la formula quindi premi Ctrl + Maiusc + Invio, stavo provando a premere prima ctrl + Maiusc + Invio, quindi inserisci la formula, che non ha funzionato così bene. : P
Ben,

Excel non è facile da usare quando si tratta di formule matriciali. I suoi comportamenti sono davvero fastidiosi.
Pedro77,

Non è obbligatorio usare una formula array (vedi questo e questo . Inoltre, potrebbe essere scomodo.
sancho.s Reinstate Monica

3
Questo restituisce un errore se il tuo intervallo contiene anche dati non numerici (ad es. Errori di testo o formula)
CBRF23

22

Non mi piacciono gli array, quindi vorrei usare quanto segue:

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

Questo funziona perché l'unica volta in cui l'assoluto del numero minimo è maggiore del valore massimo se si tratta di un numero negativo.


Funziona se il tuo intervallo contiene anche dati non numerici (ad es. Errori di testo o formula)
CBRF23

Bello, questa è una caratteristica mancante in Excel, perché non max (abs ()) ??
Pedro77,

@Julie la tua risposta ora + 5 anni ha ancora un pubblico. :) Proponi un'alternativa che evita di usare la funzione array, che indichi di considerare un plus. Non ti piacciono ancora le funzioni di array? Potresti commentare perché non ti sono piaciute (o non ti sono piaciute) le funzioni di array? Conoscere di più sulle tue considerazioni potrebbe aiutare me e altri lettori a valutare quale soluzione vorremmo usare in quale contesto.
Paul van Leeuwen,

Questo funziona anche in OpenOffice
Wolfgang Fahl il


1

Anche questa soluzione VBA funziona.

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. Apri il tuo editor VBA ( Alt+ F11)
  2. Inserire un nuovo modulo nel riquadro destro
  3. Copia e incolla il codice nel modulo
  4. Torna a Excel e usa =absMax(A1:A3)

inserisci qui la descrizione dell'immagine


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

Questo troverà il valore con il valore assoluto più grande fuori dall'intervallo ma restituirà comunque il valore effettivo con il suo segno originale (+/-) e non il valore assoluto.


(1) Come sapete, questa non è una risposta a questa domanda. È la risposta a una domanda diversa. Preferiamo mantenere le risposte con le domande con cui vanno. Se vuoi davvero pubblicare questa risposta, potresti voler "porre" la domanda corrispondente e quindi rispondere. ( Ti è permesso farlo , ma, dato che hai una bassa reputazione , potresti dover aspettare diverse ore prima di poter rispondere alla tua domanda.)
G-Man dice 'Reinstate Monica' il

(2) L'OP ha già una risposta funzionante alla domanda e la respinge perché "è disordinato come diamine e non posso credere che non ci sia un modo migliore". Quindi perché pubblicare una risposta che è doppia rispetto a quella che ha ha già? Del resto, perché non dire solo =IF(ABS(MAX(A1:A10))>ABS(MIN(A1:A10)),MAX(A1:A10),MIN(A1:A10))?
G-Man dice "Ripristina Monica" il

@ G-Man Questa è l'unica soluzione formula, pubblicata finora, che mantiene intatto il segno originale, che non è esplicitamente richiesto dall'OP ma è stato utile per me. Sono in disaccordo con entrambe le tue valutazioni.
Portland Runner,

0

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


quindi in cosa differisce dalla risposta di Julie?
phuclv,

Questa è una risposta alla domanda (tardiva, sì). Simile a Julie, sì, un po 'meno efficiente, forse, ma IMHO un po' più ovvio per qualcuno che eredita il foglio di calcolo.
xenoide,

-1
=IF(MAX(A1:A10)+MIN(A1:A10)>0, MAX(A1:A10), MIN(A1:A10))

2
Preferiamo risposte che includano una spiegazione.
Scott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.