Страницы: 1
RSS
Найти значение из столбца А, соответствующее наибольшей разнице двух других столбцов
 
Здравствуйте.
Мне необходимо получить название из столбца А, которое соответствует максимальной разнице между C и B. При этом задача сделать это так, чтобы не создавать дополнительные столбцы.
Единственный способ который нашла я - делать доп.столбец и искать через Индекс+Поискпоз, но это не подходит.
Надеюсь на вашу помощь. Спасибо.
 
Код
Sub PoiskMax()
Dim i As Long
Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  Range("G1") = Cells(1, "C") - Cells(1, "B")
  Range("F1") = Cells(1, "A")
 For i = 2 To iLastRow
   If Cells(i, "C") - Cells(i, "B") > Range("G1") Then
     Range("G1") = Cells(i, "C") - Cells(i, "B")
     Range("F1") = Cells(i, "A")
   End If
 Next
End Sub
 
Kuzmich, спасибо! А какими-то встроенными функциями это не реализуется, да?
 
=ИНДЕКС($A$1:$A$14;АГРЕГАТ(15;6;СТРОКА($A$1:$A$14)/($C$1:$C$14-$B$1:$B$14=МАКС($C$1:$C$14-$B$1:$B$14));1))

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Формкла массива (ввод тремя клавишами):
=ИНДЕКС(A1:A14;ПОИСКПОЗ(МАКС(C1:C14-B1:B14);C1:C14-B1:B14;))
 
Или так (массивная):
Код
=ИНДЕКС(A1:A14;ПОИСКПОЗ(G1;C1:C14-B1:B14;))
 
Всем спасибо! Отличные решения, как раз, то что надо
 
При использовании функции АГРЕГАТ массивный ввод не требуется.
Код
=INDEX(A1:A140;AGGREGATE(15;6;ROW($1:$1000)/(MAX(C1:C140-B1:B140)=C1:C140-B1:B140);1))
Страницы: 1
Наверх