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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2017, 22:24   #1
Kamerer
Новичок
Джуниор
 
Регистрация: 22.06.2017
Сообщений: 1
По умолчанию макрос поиска по нескольким условиям в таблице

Есть таблица с 10-20 тыс строк из 1 столбца.
Есть вторая таблица с несколькими сотнями строк и 4 столбцами.
Задача - по каждой строке из второй таблицы с 1, 2 или 3 значениями в ячейках строки найти строки в первой таблице в случае совпадения и во втором столбце подставить значение в этой же строке из 4 столбца второй таблицы.
Например в строке первой таблицы текст:
"Выхожу один я на дорогу - сквозь туман кремнистый путь блестит."
во второй таблице в первой строке есть три слова: "один, туман, путь", в четвертой ячейке "1 tuman put". Соответственно по трем словам (порядок их может быть любой) при совпадении из второй таблицы в первую переносится фраза из 4 ячейки строки (латиницей) во второй столбец, и так по всем строкам первой таблицы. И аналогично по очереди проверяются все строки обеих таблиц. Регистр неважен - заглавные и строчные символы принимаются равными. В строке первой таблицы ключевые слова могут быть не подряд.
Для одного ключевого слова я написал простой макрос цикл в цикле который обе таблицы сканирует, а вот для нескольких ключевых слов пока в раздумьях с чего начать....
Kamerer вне форума Ответить с цитированием
Старый 22.06.2017, 23:06   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
в цикле по таблице1 перебираем ячейки
  в цикле по таблице2 перебираем ячейки
    разбиваем ячейку_табл_2 на слова
    считаем есть ли каждое слово в ячейке_табл_1
    если количество = количество_слов_ячейки_табл_2, то вывод 4й_ячейки
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.06.2017, 06:23   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пусть 1-я таблица находится на листе "Лист1" в столбце "A", начиная с 1-ой строки.
Пусть 2-я таблица находится на листе "Лист2" в столбцах "A:D", начиная с 1-ой строки.
Тогда, для того, чтобы при указанных условиях совпадений вывести значение из столбца "D" 2-ой таблицы в соответствующую строку столбца "B" 1-го листа, можно выполнить макрос:
Код:
Option Compare Text
Sub Main()
    Dim i As Long, j As Long, a(), b(), c()
    a = Sheets("Лист1").Range("A1:A" & Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row).Value
    b = Sheets("Лист2").Range("A1:D" & Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim c(1 To UBound(a, 1), 1 To 1)
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(b, 1)
            If InStr(a(i, 1), b(j, 1)) <> 0 Then
                If InStr(a(i, 1), b(j, 2)) <> 0 Then
                    If InStr(a(i, 1), b(j, 3)) <> 0 Then c(i, 1) = b(j, 4)
                End If
            End If
        Next
    Next
    Sheets("Лист1").[B1].Resize(UBound(c, 1)).Value = c
End Sub
Чем шире угол зрения, тем он тупее.

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет по нескольким условиям amki6 Microsoft Office Excel 4 20.02.2015 11:01
Сортировка по нескольким условиям в таблице alexp21 Microsoft Office Excel 4 09.09.2013 17:39
создать макрос для поиска одинаковой строки по условиям Nick31 Microsoft Office Excel 1 17.05.2012 14:30
Счетесли по нескольким условиям Neo007 Microsoft Office Excel 4 23.09.2008 16:23
СУММЕСЛИ по нескольким условиям Gadar Microsoft Office Excel 6 26.05.2008 10:07