VLOOKUP в зависимости от местоположения, а не NAME - PullRequest
0 голосов
/ 06 августа 2010

Я поместил имена файлов, которые я хочу выполнить, в некоторые ячейки и написал мако для 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. Однако приведенный выше код не работает даже вручную с использованием этой функции.

1 Ответ

0 голосов
/ 09 августа 2010

По какой причине вы не смогли установить начальный диапазон, а затем смещение на основе строки, назначенной переменной?

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