Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 11:28   #1
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию подскажите решение -найти значение в диапазоне

есть диапазон:

Код:
Range(Cells(5, "O"), Cells(437, "AT"))
в нем записаны разные значения цифровые, текстовые и текстово-числовые.

и есть проверяемая ячейка с текстово-числовым значением или просто числовым (это номенклатурный номер).

мне надо определить есть ли в диапазоне ячейка которая содержит значение проверяемой ячейки... только надо что-то побыстрее т.к. диапазон в перспективе будет расширяться а проверяемых ячеек будет тоже не одна а прилично.
kievlyanin вне форума Ответить с цитированием
Старый 19.08.2009, 11:41   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Один из возможных вариантов:
Код:
Sub test()
    Dim ra As Range: Set ra = Range(Cells(5, "O"), Cells(437, "AT")) ' диапазон
    Dim cell As Range: Set cell = [d2]    ' проверяемая ячейка
    Dim x As Boolean: x = Not ra.Find(cell) Is Nothing
    If x Then MsgBox "Есть в диапазоне такое значение" Else MsgBox "Такого значения нет"
End Sub
То же самое, только покороче:
Код:
Sub test2()
    MsgBox IIf(Range(Cells(5, "O"), Cells(437, "AT")).Find([d2]) Is Nothing, _
               "Такого значения нет", "Есть в диапазоне такое значение"), vbInformation
End Sub
Код:
Sub test3()
    MsgBox IIf([o5:at437].Find([d2]) Is Nothing, "Такого значения нет", "Есть в диапазоне такое значение"), 64
End Sub
Ещё короче:
Код:
Sub test4()
    MsgBox IIf([or(o5:at437=d2)], "Есть в диапазоне такое значение", "Такого значения нет"), 64
End Sub

Последний раз редактировалось EducatedFool; 19.08.2009 в 11:47.
EducatedFool вне форума Ответить с цитированием
Старый 19.08.2009, 11:42   #3
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Попробуйте функцию ВПР, или "Индекс+ПоискПозиции"
Иванов_ДМ вне форума Ответить с цитированием
Старый 19.08.2009, 12:05   #4
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

2 EducatedFool

спасибо.

сосбенно интерсно это: IIf([or(o5:at437=d2)]
kievlyanin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в массиве найти количество злементов лежащих в диапазоне от A до B Deniska112 Общие вопросы C/C++ 14 02.06.2009 17:59
Подскажите решение в Паскале плиз Igomax Помощь студентам 5 19.04.2009 20:04
как найти первую заполненную ячейку в диапазоне Bezdar Microsoft Office Excel 3 19.02.2009 11:59
Подскажите решение задач на паскале АмИдЪ Помощь студентам 5 17.02.2009 21:25
как найти данные в диапазоне Tanya2007 Microsoft Office Excel 2 20.11.2007 19:33