Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поочередный поиск слов в ячейке с текстом / 12 сообщений из 12, страница 1 из 1
19.09.2016, 20:48
    #39311530
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Добрый день!
Не могу найти решения следующей задачи.
На первом листе в столбце A имеем некий текст (SMS от банка), этот текст в себя помимо прочего включает в себя название супермаркета/кафе/магазина, где были списаны деньги. На втором листе имеем характерный кусок текста из SMS, и категорию расходов, куда такую SMS надо отнести. Соответственно каждой SMS с первого листа надо сопоставить категорию расходов со второго (с вычленением суммы и даты из SMS проблем нет).

Я такую задачу решил, но супер не изящно – вместо использования списка текстов и соответствующих категорий, я вколотил огромную формулу с кучей «ПОИСК(»-ов, где последовательно ищу или то, или другое, и ЕСЛИ( найдено, присваиваю категорию. Формула некрасивая, и тяжело поддерживаемая.

К сожалению, каких-то четких ограничителей для определения категоризируемого текста нет (не получается, например, с такого-то по такой-то символ брать, или, например, найти определенные символы и считать, что это начало, а какие-то другие символы – это конец).

Может здесь можно как-то использовать формулы массивов, в которых я плыву и сделать это все более изящно.

В общем-то вопрос, как организовать поочередный поиск слов в ячейке, с выводом в соседнем столбце категории, к которой относится найденное слово.

Спасибо!
...
Рейтинг: 0 / 0
19.09.2016, 23:37
    #39311562
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
А какие сложности? Пиши функцию. Есть текст. Есть диапазон, в каждой ячейке которого лежит слово. Нужно перебрать по одной ячейке диапазона, пока очередное слово при поиске в тексте не даст ненулевую позицию, и вернуть это слово. Типа (код причешешь):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
function fnWord(strText as string, rngWord as range) as string
for each rngWord in rngWords
  if instr(strText, rngWord.value) > 0 then
    fnWord = rngWord.value
    exit function
  endif
next
end function


Полученное значение использовать как аргумент функции ВПР() для возврата соответствующего значения категории.
...
Рейтинг: 0 / 0
20.09.2016, 00:01
    #39311566
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Akina, большое спасибо!
К сожалению в VBA не силен, поэтому причесать вряд ли смогу, но обязательно попробую!
Спасибо!
...
Рейтинг: 0 / 0
20.09.2016, 08:01
    #39311630
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Igor_Exc_Run,

авторНа первом листе в столбце A имеем некий текст (SMS от банка), этот текст в себя помимо прочего включает в себя название супермаркета/кафе/магазина, где были списаны деньги. На втором листе имеем характерный кусок текста из SMS, и категорию расходов, куда такую SMS надо отнести. Соответственно каждой SMS с первого листа надо сопоставить категорию расходов со второго (с вычленением суммы и даты из SMS проблем нет).
Решение в обратную сторону не предлагать?
Например, через "СУММЕСЛИМН" можно каждой категории сопоставить общую сумму соответствующих SMSок.
...
Рейтинг: 0 / 0
20.09.2016, 12:30
    #39311878
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Egoр, спасибо за участие!
К сожалению обратное решение, действительно, не подойдет для моей задачи.
...
Рейтинг: 0 / 0
20.09.2016, 13:14
    #39311920
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Akina,
спасибо большое вам за помощь, но к сожалению, предложенная вами функция на моем примере выдает ошибку #ЗНАЧ!
К сожалению, не будучи силен в VBA, не понимаю, что следует поправить, чтобы функция заработала.
...
Рейтинг: 0 / 0
20.09.2016, 13:47
    #39311946
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Igor_Exc_Runпредложенная вами функция на моем примере выдает ошибку #ЗНАЧ!Это только шаблон кода, который следует доработать.

Igor_Exc_Runне будучи силен в VBA, не понимаю, что следует поправить, чтобы функция заработала.Ну вариантов немного. Выучить VBA, нанять специалиста, забить на проблему.
...
Рейтинг: 0 / 0
20.09.2016, 14:04
    #39311959
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Всем большое спасибо за участие, моя проблема была в том, что искал только в русскоязычном интернете.
Решение без VBA, если кому-то будет интересно:

https://exceljet.net/formula/get-first-match-cell-contains
...
Рейтинг: 0 / 0
20.09.2016, 15:08
    #39312007
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Igor_Exc_Run,

Excel - мощный продукт. Спс.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.12.2017, 19:45
    #39569917
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Прошу, прощения, если это некорректно (тогда прошу удалить мое сообщение), но недавно написал статью по этой теме, быть может кому то пригодится:
http://itismylife.ru/2017/10/vpr-po-chastichnomu-sovpadeniyu/

Спасибо!
...
Рейтинг: 0 / 0
14.12.2017, 23:25
    #39570014
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Igor_Exc_Run,
формула для решения задачи этой темы в Excel 2007

Код: plaintext
=ПРОСМОТР(2;1/ПОИСК(Таблица2[Слово для поиска:];Таблица3[[#Эта строка];[SMS]]);Таблица2[Категория:])

В 2010 и позднее, наверно, можно короче - проверить не могу

Код: plaintext
=ПРОСМОТР(2;1/ПОИСК(Таблица2[Слово для поиска:];[@SMS]);Таблица2[Категория:])

Что касается статьи:
1. Почти уверен, что на русском языке информация о ней (формуле) публикуется впервые!
Да ладно, на любом форуме по Excel можно найти подобную задачу и формулу для ее решения. Вот недавно я отвечал и рассказывал, как эта формула работает: http://forum.ixbt.com/topic.cgi?id=23:46275

2. Жаль, что не приложили файл Excel к статье. Изучать работу формул по картинкам как-то не очень.

3. В целом полезно ;)
...
Рейтинг: 0 / 0
15.12.2017, 19:14
    #39570535
Igor_Exc_Run
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередный поиск слов в ячейке с текстом
Казанский,
спасибо большое за ваши конструктивные замечания и за очень интересное решение!

1. Убрал излишнюю фразу в своем блоге, видимо, плохо гуглил, да и тут мне год назад никто не смог подсказать, поэтому создалось впечатление, что задача встречается впервые в зоне .ru
2. Не приложил файл, потому что пока не научился в Wordpress аккуратно прикреплять файлы, как научусь, обязательно прикреплю.

Еще раз спасибо за ваше решение, в комментариях к своей записи в блоге добавил ссылку на вашу формулу.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поочередный поиск слов в ячейке с текстом / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]