Страницы: 1
RSS
Номер диапазона, в котором находится промежуточное значение
 
Добрый день!

Есть таблица:


Нужно значению 3 присвоить значение 2, при условии, что значения 1 входит в соответствующий диапазон.

Если я через =ИЛИ(ЕСЛИ(А2>=$D$2:$D$10;A2<=$E$2:$E$10)) нахожу наличие значения в указанных диапазонах, то как мне определить в какой именно диапазон(т.е. строку) я попал, или я все же не в ту сторону думаю?

Спасибо.
 
Цитата
определить в какой именно диапазон(т.е. строку) я попал, или я все же не в ту сторону думаю?
Код
Sub Diapazon()
Dim i As Long
Dim n As Long
Dim iLastRow As Long
Dim arr
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   Range("B2:B" & iLastRow).ClearContents
   arr = Range("A2:F" & iLastRow).Value
   For i = LBound(arr) To UBound(arr)
     For n = LBound(arr) To UBound(arr)
       If arr(i, 1) >= arr(n, 4) And arr(i, 1) <= arr(n, 5) Then
          arr(i, 2) = arr(n, 6)
          Exit For
       End If
     Next
   Next
   Range("A2").Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
 
Спасибо, я все же решил формулой массива:
Код
=ИНДЕКС($D$2:$F$11;ПОИСКПОЗ(ИСТИНА;A2<$E$2:$E$11;0);3)
 
Зачем так сложно?
=ВПР(A3;$D$3:$F$11;3)
Добавьте, если нужно, ограничение на верхнее и/или нижнее значение
 
Не получается только поиск позиции по двум условиям И(А>числа1;A<числа2), что не так с синтаксисом??
 
Где этот синтаксис?
 
Если я хочу в условии добавить два логических выражения

=ИНДЕКС($D$2:$F$11;ПОИСКПОЗ(ИСТИНА;И(A2>$D$2:$D$11;A2<$E$2:$E$11);0);3) выводит Н/Д

По такому условию смогу проверять непоследовательные интервалы и с пропущенными значениями между ними.
таблицу эту привел для примера (видимо не совсем удачного) в основной таблице нужна гибкая формула к положениям ячеек, поэтому чрез впр не вариант.
Изменено: dale92 - 08.04.2021 14:20:36
 
Пример надо показывать. Нормальный пример в файле Excel
 
Приложил :)  
 
=ЕСЛИ(A2<1;"";ЕСЛИ(A2>$E$11;"перебор";ВПР(A3;$D$3:$F$11;3)))
 
Я наверное все таки не правильно таблицу для примера составил. Хотелось более универсальное решение, нежели в рамках этого примера.
В итоге у меня получилось:
Код
=ИНДЕКС($D$2:$F$11;ПОИСКПОЗ(ИСТИНА;A2<=$E$2:$E$11*ИЛИ(ЕСЛИ(A2>=$D$2:$D$11;A2<=$E$2:$E$11));0);3)
Соответственно нет необходимости упорядочивать диапазоны по возрастанию и если число не входит ни в один диапазон - оно исключается (в случае с впр у меня все равно находило ближайший наименьший диапазон)
 
Изменено: dale92 - 08.04.2021 17:01:00
Страницы: 1
Наверх