Использование функции ВПР на рабочих листах без ссылки на исходный рабочий лист

Использование функции ВПР на рабочих листах без ссылки на исходный рабочий лист

У меня есть рабочая книга, которая запускает несколько макросов для извлечения копий листов из ряда других рабочих книг. Я пытаюсь настроить один файл, который пользователи могут копировать в папки своих проектов, а затем просто использовать, не настраивая VLOOKUPформулы каждый раз. Поэтому они копируют файл NewProject.xlsm с сервера в папку своего проекта, а затем используют макросы для извлечения различных нужных им листов из рабочих книг серий 100, 110 или 120, которые находятся на сервере.

В рабочей книге серии 100 есть лист с именем ItemsE, в нем есть VLOOKUPдва столбца и проверка данных в другом. Когда пользователи вставляют лист 100_1A в свой файл проекта, он вставляет VLOOKUP, но ссылается на исходный файл.

Файл NewProject также содержит лист ItemsE со всей той же информацией. Мой вопрос в том, могу ли я использовать формулу VLOOKUPв рабочей книге серии 100 на листах 100_1A и 100_1C и сделать так, чтобы она ссылалась на лист ItemsE в файле NewProject вместо файла серии 100? Первоначально я поместил следующую формулу в файл серии 100.

=VLOOKUP(D24,ItemsE!A:C,2,FALSE)

Когда я открываю файл NewProject после импорта в него необходимых мне листов серии 100, формула выглядит так:

=VLOOKUP(D22,'W:\Design\[C_DE100Series.xlsm]ItemsE'!A:C,2,FALSE)

Есть ли способ это исправить? Будет ли это работать и при проверке данных?

Спасибо за помощь, и извините за длинное объяснение. Если вам нужна дополнительная информация от меня, дайте мне знать.

решение1

Вы можете определить общее имя для элементовE в формулах вашего рабочего листа.

Например, сделайте так, чтобы имя ссылалось на «место». При перетаскивании рабочего листа в принимающую рабочую книгу имя, определенное для принимающей рабочей книги, использоваться не будет, а «место» по-прежнему будет ссылаться на определение имени отправляющей рабочей книги.

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

ActiveWorkbook.Names("place").Delete

В этом случае будет использоваться имя, уже определенное в принимающей рабочей книге.

Связанный контент