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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 18:29   #1
Burning_brook
Новичок
Джуниор
 
Регистрация: 13.02.2010
Сообщений: 1
По умолчанию Разбить текст на слова и произвести поиск каждого слова по текстовому массиву

По-порядку.

Дано:
1 - Предложение из нескольких слов с разделителями в виде точки и запятой.
2 - Несколько ячеек, заполненных подобными же предложениями.

Задача:
Проверить каждое слово из первого предложение на совпадение со словами текста. Вывести все предложения, в которых есть хотя бы одно совпадение.

Примерно как решить представляю так:
1 - разбиваем первое предложение на слова (например при помощи split, но не знаю, как туда воткнуть разные разделители)
2 - найти совпадения при помощи, например, find
3 - вывести найденные предложения в виде столбца текстовых ячеек.

Но пока само решение не складывается Возможно потому, что никогда поиском посредством макросов не занималась. Помогите, плиз...

Последний раз редактировалось Burning_brook; 21.05.2010 в 19:15.
Burning_brook вне форума Ответить с цитированием
Старый 21.05.2010, 19:29   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

1. Вот пример разбития строки по разделителю (в виде пробела):
Код:
a = Split("piece1 piece2 piece3", " ")
MsgBox (a(0))
motorway вне форума Ответить с цитированием
Старый 22.05.2010, 01:56   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    Предложение = "Предложение. из нескольких,слов с разделителями.в виде ,точки и запятой."

    ' меняем все точки и запятые на пробелы:
    Предложение = Replace(Предложение, ",", " "): Предложение = Replace(Предложение, ".", " ")
    Предложение = Application.Trim(Предложение)    ' убираем лишние (в т.ч. двойные) пробелы

    Dim cell As Range, ra As Range
    Set ra = Range([A1], Range("A" & Rows.Count).End(xlUp))
    For Each cell In ra.Cells    ' перебираем все предложения в первом столбце
        txt = " " & Replace(Replace(cell, ",", " "), ".", " ") & " "
        For Each word In Split(Предложение, " ")    ' перебираем все слова в нашем предложении
            If txt Like "* " & word & " *" Then MsgBox cell: Exit For    ' выводим предложение
        Next word
    Next cell
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...0__4-01-03.zip

Последний раз редактировалось EducatedFool; 22.05.2010 в 02:01.
EducatedFool вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию. Matr1x Общие вопросы C/C++ 4 07.01.2010 21:38
разбить текстовый файл на слова pavel_1406 Общие вопросы C/C++ 3 19.12.2009 22:11
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Парсить текст на слова fakir9999 Помощь студентам 0 02.06.2009 19:46
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57