Есть ли в 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))}будто все сделано правильно.


4
Обратите внимание на такие ошеломляющие черепа, как я: введите формулу, затем нажмите Ctrl + Shift + Enter, я пытался сначала нажать Ctrl + Shift + Enter, а затем ввести формулу, которая не очень хорошо работала. : P
Бен

Excel не удобен для использования с матричными формулами. Это поведение действительно раздражает.
Pedro77

Не обязательно использовать формулу массива (см. Это и это . Более того, это может быть неудобно.
sancho.s Восстановите Монику

3
Это возвращает ошибку, если ваш диапазон также содержит нечисловые данные (например, ошибки текста или формулы)
CBRF23

22

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

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

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


Это работает, если ваш диапазон также содержит нечисловые данные (например, ошибки в тексте или формулах)
CBRF23

Хорошо, это отсутствующая функция в Excel, почему бы не max (abs ()) ??
Pedro77

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

Это также работает в OpenOffice
Вольфганг

2

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

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

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


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)

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


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)))


так чем же он отличается от ответа Джули?
phuclv

Это ответ на вопрос (запоздалый, да). Похоже на Джули, да, возможно, немного менее эффективно, но ИМХО немного более очевидно для того, кто наследует электронную таблицу.
ксеноид

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.