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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 14:13   #1
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию поиск текста(эл-т массива) в массиве строк

прилагаю файл.

в столбце "D" список строк. все строки разные, каждая строка уникальна.
в столбце "C" список ключевых слов.

в столбце "A" хочется получить через запятую список ключевых слов, встречающихся в соответствующей ячейке столбца D.

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


если такое возможно, очень хотелось бы получить формулу на решение такой задачки. не совсем вижу, как ее составить..

если формула получается перегруженной, можно оставить главное - поиск хотя бы одного элемента из списка в строке.
Вложения
Тип файла: rar Книга123.rar (11.3 Кб, 22 просмотров)
peq вне форума Ответить с цитированием
Старый 16.04.2010, 15:06   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот вариант с применением пользовательской функции:

Код:
Option Compare Text

Function СписокСлов(ByVal cell As Range, ByRef Список As Range) As String
    txt = " " & LCase(cell.Text) & " "
    For Each word In Список.Value
        If Len(word) Then If txt Like "* " & Trim(word) & " *" Then СписокСлов = СписокСлов & ", " & word
    Next
    If Len(СписокСлов) Then СписокСлов = Mid(СписокСлов, 3)
End Function



Обратите внимание на формулы:
Код:
  Ячейка: A2      Формула  (стиль A1):   =СписокСлов(D2;$C$2:$C$13)
                  Формула  (стиль R1C1): =СписокСлов(RC[3];R2C3:R13C3)

PS: Вообще, в таких случаях надо применять только макросы - формулы при большом объёме данных будут слишком долго пересчитываться.
Особенно, если вы намереваетесь осуществлять подобный поиск по полному тексту "Анны Карениной"

Последний раз редактировалось EducatedFool; 16.04.2010 в 15:12.
EducatedFool вне форума Ответить с цитированием
Старый 16.04.2010, 15:11   #3
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

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

p.s.
текст Толстого взят исключительно в качестве примера рабочий файл выкладывать сюда было бы наверное неправильно.. увы.

Последний раз редактировалось peq; 16.04.2010 в 17:27.
peq вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк в таблицу с вставкой в них текста и чередованием фона строк Centurion2xx6 Microsoft Office Word 9 30.03.2010 11:00
Поиск в массиве строк. (visual basic) Mikle1990 Помощь студентам 7 19.03.2010 09:44
Поиск в массиве Aleksandr Помощь студентам 3 30.01.2010 19:51
(Си) Замена слов наименьшей длины в массиве строк RZMTZM Общие вопросы C/C++ 7 25.01.2010 00:30