Позиция формулы Excel минимального значения

РЕДАКТИРОВАТЬ: Вероятно, это простой вопрос, в основном у меня есть три значения, скажем, 9, 4 и 7 в разных ячейках (не в таблице), я хочу найти минимум в порядке, а затем вернуть его относительную позиция, например: 9,4,7 вернет 2, так как 4 является минимумом и занимает второе место.

Какова правильная формула Excel для этого? Спасибо .

Решение: Спасибо всем за вашу помощь, я не думал, что Excel сможет справиться, если он не будет непрерывным. В итоге я использовал серию вложенных операторов IF, оператор AND и знаки ‹, чтобы выполнить работу :)


person user734699    schedule 17.05.2011    source источник
comment
Просто вопрос, для чего он нужен?   -  person pintxo    schedule 17.05.2011
comment
Я подозреваю, что следующая формула работает как формула массива: MAX(IF(INDEX(myareas,,,{1,2,3})=MIN(myareas),{1,2,3},0)); просто замените или определите myareas с вашими отдельными ячейками… Единственное, это не работает :/ Возможно, кто-то может объяснить?   -  person mousio    schedule 17.05.2011
comment
@mousio: я согласен, что можно было бы ожидать, что это сработает, но INDEX, похоже, не поддерживает аргументы массива (хотя любопытно, что ваша формула работает должным образом, когда массив вводится в две ячейки!) Обходной путь - использовать CHOOSE({1,2,3},A1,B2,C3)   -  person lori_m    schedule 04.06.2012


Ответы (5)


Вы можете просто;

=ROUND(MIN(A1,B1,C1), 0)

Ах, после уточнения;

Я не могу придумать способ сделать это с помощью формулы, это можно сделать с помощью VBA (предполагается, что все числовые ячейки + самый высокий индекс возвращается в результате столкновения)

=OrdinalMin(A2,B2,C2)

//in a module
Public Function OrdinalMin(ParamArray cells() As Variant) As Long
Dim i As Long, min As Double
For i = 0 To UBound(cells)
    If cells(i) <= cells(min) Then min = i
Next
OrdinalMin = min + 1
End Function
person Alex K.    schedule 17.05.2011
comment
Я хотел бы указать позицию минимума в массиве значений, а не округлять. - person user734699; 17.05.2011

Вот формула массива, которая должна работать. Предполагается, что значения находятся в A1, C3 и B4.

=MAX(IF(CHOOSE(TRANSPOSE({1,2,3}),$A$1,$C$3,$B$4)=MIN($A$1,$C$3,$B$4),TRANSPOSE({1,2,3}),0))

person eggplant_parm    schedule 17.05.2011
comment
Неплохо! Но нет абсолютно никакой необходимости использовать TRANSPOSE(…), и даже если бы это было, то вы могли бы просто использовать ; вместо ,, чтобы транспонировать его самостоятельно :] Ваше решение можно даже комбинировать с INDEX(…), если вы хотите использовать именованную ссылку. - person mousio; 17.05.2011
comment
Ты прав... не уверен, почему я это сделал. Спасибо за исправление - person eggplant_parm; 18.05.2011

мин: =MIN(A1,B2,C3)

должность: =MATCH(2,1/FREQUENCY(min,(A1,B2,C3)))

person lori_m    schedule 04.06.2012
comment
Я попробовал это, и это работает! Но я не понимаю механизм, который вы здесь используете, не могли бы вы объяснить или указать на ресурс? Спасибо. - person Reinier Torenbeek; 01.03.2013

К сожалению, функциям поиска Excel требуется непрерывный диапазон данных.

Для набора случайных ячеек используйте что-то вроде:

Public Function Match2(ByVal What As Variant, ByVal Where As Range) As Long
  Dim a As Range
  Dim c As Range
  Dim g As Long

  For Each a In Where.Areas
    For Each c In a.Cells
      g = g + 1

      If c.Value = What Then
        Match2 = g
        Exit Function
      End If
    Next
  Next
End Function

Применение:

=Match2(MIN(B6,F9,I16),(B6,F9,I16))
person GSerg    schedule 17.05.2011

Формула массива:

{=SUM((B$16:M$16)*(B23:M23=MIN(B23:M23)))}

где диапазон B$16:M$16 имеет индексы (т.е. 1, 2, 3, 4 и т. д.), а B23:M23 имеет рассматриваемые значения.

person Jon G    schedule 18.12.2012