2013-07-30 3 views
2

У меня есть около 30 разных рабочих листов в книге, которые имеют в каждом из них более 30 тыс. Записей. Во втором столбце каждой строки есть путь к файлу.VBA - удалить строки, которые не содержат определенного значения

Это имя файла может быть любым. С другой стороны, у меня есть список из примерно 450 различных имен файлов, которые я проверяю.

Если путь к файлу не содержит ни одного из этих 450 имен файлов, я хочу, чтобы строка была удалена.

Я стараюсь сделать это как можно быстрее и эффективнее. Я не очень опытен в VBA и Excel.

+0

FYI это займет очень долгое время, так как вы будете проверять (30000 * 30) * 450 – Elias

+0

Я понимаю это. Я пытаюсь понять, есть ли более эффективные способы сделать это. Насколько мне известно, это единственный способ. – Johnrad

+0

Если имена файлов хранятся в хеш-таблице, время уменьшается до (30000 * 30) +450. – Brilliand

ответ

3

Один простой способ сделать это, без написания VBA, чтобы использовать ВПР:

=VLOOKUP(A1, <absolute_reference_to_file_list>, 1, TRUE)=A1 

Затем используйте инструменты фильтрации, чтобы удалить все строки с FALSE в новом столбце. Небольшое количество столбцов может отображать «# N/A»; к этому следует относиться так же, как ЛОЖЬ.

Обратите внимание, что этот метод требует, чтобы список файлов был отсортирован заранее, так как Excel будет выполнять двоичный поиск в списке имен файлов.

Это не самый быстрый способ, но он довольно быстрый и вполне может быть достаточным для ваших нужд.

+0

Прошу прощения за мое незнакомое знакомство с excel. Но как я могу ссылаться на ? У меня есть список файлов в другой таблице. – Johnrad

+0

Excel выполнит большую часть работы для вас, если вы поместите курсор в нужное место в формуле, затем перейдите к списку файлов (который также должен быть открыт) и выберите список файлов. На самом деле, я думаю, если вы нажмете верхнюю часть столбца с файлом в нем (т. Е. Буквой «A»), Excel сделает именно то, что вам нужно. Затем вернитесь туда, где вы редактировали формулу, и нажмите Enter. – Brilliand

+0

После этого абсолютная ссылка должна выглядеть примерно так: '[File List.xlsx] Sheet1 '! $ A $ 2: $ A $ 451' или' '[File List.xlsx] Sheet1'! A: A'. Знаки доллара - это то, что делает ссылку абсолютной. Вы, вероятно, не нуждаетесь в них, если ссылка находится во второй форме, хотя это не помешает добавить их. – Brilliand