0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
1 | |
Поиск значения в ячейке06.01.2016, 14:28. Показов 7019. Ответов 23
Метки нет (Все метки)
Добрый день!
Имеется некая ячейка, содержащая текст. Имеется таблица 20*20, содержащая ключевые слова. Как при помощи макроса запустить проверку ячейки, чтобы при нахождении в ней любого слова из столбца 1 - выполнить макрос 1, из столбца 2 - выполнить макрос 2, и так для каждого столбца ключевых слов. Пример: Ячейка = "мама мыла раму" Таблица ключевых слов: ....1.......|......2......|.......3.... Мама...|..Дядя...|..Дедка Папа....|...Тетя...|...Бабка Выполнить макрос #1 так как ячейка содержит слово из первого столбца. Надеюсь не сильно запутал. Спасибо))
0
|
06.01.2016, 14:28 | |
Ответы с готовыми решениями:
23
Поиск максимального значения в ячейке Поиск значения и переход к ячейке, VBA Поиск значения в ячейке А1 через Cells.Find Макрос на запись в ячейке значения в зависимости от значения в другой |
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
06.01.2016, 15:30 | 2 |
Excel ? Word ?
Если в ячейке будет текст "папа + тетя = адюльтер", то какой макрос нужно выполнить 1, 2 или 1+2
0
|
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
06.01.2016, 16:20 [ТС] | 3 |
VBA для Excel.
Массив ключевых слов и специфика текста в ячейке исключает одновременное упоминание двух ключей. Так что возможно лишь одно совпадение -> один макрос. Спасибо.
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|||||||||||
06.01.2016, 16:56 | 4 | ||||||||||
Один из возможных вариантов :
1
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
06.01.2016, 17:02 | 5 |
Добавляем к значению ячейки по пробелу по концам (в переменной).
Цикл по 20х20 (можно 2 вложенных), к каждому значению прибавляем пробелы, ищем используя Instr() Если нашли - анализ столбца, выполнение макроса, выход. Можно и иначе сделать - 20х20 в словарь с столбцом, split ячейки, перебор этого массива, проверка по словарю, выполнение макроса, выход. Т.к. так и не сказали что за таблица и ячейка - только алгоритм.
0
|
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
07.01.2016, 13:32 [ТС] | 6 |
Спасибо, вечером опробую.
Если не получится - выложу файл-образец. Добавлено через 16 часов 26 минут pashulka, большое спасибо, очень компактный код, все работает прекрасно Вот только как добавить поиск по ключу из двух слов? Ну тоесть Дядя он ищет, а вот Дядя Вася - уже нет.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 13:36 | 7 |
Мой алгоритм в первом варианте избавлен от этой проблемы.
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
07.01.2016, 13:40 | 8 | |||||
alucard91, В этом случае - можно выбрать другой критерий разделения ключей, например, запятую
Код
A1 = Дядя Вася, мама, мыла, раму 'можно без пробелов
0
|
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
07.01.2016, 14:40 [ТС] | 9 |
Hugo121, простите, Ваш вариант с пробелами показался мне слишком запутанным.
pashulka, текст в А1 редактированию не подлежит, так что буду пытаться составить более четкие ключи для избежания колизий. Да и вообще я видимо слишком много хочу от экселя)) Но начальная проблема решена, вопрос закрыт, всем спасибо!
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 14:44 | 10 |
Да что там сложного - добавить пробелы по концам, чтоб находить слова целиком...
Вообще если бы был сразу показан материал для работы - всем было бы легче.
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
07.01.2016, 14:57 | 11 |
alucard91, Если не подлежит редактированию, то как узнать что сколько слов должен содержать ключ ?
Может Вы хотите перебрать все варианты ? Или же Вам достаточно частичного совпадения ... тогда замените xlWhole на xlPart или добавьте символ подстановки "*"
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 15:48 | 12 |
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
07.01.2016, 16:03 | 13 |
Hugo121, Имелось ввиду, что если изначально - было достаточно искать любое слово из перечисленных, т.е. есть строка "дядю вася мама мыла раму" и мы ищем, сначала дядю, потом васю и т.д.
То теперь, когда выяснилось, что искомое значение может содержать несколько слов, возник мой вопрос.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 16:23 | 14 |
Вопрос понятен.
Но без примера и подробного описания задачи непонятно, что вообще оптимальнее искать - ключей изначально ясно что всего 400, что там в строке - непонятно (может там слов в пару раз больше). Да и вообще где это всё... может там вообще нигде ни одного привычного пробела нет Хотя раз код отработал - значит были. Где должен быть код - это выяснили
0
|
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
07.01.2016, 16:26 [ТС] | 15 |
Спасибо за оживленный дискус)
Приведу документ в удобоваримый вид и выложу завтра сюда с полным описанием задачи. Извините за конфуз)
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 16:40 | 16 |
Не нужен обязательно оригинал (личные и секретные данные убирайте), нужен полный аналог - форматы, расположение данных, ну и в данном случае свои макросы не лишним будет показать, если возможно.
0
|
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
|
|
07.01.2016, 21:28 [ТС] | 17 |
Секретных данных нет, условия и задачи постарался максимально расписать в самом документе.
От использования разных макросов в зависимости от результата совпадения в таблице ушел к одному макросу, зависящему от этого результата. PS: кнопку убрал в сторону и забыл вернуть, она на той же вкладке что и описание, только сбоку. Большое спасибо за внимание.
0
|
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
07.01.2016, 22:37 | 18 | |||||
alucard91, На первый взгляд, реальный разделитель данных, у Вас это - и в этом случае, можно протестировать :
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 22:57 | 19 |
Добавил небольшой код, подправил чуть существующее (минимально - выход если не нашёлся ключ, и выбор не А1, а первой ячейки найденного диапазона, и убрал удаление диапазона, ибо это мне мешало Заменил на очистку - смотрите там есть остатки!)
Это для начала, там ведь нужно поиск ключей переделывать, а некогда...
1
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
07.01.2016, 23:10 | 20 |
Переделал поиск - проверяйте.
0
|
07.01.2016, 23:10 | |
07.01.2016, 23:10 | |
Помогаю со студенческими работами здесь
20
Поиск значения в ячейке Поиск конкретного значения в ячейке Поиск и сравнения значения в ячейке таблицы Поиск значения одной ячейки в другой ячейке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |