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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2011, 15:58   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
Вопрос поиск в предложении макросом

здравствуйте, форумчане))

помогите пожалуйста разобраться, а то что-то у меня не получается
нужно сделать поиск слов из предложений по библиотеке (отдельный столбец), при том не только слова, но и выражения типа "2-2X2". найденные слова подсветить в предложении и вынести из столбца-библиотеки на отдельный лист

понимаю, что подобное было, но предлагают решения условным форматированием, а это нужно сделать макросом (и будьте добры, прокоментируйте код, чтобы можно было понять, что к чему и изменить, если что)

Search_in_Column.rar

очень надеюсь на вашу помощь, заранее спасибо)

Последний раз редактировалось Bape}l{ka; 20.06.2011 в 16:08.
Bape}l{ka вне форума Ответить с цитированием
Старый 20.06.2011, 16:48   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Не понял, что нужно выносить на отдельный лист. А с выделением можно так:
Код:
Sub ertert()
Dim bibl, b, poisk As Range, r As Range, s As String
Application.ScreenUpdating = False

bibl = Range([e2], Cells(Rows.Count, 5).End(xlUp)).Value
Set poisk = Range([a2], Cells(Rows.Count, 1).End(xlUp))
poisk.Font.ColorIndex = xlAutomatic

For Each r In poisk.Cells
    For Each b In bibl
        s = InStr(r, b)
        If s Then r.Characters(s, Len(b)).Font.Color = vbRed
    Next b
Next r
Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip Search_in_Column.zip (13.5 Кб, 17 просмотров)
nilem вне форума Ответить с цитированием
Старый 20.06.2011, 18:25   #3
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

nilem
спасибо большое)))
а могли бы вы объяснить некоторые строки пословно, что означают команды?

Код:
InStr(r, b)
.Characters(s, Len(b))
Application.ScreenUpdating = True/False      '- тут вроде интуитивно понятно ЧТО, но не понятно ЗАЧЕМ
p.s.: а вынести на отдельный лист надо было то, что нашлось в библиотеке (вобщем совпадения с предложениями), ну или хотя бы тоже их покрасить

p.p.s.: а я вроде решила заморочиться с функциями Find What =ь если что получится, выложу сюда))
Bape}l{ka вне форума Ответить с цитированием
Старый 20.06.2011, 18:44   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Если красить библиотеку, то можно так, без массива
Код:
Sub ertert()
Dim bibl As Range, b As Range, poisk As Range, r As Range, s As String
Application.ScreenUpdating = False
Set bibl = Range([e2], Cells(Rows.Count, 5).End(xlUp))
Set poisk = Range([a2], Cells(Rows.Count, 1).End(xlUp))
poisk.Font.ColorIndex = xlAutomatic
bibl.Font.ColorIndex = xlAutomatic
For Each r In poisk.Cells
    For Each b In bibl.Cells
        s = InStr(r, b)
        If s Then r.Characters(s, Len(b)).Font.Color = vbRed: b.Font.Color = vbBlue
    Next b
Next r
Application.ScreenUpdating = True
End Sub
Зачем Application.ScreenUpdating - каждое изменение цвета шрифта в ячейках будет сопровождаться обновлением экрана, а это только лишние траты времени. Поэтому временно отключаем обновление, а в конце включаем (хотя в большинстве случаев оно включается автоматически). А по функциям лучше справки не напишешь, посмотрите по F1.
nilem вне форума Ответить с цитированием
Старый 20.06.2011, 20:50   #5
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

спасибо, nilem, за помощь и за разъяснения))
будем экспериментировать)))
Bape}l{ka вне форума Ответить с цитированием
Старый 21.06.2011, 10:21   #6
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

народ, я все поняла, кроме одной строчки (даже фразы)
подскажите кто-нибудь

Код:
.Characters(s, Len(b))
т.е. я понимаю, что идет назначение цвета задействованным элементам, я не понимаю КАК это происходит, что за функция? из справки непонятно Т_Т
Bape}l{ka вне форума Ответить с цитированием
Старый 21.06.2011, 10:39   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А Вы попробуйте записать макрос покраски пары букв ячейки - получите что-то типа
Код:
With ActiveCell.Characters(Start:=3, Length:=2).Font
т.е. s - это позиция начального символа, Len(b) - это сколько символов красим.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 21.06.2011, 15:14   #8
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Hugo121 )))
спасибо большое!!
Bape}l{ka вне форума Ответить с цитированием
Старый 21.06.2011, 17:28   #9
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

все хорошо, да не совсем то, что нужно Т_Т
данный макрос ищет в том числе и составные части "слов", что не подходит.
а подскажите, как сделать так, чтобы искалось полное соответствие??
я так понимаю, нужно обозначить разделители, которые будут ограничивать "слово".. только что потом делать, не совсем представляю

файл тот же, что и в первом посте
Bape}l{ka вне форума Ответить с цитированием
Старый 21.06.2011, 17:50   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я это в тоже заметил, когда свой алгоритм лениво продумывал. Вроде бы думал делить на слова по пробелам (Split()) и сравнивать в цикле. Но не пришло на ум, как тогда легко закрашивать найденное - вроде сильно много телодвижений делать придётся... Так и недодумал, тем более что Николай уже предложил решение.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в справочнике макросом sasha_prof Microsoft Office Excel 9 25.03.2011 12:22
открытие нескольких книг одним макросом и закрытие книг другим макросом kursant95 Microsoft Office Excel 6 27.01.2011 16:54
поиск не заблокированных ячеек макросом NoLL Microsoft Office Excel 4 24.12.2010 06:23
поиск макросом дубликатов в таблице эксель brokoli Microsoft Office Excel 12 20.01.2009 11:26