Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8

Поиск значения в ячейке

06.01.2016, 14:28. Показов 7952. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Имеется некая ячейка, содержащая текст.
Имеется таблица 20*20, содержащая ключевые слова.

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

Пример:

Ячейка = "мама мыла раму"

Таблица ключевых слов:
....1.......|......2......|.......3....
Мама...|..Дядя...|..Дедка
Папа....|...Тетя...|...Бабка

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

Надеюсь не сильно запутал. Спасибо))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2016, 14:28
Ответы с готовыми решениями:

Поиск максимального значения в ячейке
Как на листе найти (программно)ячейку с максимальным значением.

Поиск значения и переход к ячейке, VBA
Доброго времени суток Я задолбалась не могу никак осуществить поиск по книге Excel такой, что первая ячейка с нужным значением...

Поиск значения в ячейке А1 через Cells.Find
Привет. Никак не могу понять, как через Cells.Find найти значение в ячейке А1. Какой параметр надо указать в Cells.Find(After:=), чтобы...

23
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
08.01.2016, 01:21
Студворк — интернет-сервис помощи студентам
Заменте tt на этот код - исправил косяки с Бурмой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub tt()
    Dim c As Range, r1 As Range, r2 As Range
    Application.ScreenUpdating = False
    For Each c In [a1].CurrentRegion
        If r1 Is Nothing Then
            If InStr(c.Value, "/16") Then Set r1 = c
        End If
 
        If Not r1 Is Nothing Then
            If InStr(c.Value, "Charts affected ") Or InStr(c.Value, "Chart affected ") Then
                Set r2 = c
                Range(r1, r2.Offset(, 10)).Select: PASTE
                Set r1 = Nothing
                Set r2 = Nothing
            End If
        End If
    Next
    
    Application.ScreenUpdating = True
End Sub
Добавлено через 3 минуты
Вообще имена макросов PASTE, FORMAT, INDEX нужно изменить на что-то нейтральное, например PASTE_, FORMAT_, INDEX_
Я не стал напрягаться, ибо работало. А вообще могут быть непонятные ошибки, ибо эти слова уже используются Экселем и VBA.

Добавлено через 1 час 11 минут
Лучше эту строку измените так:
Visual Basic
1
For Each c In [a1].CurrentRegion.Columns(1).Cells
А вообще вместо [a1].CurrentRegion лучше определить нужный диапазон иначе, например можно использовать usedrange
Visual Basic
1
For Each c In Sheets(2).UsedRange.Columns(1).Cells
или просматривать от первой строки до последней использованной в первом столбце.

Добавлено через 38 минут
А про пробелы то забыл!...
Вот так нужно эту часть в PASTE изменить:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
    Set iSource = [AG2:BE14]
    s = " " & Selection(1).Text & " "
    For Each col In iSource.Columns
        If x = 0 Then
            For Each wrd In col.Cells
                If InStr(s, " " & wrd.Text & " ") Then
                    x = wrd.Column - 30: Exit For
                End If
            Next
        End If
    Next
Добавлено через 8 минут
Или так - но так перебор ключей будет идти по строкам:
Visual Basic
1
2
3
4
5
    Set iSource = [AG2:BE14]
    s = " " & Selection(1).Text & " "
    For Each wrd In iSource
        If InStr(s, " " & wrd.Text & " ") Then x = wrd.Column - 30: Exit For
    Next
1
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
08.01.2016, 03:52  [ТС]
Браво, господа! Отличная работа!
Благодаря новым условиям смог расширить количество ключей, и свести вероятность ошибки к минимуму.
Ну и сам скрипт работает как часы - в один клик столько работы...

Добавил все правки кроме пробелов. Если честно, я так и не понял для чего они.
А поиск работает прекрасно при любых условиях, я проверял и одно слово, и 2, и пару с общим словом. Все работает прекрасно.

Огромное всем спасибо!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
08.01.2016, 10:05
Пробелы для того, чтоб при поиске например "Бурунди" не совпало с "Бурундиканская республика" или с "Черно-Бурунди", которых нужно кидать в другую группу, но чтоб если например это "Бурунди" находится в конце строки (или в начале, но в данном случае в начале не будет) тоже нашлось.
Вообще по факту в этой задаче таких конфликтов не увидел, может их и не будет никогда, но всёж последите.
И если будет брак - будет находить по части слова и кидать не туда - тогда или добавляйте пробелы, или ключи располагайте так, чтоб сперва искало по более длинным.

Добавлено через 31 минуту
Кстати я там сделал выход если х=0 - можно считать в публичную переменную (или где-то в ячейке на листе) количество этих выходов и в конце сообщить сколько групп осталось необработанными в исходном списке.
Ну и ещё можно добавить например отдельной процедурой в финале удаление пустых строк, чтоб подтянуть все остатки в кучку. Или ноборот - подтянуть в кучку именно сами остатки переносом их вверх.
0
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 8
08.01.2016, 12:43  [ТС]
Вот последний пункт был бы интересен, так как каждый раз приходится листать довольно много вниз, чтобы удостовериться все ли обработалось.
При чем чтобы удалялась не строка (чтобы не навредить таблице, которая на этом же листе) а диапазон ячеек со сдвигом вверх.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2016, 12:43

Макрос на запись в ячейке значения в зависимости от значения в другой
Можете отредактировать код так, чтобы в зависимости от содержания ячейки, например А1 в ячейке А2 записывался рендом (по аналогии В1 с В2,...

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

Поиск конкретного значения в ячейке
Доброго времени суток. Передо мной стоит такая задача: К примеру есть 3 столбика: A B C, под каждым из них клетка |101,102,103|...

Поиск и сравнения значения в ячейке таблицы
Добрый день! Значения приходят в таблицу main колонка Manf_str, значения приходят с накладных и могут отличаться Для узнавания...

Поиск значения одной ячейки в другой ячейке
Здравствуйте, нужна помощь профессионалов Excel ))) Есть такая задача... Нужно найти значение из ячейки "С2" в ячейке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru