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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 12:18   #1
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию Поиск значения в обратном порядке

Уважаемые форумчане.
Для поиска значения в столбце сверху вниз пользуюсь :
Set poz = [h:h].Find(What:=iValue, LookAt:=xlWhole)

Подскажите, пожалуйста,
а как задать поиск значения в столбце снизу вверх, чтобы выводилось первым последнее значение.
Например
1111
2222
3333
1111
Надо найти сначала последнее значение 1111
Sergey112233 вне форума Ответить с цитированием
Старый 04.01.2011, 12:32   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в справке по Find написано:
XlSearchDirection Enumeration
Specifies the search direction when searching a range.
Version Information
Version Added: Excel 2007

Name Value Description
xlNext 1 Search for next matching value in range.
xlPrevious 2 Search for previous matching value in range.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.01.2011, 12:53   #3
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

IgorGO, спасибо!
У меня 2003
Выбрал еще раз
SearchDirection:=xlPrevious
Получилось!

А поиск по признаку Далее в направлении поиска снизу вверх?
Например
1111
2222
3333
4444
2222
5555
2222

Надо найти в направлении снизу вверх 2222 второе значение снизу
Sergey112233 вне форума Ответить с цитированием
Старый 04.01.2011, 13:19   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Почитайте справку по FindPrevious, FindNext.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 04.01.2011, 13:25   #5
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

kuklp, спасибо.
Sergey112233 вне форума Ответить с цитированием
Старый 04.01.2011, 13:28   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    iValue = 4
    Dim poz1 As Range, pos2 As Range
    
    ' ищем первое с конца
    Set poz1 = Range("h:h").Find(iValue, , , xlWhole, , xlPrevious)
    
    ' ищем второе с конца (начиная искать с первого найденного)
    Set poz2 = Range("h:h").Find(iValue, poz1, , xlWhole, , xlPrevious)
    
    Debug.Print poz2.Address
End Sub
или как посоветовал kuklp

Код:
Sub test()
    iValue = 4
    Dim pos2 As Range
    Set poz2 = Range("h:h").FindPrevious(Range("h:h").Find(iValue, , , xlWhole, , xlPrevious))
    
    Debug.Print poz2.Address
End Sub

Последний раз редактировалось EducatedFool; 04.01.2011 в 13:31.
EducatedFool вне форума Ответить с цитированием
Старый 04.01.2011, 13:33   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Хочу обратить внимание на один нюанс метода Find.
Возьмем пример из поста №1. Если использовать предлагаемый код поиска (сверху вниз), и если значения в искомом столбце начинаются с 1-й строки, то результатом поиска будет именно выделенная автором вопроса ячейка. Т.е. поиск начинается со 2-й строки. И если удовлетворяющее условиям поиска значение находится в 1-й строке, то оно будет найдено в последнюю очередь.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 04.01.2011, 15:03   #8
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

Уважаемые форумчане.
Ваши советы и приведенные примеры мне очень помогли разобраться в вопросе и Help стал более "дружественнее" выглядеть.
Спасибо!
Попробую адаптировать к своей задаче.
Sergey112233 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестановка символов в обратном порядке. Zeronim Помощь студентам 2 28.06.2010 14:05
Вывести числа в обратном порядке asmcc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 20.02.2010 11:46
печать страниц в обратном порядке Олекса Microsoft Office Word 4 30.03.2009 09:45
В обратном порядке mari.ha Общие вопросы C/C++ 7 25.12.2008 21:36
Вывод кольцевого списка в обратном порядке parinoff Паскаль, Turbo Pascal, PascalABC.NET 5 22.11.2008 12:03