13

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

= MAX(ABS(A1:A10))

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

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

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

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

7 ответов7

21

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

19

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .