Есть ли в Excel функция для нахождения максимального абсолютного значения диапазона?

15

Я ищу функцию в Excel, которая выглядит примерно так

= MAX(ABS(A1:A10))

кроме ABS()как не принимать диапазон чисел.

Лучшее, что я могу придумать, это:

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

Это делает трюк, но это грязно как черт, и я не могу поверить, что нет лучшего способа. Есть идеи?

Бен
источник

Ответы:

23

Вы должны ввести его как формулу массива. Сделайте это, нажав Ctrl. + Shift+ Enter. Формула будет выглядеть так, как {=MAX(ABS(A1:A10))}будто все сделано правильно.

Excellll
источник
4
Обратите внимание на такие ошеломляющие черепа, как я: введите формулу, затем нажмите Ctrl + Shift + Enter, я пытался сначала нажать Ctrl + Shift + Enter, а затем ввести формулу, которая не очень хорошо работала. : P
Бен
Excel не удобен для использования с матричными формулами. Это поведение действительно раздражает.
Pedro77
Не обязательно использовать формулу массива (см. Это и это . Более того, это может быть неудобно.
sancho.s Восстановите Монику
3
Это возвращает ошибку, если ваш диапазон также содержит нечисловые данные (например, ошибки текста или формулы)
CBRF23
22

Я не люблю массивы, поэтому я бы использовал следующее:

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

Это работает, потому что единственный раз, когда абсолютное значение минимального числа будет выше, чем максимальное значение, если оно является отрицательным числом.

Julie
источник
Это работает, если ваш диапазон также содержит нечисловые данные (например, ошибки в тексте или формулах)
CBRF23
Хорошо, это отсутствующая функция в Excel, почему бы не max (abs ()) ??
Pedro77
@ Джули, у тебя сейчас + 5-летний ответ все еще есть аудитория. :) Вы предлагаете альтернативу, которая избегает использования функции массива, которую вы указываете, что считаете плюсом. Вам все еще не нравятся функции массива? Не могли бы вы прокомментировать, почему вам не нравятся (или не нравятся) функции массива? Знание ваших соображений может помочь мне и другим читателям оценить, какое решение мы хотели бы использовать в каком контексте.
Пол ван Леувен
Это также работает в OpenOffice
Вольфганг
2

Попробуйте эту формулу ( отсюда )

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

Он сочетает в себе:

sancho.s Восстановить Монику
источник
1

Это решение VBA тоже работает.

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. Откройте редактор VBA ( Alt+ F11)
  2. Вставьте новый модуль на правой панели
  3. Скопируйте и вставьте код в модуль
  4. Вернитесь в Excel и используйте =absMax(A1:A3)

введите описание изображения здесь

VeryBadAss
источник
0
=IF(ABS(LARGE(A1:A10,1))>ABS(SMALL(A1:A10,1)),LARGE(A1:A10,1),SMALL(A1:A10,1))

При этом будет найдено значение с наибольшим абсолютным значением вне диапазона, но все равно будет возвращено фактическое значение с его первоначальным знаком (+/-), а не абсолютное значение.

Риши
источник
(1) Как вы знаете, это не ответ на этот вопрос. Это ответ на другой вопрос. Мы предпочитаем хранить ответы на вопросы, которые они задают. Если вы действительно хотите опубликовать этот ответ, вы можете «задать» соответствующий вопрос, а затем ответить на него. ( Вам разрешено делать это , но, поскольку у вас низкая репутация , вам, возможно, придется подождать несколько часов, прежде чем вы сможете ответить на свой вопрос.)
G-Man говорит: «Восстановите Монику»
(2) У ОП уже есть рабочий ответ на этот вопрос, и он отвергает его, потому что «это грязно, как черт, и я не могу поверить, что нет лучшего способа». Так зачем публиковать ответ, который вдвое длиннее того, который у него уже есть? В этом отношении, почему бы не сказать просто =IF(ABS(MAX(A1:A10))>ABS(MIN(A1:A10)),MAX(A1:A10),MIN(A1:A10))?
G-Man говорит: «Восстановите Монику»
@ G-Man Это единственное формульное решение, опубликованное до сих пор, которое сохраняет первоначальный знак нетронутым, который явно не запрашивается ОП, но был полезен для меня. Я с уважением не согласен с обеими вашими оценками.
Портленд Бегун
0

= MAX (МАКС (X1: X5), ABS (MIN (X1: Х5)))

TAZIOU
источник
так чем же он отличается от ответа Джули?
phuclv
Это ответ на вопрос (запоздалый, да). Похоже на Джули, да, возможно, немного менее эффективно, но ИМХО немного более очевидно для того, кто наследует электронную таблицу.
ксеноид
-1
=IF(MAX(A1:A10)+MIN(A1:A10)>0, MAX(A1:A10), MIN(A1:A10))
Андрей КИМ
источник
2
Мы предпочитаем ответы, которые включают в себя объяснение.
Скотт