Используя динамические каналы к внешним рабочим книгам в Excel

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

Основные действия рабочей книги только как уровень представления и получать/лежать в основе данные в датированных подпапках имеют последовательные имена и форматы.

Предположите, что в моей основной рабочей книге на 'Sheet1' у меня есть следующая функция в A1:

='C:\Development\GridsResults\20101115\[DATA_sheet_20101115_D.xlsx]Stresses'!$C$9

Вы заметите, что две 'датированных' части в ссылке файла - это должно быть предоставлено пользователем. В этом случае предоставленная дата 15-Nov-2010. Теперь, если пользователь предоставляет 23-Nov-2010, вышеупомянутая ссылка должна быть

='C:\Development\GridsResults\20101120\[DATA_sheet_20101120_D.xlsx]Stresses'!$C$9

У меня уже есть формулы, которые создают вышеупомянутые пути к файлам в моем Links лист в моей основной рабочей книге. Это - динамическая часть, которая создает ссылки. Теперь в Links покройте, предположите, что результат моего волшебства находится в ячейке B3 и именованный названный Диапазон DATA т.е.

C:\Development\GridsResults\20101120\[DATA_sheet_20101120_D.xlsx]

Таким образом в теории, каков результат должен быть, та ячейка A1 на Sheet1 в моей основной рабочей книге должен использовать этот сгенерированный путь к файлу

="'" & DATA & "Stresses'!$C$9

Существует ли комбинация стандартных функций Excel, которые могут достигнуть этого?

0
задан 24.11.2010, 08:51

2 ответа

Использовать =INDIRECT("'" & DATA & "Stresses'!$C$9").

0
ответ дан 27.11.2019, 18:49

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

Я думаю, что Ваш лучший выбор состоял бы в том, чтобы создать макрос; метод активации был бы ваше дело, конечно. Макрос выглядел бы примерно так.

Dim L1 As Variant, L2 As Variant
L1 = ThisWorkbook.Names("DATA").RefersToRange
L2 = "='" & L1 & "Stresses'!R9C3"
Sheets("Sheet1").Range("A1").FormulaR1C1 = L2
0
ответ дан 27.11.2019, 18:49

Теги

Похожие вопросы