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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2018, 23:48   #1
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию Поиск слов в ячейке базой, из других ячеек

Пишется макрос для упрощения работы службе поддержки
Итак, задача:
необходимо написать макрос, работает он по кнопке (просто для понимания)
есть 3 листа в книге, в 3 листе 1 столбец для слов, которые нужно будет искать, 2 столбец для других слов, о которых расскажу позже.
во 2 листе на 2 столбце находится столбец, который нужно проверить полностью. Процесс проверки: в цикле нужно взять каждую ячейку и проверить, есть ли там ключевое слово из 3 листа 1 столбец, если есть - записать на том же 2 листе в столбец Х (последний, но точный номер будет известен позже) значение, которое стоит напротив ключевого слова в 3 листе. Т.е. на 3 листе стоит пара в соседних столбцах, аля "БЛ - Больничный лист, НДФЛ - налоги".
Я искал в интернете подходящее решение, но находил только решение через "формулы", а мне нужно решение для VBA.
Понимаю, что задача чуть сложнее, чем большинство в этом разделе, но я все же буду очень рад если кто-нибудь из Вас мне с ней поможет! Буду рад любой помощи!
RockHammer вне форума Ответить с цитированием
Старый 05.02.2018, 00:19   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Начните помогать себе сами - приложите файл-пример.

PS Мой пост не означает, что я собираюсь писать макрос.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 05.02.2018, 10:10   #3
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Начните помогать себе сами - приложите файл-пример.

PS Мой пост не означает, что я собираюсь писать макрос.
Хорошо, хорошо.
Готового кода я не жду, я думал мне подскажут подходящие функции, может кто-то писал что-то подобное и знает алгоритм.
Вложения
Тип файла: rar Создано 15_01_2018.rar (24.1 Кб, 18 просмотров)
RockHammer вне форума Ответить с цитированием
Старый 05.02.2018, 10:35   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от RockHammer Посмотреть сообщение
Понимаю, что задача чуть сложнее, чем большинство в этом разделе,
Цитата:
Сообщение от RockHammer Посмотреть сообщение
Процесс проверки: в цикле нужно взять каждую ячейку и проверить, есть ли там ключевое слово из 3 листа 1 столбец,
FINDом в цикле погонять - сложность?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 06.02.2018, 12:53   #5
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
FINDом в цикле погонять - сложность?
сложность в базе для поиска, брать каждый элемент из 3 листа и затем его искать там, во 2 листе?
RockHammer вне форума Ответить с цитированием
Старый 06.02.2018, 13:09   #6
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию

Я накидал словесный алгоритм работы макроса, но из-за того, что не силет в VBA не знаю как его записать именно на VBA, вот он:
Цитата:
y - количество не пустых ячеек на листе 3 в 1 столбце
x - счетчик, текущая проверяемая ячейка в 3 столбце
z - количество не пустых ячеек на листе 2 в 2 столбце
a - счетчик текущей ячейки, в проверяемом листе

for x to y
for a to z
if (лист 2.столбец 2.ячейка (a)) = лист3.столбец1.ячейка(x) then
лист2.столбец7.ячейка(a) = лист3.столбец2.ячейка(x)
End If
Next a
next x
вроде бы так должно работать
Может кто-нибудь это перевести на язык VBA?

Последний раз редактировалось RockHammer; 06.02.2018 в 13:11.
RockHammer вне форума Ответить с цитированием
Старый 06.02.2018, 13:31   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

формула на листе 2, в колонке J
Вложения
Тип файла: xls Создано 15_01_2018.xls (92.0 Кб, 50 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.02.2018, 18:43   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

RockHammer
Более простая ИМХО формула для 2-й строка
Код:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(НСИ!$A$2:$A$9;B2);НСИ!$B$2:$B$9);"")
и соотв. макрос
Код:
Sub Ro()
  With Worksheets(2).UsedRange.Columns(1).Offset(, Worksheets(2).UsedRange.Columns.Count)
    .Formula = Replace(Replace( _
       "=IFERROR(LOOKUP(2,1/SEARCH('@'!$A$2:$A$#,B2),'@'!$B$2:$B$#),"""")" _
      , "#", Worksheets(3).Cells(Rows.Count, 1).End(xlUp).Row) _
      , "@", Worksheets(3).Name)
    .Value = .Value
  End With
End Sub
В описании задачи Вы ссылаетесь на номера листов, поэтому в макросе использованы номера, а не имена.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 06.02.2018, 20:48   #9
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
RockHammer
Более простая ИМХО формула для 2-й строка
Код:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(НСИ!$A$2:$A$9;B2);НСИ!$B$2:$B$9);"")
и соотв. макрос
Код:
Sub Ro()
  With Worksheets(2).UsedRange.Columns(1).Offset(, Worksheets(2).UsedRange.Columns.Count)
    .Formula = Replace(Replace( _
       "=IFERROR(LOOKUP(2,1/SEARCH('@'!$A$2:$A$#,B2),'@'!$B$2:$B$#),"""")" _
      , "#", Worksheets(3).Cells(Rows.Count, 1).End(xlUp).Row) _
      , "@", Worksheets(3).Name)
    .Value = .Value
  End With
End Sub
В описании задачи Вы ссылаетесь на номера листов, поэтому в макросе использованы номера, а не имена.
формула по листам большого смысла не имеет, т.к. листы будут удаляться. в книге будет один постоянный лист, в котором будут кнопки, которые будут запускать макросы. Потому мне важно чтобы работало не по формулам а по макросу
RockHammer вне форума Ответить с цитированием
Старый 08.02.2018, 19:07   #10
RockHammer
 
Регистрация: 04.02.2018
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
RockHammer
Более простая ИМХО формула для 2-й строка
Код:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(НСИ!$A$2:$A$9;B2);НСИ!$B$2:$B$9);"")
и соотв. макрос
Код:
Sub Ro()
  With Worksheets(2).UsedRange.Columns(1).Offset(, Worksheets(2).UsedRange.Columns.Count)
    .Formula = Replace(Replace( _
       "=IFERROR(LOOKUP(2,1/SEARCH('@'!$A$2:$A$#,B2),'@'!$B$2:$B$#),"""")" _
      , "#", Worksheets(3).Cells(Rows.Count, 1).End(xlUp).Row) _
      , "@", Worksheets(3).Name)
    .Value = .Value
  End With
End Sub
В описании задачи Вы ссылаетесь на номера листов, поэтому в макросе использованы номера, а не имена.
Только сейчас удалось протестировать макрос, все работает.
однако, почему-то съезжает вверх на одну ячейку, как исправить?
Изображения
Тип файла: jpg Снимок.jpg (13.2 Кб, 136 просмотров)

Последний раз редактировалось RockHammer; 08.02.2018 в 21:35.
RockHammer вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при изменении значений объединенных ячеек в другой отображающей значения ячейке должны отображаться разные числа 1,2 и т.д, в зависимости от слов Alexsht Microsoft Office Excel 0 28.12.2017 00:00
формула в ячейке для подсчёта серий чисел из других ячееках Aleks 1978 Помощь студентам 0 02.01.2017 20:06
Копирование значений из других ячеек в одну Sergey19 Microsoft Office Excel 7 08.08.2013 13:02
MS Excel: Отмена объединения ячеек и заполнение "новых" ячеек текстом (числом), бывшим ранее в объединенной ячейке D.Sergienko Microsoft Office Excel 3 24.06.2013 15:18
Поиск одного из нескольких вариантов слов в заданной ячейке и перенос его вдругую ячейку ТвойПервый Microsoft Office Excel 19 06.03.2013 07:54