Czy w programie Excel jest funkcja znajdowania maksymalnej wartości bezwzględnej zakresu?


15

Szukam funkcji w programie Excel, która wygląda mniej więcej tak

= MAX(ABS(A1:A10))

z wyjątkiem, ABS()że nie bierze zakresu liczb.

Najlepsze, co mogę wymyślić, to:

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

To załatwia sprawę, ale jest niechlujna, ponieważ wszyscy do cholery i nie mogę uwierzyć, że nie ma lepszego sposobu. Jakieś pomysły?

Odpowiedzi:


23

Musisz wprowadzić go jako formułę tablicową. Zrób to, naciskając Ctrl. + Shift+ Enter. Formuła pojawi się tak, {=MAX(ABS(A1:A10))}jakby została wykonana poprawnie.


4
Uwaga dla zdrętwiałych czaszek takich jak ja: wprowadź formułę, a następnie naciśnij Ctrl + Shift + Enter, próbowałem najpierw nacisnąć Ctrl + Shift + Enter, a następnie wprowadź formułę, która tak naprawdę nie działała tak dobrze. : P
Ben

Excel nie jest przyjazny dla użytkownika, jeśli chodzi o formuły macierzowe. Zachowania są naprawdę denerwujące.
Pedro77

Użycie formuły tablicowej nie jest obowiązkowe (zobacz to i to . Ponadto może być niewygodne.
sancho.s Przywróć Monikę

3
Zwraca błąd, jeśli twój zakres zawiera również dane nienumeryczne (np. Błędy tekstu lub formuły)
CBRF23

22

Nie lubię tablic, więc użyłbym następujących:

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

Działa to, ponieważ jedyny moment, w którym wartość bezwzględna liczby minimalnej byłaby wyższa niż wartość maksymalna, jeśli jest to liczba ujemna.


Działa to, jeśli twój zakres zawiera również dane nienumeryczne (np. Błędy tekstu lub formuły)
CBRF23

Fajnie, jest to brakująca funkcja w programie Excel, dlaczego nie max (abs ()) ??
Pedro77

@Julie Twoja teraz + 5-letnia odpowiedź wciąż ma odbiorców. :) Proponujesz alternatywę, która pozwala uniknąć korzystania z funkcji tablicowej, co uważasz za plus. Czy nadal nie lubisz funkcji tablicowych? Czy mógłbyś skomentować, dlaczego nie lubisz (lub nie) funkcji tablicowych? Wiedza na temat twoich rozważań może pomóc mi i innym czytelnikom ocenić, które rozwiązanie chcielibyśmy zastosować w jakim kontekście.
Paul van Leeuwen

Działa to również w OpenOffice
Wolfgang Fahl,


1

To rozwiązanie VBA również działa.

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. Otwórz swój edytor VBA ( Alt+ F11)
  2. Wstaw nowy moduł w prawym okienku
  3. Skopiuj i wklej kod do modułu
  4. Wróć do Excela i użyj =absMax(A1:A3)

wprowadź opis zdjęcia tutaj


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

Znajduje to wartość o największej wartości bezwzględnej poza zakresem, ale nadal zwraca wartość rzeczywistą ze swoim pierwotnym znakiem (+/-), a nie wartością bezwzględną.


(1) Jak wiadomo, nie jest to odpowiedź na to pytanie. To odpowiedź na inne pytanie. Wolimy zachować odpowiedzi wraz z pytaniami, które dotyczą. Jeśli naprawdę chcesz opublikować tę odpowiedź, możesz „zadać” odpowiednie pytanie, a następnie odpowiedzieć na nie. ( Możesz to zrobić , ale ponieważ masz niską reputację , być może będziesz musiał poczekać kilka godzin, zanim odpowiesz na własne pytanie.)
G-Man mówi „Przywróć Monikę”

(2) OP ma już roboczą odpowiedź na pytanie i odrzuca je, ponieważ „jest niechlujny, jak wszyscy do cholery i nie mogę uwierzyć, że nie ma lepszego sposobu”. Po co więc zamieszczać odpowiedź dwa razy dłuższą niż ta, którą już ma? Jeśli o to chodzi, dlaczego nie powiedzieć po prostu =IF(ABS(MAX(A1:A10))>ABS(MIN(A1:A10)),MAX(A1:A10),MIN(A1:A10))?
G-Man mówi „Przywróć Monikę”

@ G-Man Jest to jedyne dotychczas opublikowane rozwiązanie formuły, które zachowuje oryginalny znak nienaruszony, co nie jest wyraźnie wymagane przez OP, ale było dla mnie pomocne. Z szacunkiem nie zgadzam się z obiema ocenami.
Portland Runner,

0

= MAKS. (MAKS. (X1: X5), ABS (MIN (X1: X5)))


więc czym różni się od odpowiedzi Julie?
phuclv

To jest odpowiedź na pytanie (spóźnione, tak). Podobnie jak Julie, tak, może nieco mniej wydajne, ale IMHO jest nieco bardziej oczywiste dla kogoś, kto dziedziczy arkusz kalkulacyjny.
ksenoid

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

2
Wolimy odpowiedzi, które zawierają wyjaśnienie.
Scott
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.