Используйте значение в ячейке в качестве имени листа для работы с формулой

#excel #excel-formula #vba

#excel #excel-формула #vba

Вопрос:

У меня есть 2 файла Excel, на одном я использую vlookup для извлечения данных из другого файла, но моя проблема заключается в следующем:

Файл 1: в этом файле 12 листов с именами, такими как январь, февраль, Marc и т. Д. . Файл 2: на этом у меня есть vlookup, который ссылается на файл 1

Теперь в файле 2 у меня есть ячейка A1, в которой в качестве значения указано слово Январь .

У меня есть эта формула в файле 2

 =IFERROR(VLOOKUP(A2,'[Weekly Team Report- Salvador.xlsx]January'!$A$1:$B$3,2,FALSE),"")
  

Как вы можете видеть, ссылается на лист с именем «Январь»

Я хотел бы знать, есть ли какой-либо способ использовать информацию, которую я имею в ячейке A1, в качестве имени листа, т.Е. Если я изменю значение в своей ячейке A1 на февраль, имя листа в формуле должно измениться на февраль вместо января

Я надеюсь, что кто-нибудь меня поймет : (

Ответ №1:

Да, это то, для чего =INDIRECT() предназначена формула:

  =IFERROR(VLOOKUP(A2,Indirect("'[Weekly Team Report- Salvador.xlsx]" amp; A1 amp; "'!$A$1:$B$3"),2,FALSE),"")
  

Обратите внимание, что весь диапазон, на который ссылаются, застрял внутри indirect() формулы в виде строки. А затем мы объединяем значение из A1 в эту строку.

Комментарии:

1. Я не понимаю, почему мы объединяем A1 с January , значение в A1 уже является именем листа, которое я ищу. Я попытался сделать следующее: =IFERROR(VLOOKUP(A2,Indirect(«‘[Еженедельный отчет команды- Salvador.xlsx ]» amp;A1amp;»amp;’!$A $ 1:$ B $ 3″),2, FALSE),»») но это не работает

2. Извиняюсь. Я удалил слово Январь, поскольку это бессмысленно. Попробуйте запустить формулу без косвенного и убедитесь, что она дает правильную ссылку "'[Weekly Team Report- Salvador.xlsx]" amp; A1 amp; "'!$A$1:$B$3"