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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2014, 18:14   #1
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию поиск первых 2 знаков

Добрый день. У меня такая задача: найти в столбце А среди разных чисел числа, которые начинаются с числа, равного первым 2 знакам ячейки А1. Мне нужно найти номер строки, в котором находится это значение. делаю так:
Код:
kilk_nev = Columns("A:A").Find(What:=Mid(Cells(1, 1), 1, 2),  LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False).Row
Проблема в том, что число, равное первым 2 знакам ячейки А1, может быть как сначала, так и в конце или посередине числа, которое находится в столбце А. Ребята, подскажите, пожалуйста, решение
Jaroslav вне форума Ответить с цитированием
Старый 23.07.2014, 18:50   #2
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Как вариант: первых 2 знака вывести в столбец Е и поиск проводить в столбце Е:
Код:
AostPr = Columns("A").Rows(65536).End(xlUp).Row
    For u = AostPr To 2 Step -1
        Cells(u, 5) = Mid(Cells(u, 1), 1, 2)
    Next
kilk_nev = Columns("Е:Е").Find(What:=Mid(Cells(1, 1), 1, 2),  LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False).Row
Jaroslav вне форума Ответить с цитированием
Старый 24.07.2014, 03:49   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Советую сначала найти объект (ячейку), а уже после обнаружения использовать свойства этого объекта (например, Row). Иначе, в случае, если совпадений нет - будет ошибка.
Задачу решить можно так:
Код:
Sub qq()
    Dim x As Range
    Set x = [A:A].Find(what:=Left$([A1], 2) & "*", LookAt:=xlWhole)
    If Not x Is Nothing Then x.Select
End Sub
Только будет найдено одно (первое) совпадение. Если Вам нужны все, то организуйте цикл, используя метод FindNext.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.07.2014, 11:30   #4
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Спасибо, SAS888
Jaroslav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск первых 15 чисел (C++) TF6Face Помощь студентам 11 26.06.2014 18:11
Вычислить и напечатать произведение первых 7 элементов и сумм следующих элементов, которые находятся на первых позициях. doker___ C++ Builder 0 19.06.2013 15:54
Перезапись первых байт Tetr1s Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 03.08.2011 02:20
три первых максимума Exo Microsoft Office Excel 2 27.05.2009 15:08