Existe-t-il une fonction dans Excel permettant de rechercher la valeur absolue maximale d'une plage?


13

Je cherche une fonction dans Excel qui ressemble à quelque chose comme

= MAX(ABS(A1:A10))

sauf ABS() ne prend pas une plage de nombres.

Le mieux que je puisse trouver est:

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

Ça fait l'affaire, mais c'est désordonné et je n'arrive pas à croire qu'il n'y ait pas de meilleur moyen. Des idées?

Réponses:


21

Vous devez l'entrer sous forme de formule matricielle. Faites-le en appuyant sur Ctrl . + Décalage + Entrer . La formule apparaîtra comme {=MAX(ABS(A1:A10))} si fait correctement.


4
Note aux engourdis comme moi: Entrez la formule puis appuyez sur Ctrl + Maj + Entrée. J'essayais d'appuyer sur Ctrl + Maj + Entrée, puis entrez la formule qui ne fonctionnait pas si bien. : P
Ben

Excel n’est pas convivial en ce qui concerne les formules matricielles. C'est comportement est vraiment énervant.
Pedro77

Il n’est pas obligatoire d’utiliser une formule matricielle (voir ce et ce . De plus, cela pourrait être gênant.
sancho.s

2
Cela renvoie une erreur si votre plage contient également des données non numériques (erreurs de texte ou de formule, par exemple).
CBRF23

19

Je n'aime pas les tableaux, j'utiliserais donc les éléments suivants:

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

Cela fonctionne car le seul moment où le nombre absolu du nombre minimal est supérieur à celui de la valeur maximale est le nombre négatif.


Cela fonctionne si votre plage contient également des données non numériques (erreurs de texte ou de formule, par exemple).
CBRF23

Bien, c’est une fonctionnalité manquante dans Excel, pourquoi pas max (abs ()) ??
Pedro77

@ Julie, votre réponse maintenant âgée de plus de 5 ans a encore un public. :) Vous proposez une alternative qui évite d'utiliser la fonction tableau, que vous indiquez considérer comme un plus. Vous n'aimez toujours pas les fonctions de tableau? Pourriez-vous dire pourquoi vous n'aimez pas (ou n'aimez pas) les fonctions de tableau? En savoir plus sur vos considérations pourrait m'aider et aider d'autres lecteurs à évaluer quelle solution nous aimerions utiliser dans quel contexte.
Paul van Leeuwen


1

Cette solution VBA fonctionne aussi.

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. Ouvrez votre éditeur VBA ( Alt + F11 )
  2. Insérer un nouveau module dans le volet de droite
  3. Copier et; coller le code dans le module
  4. Retournez dans Excel et utilisez =absMax(A1:A3)

enter image description here


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

Ceci trouvera la valeur avec la plus grande valeur absolue en dehors de la plage mais retournera toujours la valeur réelle avec son signe d'origine (+/-) et non la valeur absolue.


(1) Comme vous le savez, ceci n’est pas une réponse à ce question. C'est la réponse à une question différente. Nous préférons garder les réponses aux questions qui les accompagnent. Si vous souhaitez vraiment poster cette réponse, vous pouvez «poser» la question correspondante, puis y répondre. ( Vous êtes autorisé à le faire , mais puisque tu as un faible réputation , vous devrez peut-être attendre plusieurs heures avant de pouvoir répondre à votre propre question.)
G-Man

(2) Le PO a déjà une réponse fonctionnelle à la question et la rejette parce que «c’est désordonné et que je ne peux pas croire qu’il n’ya pas de meilleur moyen.» Alors, pourquoi poster une réponse deux fois plus longue que celle a déjà? D'ailleurs, pourquoi ne pas dire juste =IF(ABS(MAX(A1:A10))>ABS(MIN(A1:A10)),MAX(A1:A10),MIN(A1:A10))?
G-Man

@ G-Man C'est la seule solution de formule, publiée jusqu'à présent, qui conserve le signe original, ce qui n'est pas explicitement demandé par l'OP mais m'a été utile. Je suis respectueusement en désaccord avec vos deux évaluations.
Portland Runner

0

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


Alors, en quoi est-ce différent de la réponse de Julie?
phuclv

Ceci est une réponse à la question (tardive, oui). Semblable à Julie, certes, légèrement moins efficace, mais à mon humble avis, un peu plus évident pour ceux qui héritent du tableur.
xenoid

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

2
Nous préférons les réponses qui incluent une explication.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.