Как динамически определить используемое имя таблицы в Excel?

2

Я хочу иметь VLOOKUP, где таблица, которую я использую, определяется динамически .... например:

If I have tables named Rnd_1, Rnd_2, Rnd_3...

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

I have tried =VLOOKUP("value",CONCATENATE("Rnd_"+A1),2,FALSE) where A1 has a valid numeric value.
Это не будет работать.

I also tried =VLOOKUP("value",INDIRECT(CONCATENATE("Rnd_"+A1)),2,FALSE)
Это также не будет работать.

Как имя таблицы для использования может быть определено динамически?

Спасибо!

Джордж
источник
Не могли бы вы добавить пример макета электронной таблицы, чтобы мы могли увидеть, чего вы пытаетесь достичь?
hedgepig
Спасибо за ответ ... но на самом деле, у меня, должно быть, была проблема с синтаксисом в моей формуле, потому что версия с INDIRECT работает как я ожидал.
Джордж
1
Проблема в вашей оригинальной формуле, "Rnd_"+A1которая должна быть"Rnd_",A1
Инженер Тост
Если вы хотите использовать оператор для конкатенации, Excel использует &и нет +. Так же "Rnd_" & A1будет производить вашу строку.
Байрон Уолл

Ответы:

1

И инженер Тост, и Байрон Уолл дали вам правильный ответ. concatenate()Функция будет concatenate("Rnd_", $A$1)или вы могли бы просто сделать этот аргумент"Rnd_"&$A$1

Я бы добавил одну вещь. Если вы оставите A1как есть, он будет обрабатываться как относительная ссылка. Это означает, что когда вы копируете и вставляете формулу, она будет ссылаться на ячейку в новой позиции относительно того, где она была в старой позиции. Для того, чтобы сохранить точку формулы у A1вас нужно использовать $, поэтому $A$1. Можно также назвать ячейку, в которой вы хотите выбрать значение и сделать это "Rnd_"&ValName, чтобы ссылка всегда указывала на эту одну ячейку ... То есть, если вы не хотите, чтобы она была относительной.

Последний совет. Если у вас очень большие наборы данных, вы хотите, чтобы все было как можно проще, так как это снизит накладные расходы. Создайте ячейку конкатенации рядом с вашей динамической ячейкой, произнесите B1и сделайте ее, ="Rnd_"&$A$1а затем vlookupукажите аргумент B1, в противном случае вы можете в конечном итоге вызывать функцию конкатенации в Excel тысячи раз, когда в этом нет необходимости, что замедляет выполнение вашего запроса. расчеты.

AMR
источник