Использование двух значений на листе для фильтрации и возврата значений из таблицы на другом листе - PullRequest
0 голосов
/ 03 октября 2019

Я довольно новичок в кодировании и последние несколько часов гуглял, пытаясь решить эту проблему, но, кажется, это немного выходит за рамки того, что я могу сделать, поэтому я был бы очень благодарен за некоторыеhelp

В Sheet1 у меня есть таблица, в которой столбцы находятся между M - CV (175 столбцов). Для каждого столбца у меня есть значение «Идентификационный номер» в строке 3. От строки 6 до конца таблицы у меня есть несколько «поисковых терминов», разделенных запятыми в столбце CV

В Sheet2,соответствующие «номера ID» находятся в столбце B. Столбец AN содержит строки.

Для каждого значения идентификационного номера в sheet1, я ищу найти все соответствующие ячейки в sheet2, где идентификационный номер в столбце B одинаков, а в столбце AN листа sheet2 содержится хотя бы один из "условия поиска "в столбце CV

. Для каждого идентификационного номера я надеюсь объединить записи в столбце AN листа 2, которые соответствуют указанным выше критериям, и вставить их в строку 5 соответствующего столбца в листе 1

.

Я обошел довольно много кругов, пытаясь это сделать, и я вернулся к квадрату 1 без кода, чтобы показать это.

Я пытался исследовать как функцию автофильтра, так и использование циклов for. Проведенное мною исследование показывает, что циклы for довольно медленные для большого набора данных.

Я надеюсь найти решение, которое было бы настолько легко читаемым и понятным, насколько это возможно

Я надеюсь, что предоставил достаточно информации, чтобы все могли понять и помочь

Заранее спасибо

1 Ответ

0 голосов
/ 03 октября 2019

Срок моей подписки на Excel истек, и я начал использовать Google Sheets для большей части своей работы с электронными таблицами, поэтому я проверил это там. Некоторое преобразование может потребоваться. Я сделал это с помощью формул, а не VBA, и не уверен, что это изменит что-то для вас.

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

  1. С помощью этой настройки мы хотим перевести столбец поисковых запросов листа 2 в правильный ряд листа 1 с помощью ключа VLOOKUP . Я сделал именованный диапазон в листах, который содержал все мои данные на листе 2, и назвал его «dst». Тогда моя формула была =VLOOKUP(A2, dst, 7, true), так как мой ключ на листе 1 находился в столбце A, dst был диапазоном, который я искал, мой столбец с моими поисковыми терминами с разделителями был столбцом 7 относительно dst, и я упорядочил лист 2 по ключу. Я вставил эту формулу относительно всех строк по мере необходимости.
  2. Мы хотим построить строку регулярного выражения, используя наши условия поиска по нескольким столбцам на листе 1, в одну ячейку. Я использовал =JOIN("|", B2:E2) на листе 1, так как мои условия поиска были в столбцах B: E, и это привело к тому, что регулярное выражение выглядело для меня так: alligator|dog|rabbit|lizard, где все аллигаторы, собаки, кролики и ящерицы были поисковыми терминами вэтот рядПри необходимости вставьте относительное число вниз.
  3. Мы хотим запустить наше регулярное выражение для нашей целевой ячейки поиска, содержащей термины поиска, разделенные запятыми. Я запустил =REGEXMATCH(F2, G2), где F2 - это мои условия поиска с разделителями из листа 2, а G2 - мое построенное регулярное выражение для строки. При необходимости вставьте относительное число вниз.

Скриншот моего заполненного листа 1: image

Как только вы узнаете, у каких ячеек есть совпадения, вы можете делать все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...