Я поместил имена файлов, которые я хочу выполнить, в некоторые ячейки и написал мако для Excel, чтобы вызвать файл в соответствии с местоположением. (допустим, я пишу 1.xls в ячейках Ячейки (2, "B"))
например,
A = Cells(1, "B")
B = Cells(2, "B")
C = Cells(3, "B")
Workbooks.Open Filename:=A
Windows(A).Activate
Теперь я хочу сделать VLOOKUP, посмотрев "B" (это ячейки (2, "B"), т.е. 1.xls)
из макроса i записи, он становится:
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-2],'[1.xls!R4C1:R6733C2,2,FALSE)"
Однако, поскольку я буду менять имя файла, который я хочу найти в будущем, я НЕ хочу, чтобы фаза "1.xls" появлялась в формуле ... но только местоположение (то есть B) для Excel, чтобы искать.
Что я хочу, так это, когда я устанавливаю B = Cells(2, "B")
в качестве кода и помещаю 1.xls в эту ячейку, может ли VLOOKUP в VBA стать
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-2],'[B!R4C1:R6733C2,2,FALSE)"
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-2],'[1.xls!R4C1:R6733C2,2,FALSE)"
То есть не существует «абсолютного» имени файла, а есть только адрес ячейки при размещении имени файла?
Мне нужен код VBA для этого, потому что у меня есть несколько рабочих таблиц для поиска, и все они имеют одинаковый формат (поэтому все критерии для VLOOKUP одинаковы, кроме названия). Поэтому мне нужно, чтобы Excel выполнил поиск для меня в соответствии с новым именем, которое я набрал в той же ячейке (B), но не просил меня снова выбрать критерий. Что я могу сделать?
ИЛИ Мне нужна косвенная функция для этого?
я пробовал =VLOOKUP(G2,INDIRECT("B2!R4C1:R6733C2"),2,FALSE)
, где R4C1:R6733C2
- это диапазон, который я хочу найти в файле, который я вставляю в B2. Однако приведенный выше код не работает даже вручную с использованием этой функции.