Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 30.01.2010, 02:26   #1
fury1986
Новичок
Джуниор
 
Регистрация: 30.01.2010
Сообщений: 2
По умолчанию Поиск в диапазоне с двумя условиями

Есть диапазон, идущий в горизонтальном направлении. Т.е. диапазон берётся из одной строки, но разных столбцов:

__А10_|__B10_|__C10_|__D10_|__E10_|
-0.69 | 2.11 | -1.70 | 0.89 | 1.20

Есть два пороговых значения: минимума и максимума. Нужно проверить диапазон на их наличие и вернуть первое из них (в случае если встречается значение меньше порогового минимума, то возвращается пороговый минимум; если встречается значение больше порогового максимума, то возвращается пороговый максимум; иначе последнее значение диапазона), либо значение в последнем столбце, если ни одно из них не найдено.
Допустим пороговый минимум у нас -0.25, а максимум 2.00, то из приведённого в качестве примера диапазона должно вернуться -0.25 (-0.69 меньше чем -0.25, соответственно возвращаем пороговый минимум -0.25; в диапазоне также присутствует пороговый максимум — 2.11, но он идёт позже, поэтому его не учитываем).
Допустим пороговый минимум у нас -1.50, а пороговый максимум 1.50. Значит из приведённого примера должно вернуться 1.50 (2.11 больше порогового максимума 1.50 и встречается раньше, чем пороговый минимум).
Помогите с формулой для этой задачи. Пока что пришёл к такой формуле:

ЕСЛИ(МИНА(A10:E10) < -1.50;1.50;ЕСЛИ(МАКСА(A10:E10) > 1.50;1.50;E10))

Но это формула работает не совсем так, как мне надо. Если в строке присутствует пороговый минимум, то она все равно вернёт его, даже если он идёт позже порогового максимума.
Подскажите решение.
fury1986 вне форума Ответить с цитированием
Старый 30.01.2010, 14:50   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,904
По умолчанию

Код:
=OTBOR(-1,5;1,5;A10:E10)

Public Function OTBOR(minn As Double, maksim As Double, rng As Range)
 Dim rez As Double

For n = 1 To rng.Columns.Count
            rez = rng(1, n)
      Select Case rez
                Case Is < minn
        OTBOR = minn: Exit Function
              Case Is > maksim
        OTBOR = maksim: Exit Function
      End Select

Next
OTBOR = rez
End Function
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 30.01.2010 в 17:00.
doober вне форума Ответить с цитированием
Старый 31.01.2010, 18:54   #3
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 231
По умолчанию

to fury1986
не все понятно из Ваших объяснений...
если значение ниже минимального встречается в ячейке "В10" - тогда здесь прописывается ограниченный минимум. А потом в D10 , будет величина больше максимума...
D10 тоже должна менять значение или замена должна быть только 1 раз?
В предлагаемом мною варианте машина меняет число только 1 раз , а дальше все остается без изменений.
Вложения
Тип файла: zip инет.xls.zip (5.0 Кб, 17 просмотров)
0mega вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула со многими условиями KlerKK Microsoft Office Excel 2 10.12.2009 04:33
Поиск диапазоне по формату ячейки Meta2 Microsoft Office Excel 2 11.11.2009 13:57
Компоновка со сложными условиями A-ton Microsoft Office Excel 2 28.08.2009 06:02
построить график с двумя условиями Nostalgia Microsoft Office Excel 8 29.03.2009 16:26
Поиск min/max данных с несколькими условиями - нужна помощь! /nort/ Microsoft Office Excel 3 16.03.2008 00:13


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840