Ссылка на переменную имени файла Excel из ячейки - PullRequest
0 голосов
/ 06 июля 2018

У меня есть формула Excel, которая использует GETPIVOTDATA для получения значения из другого файла pivot.

Формула I содержит ссылки на 5 местоположений в 4 других файлах, которые обновляются каждый месяц, и суммирует их в основном файле.

У меня есть файлы, открытые для этого.

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

Моя текущая формула, которую я должен обновить вручную:

=GETPIVOTDATA("Add YTD ",'[FileA P6 2018.xlsm]Monthly report'!$A$5)
+GETPIVOTDATA("Add YTD ",'[FileA P6 2018.xlsm]Monthly sub report'!$A$39)
+GETPIVOTDATA("Add YTD ",'[FileB P6 2018.xlsm]Monthly pivot'!$A$3)
+GETPIVOTDATA("Add YTD ",'[FileC P6 2018.xlsm]Monthly report'!$A$5)
+GETPIVOTDATA("Add YTD ",'[FileD P6 2018.xlsm]Monthly pivot'!$A$3)

И в следующем месяце имена файлов изменится P6 на P7.

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

B4 = 6
B5 = 2018

Я пробовал следующее безрезультатно:

=GETPIVOTDATA("Add YTD ",'[FileA P$B$4 $B$5.xlsm]Monthly report'!$A$5)
+GETPIVOTDATA("Add YTD ",'[FileA P$B$4 $B$5.xlsm]Monthly sub report'!$A$39)
+GETPIVOTDATA("Add YTD ",'[FileB P$B$4 $B$5.xlsm]Monthly pivot'!$A$3)
+GETPIVOTDATA("Add YTD ",'[FileC P$B$4 $B$5.xlsm]Monthly report'!$A$5)
+GETPIVOTDATA("Add YTD ",'[FileD P$B$4 $B$5.xlsm]Monthly pivot'!$A$3)

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Это было решено с помощью VBA и настройкой ячеек B4 и B5 тоже:

B4 = P5 2017
B5 = P6 2018

VBA:

Sub FileNameUpdate()
    Cells.Replace What:=Range("B4") & ".xlsm", Replacement:=Range("B5") & ".xlsm", _
                  LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
                  SearchFormat:=False, ReplaceFormat:=False
End Sub
0 голосов
/ 06 июля 2018

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

=INDIRECT("[FileA"&B4&B5&".xlsm]Sheet1!$E$12")

Я не уверен на 100%, как вы хотите объединить это GETPIVOTDATA - я думаю, что вы можете поместить вызов GETPIVOTDATA в вызов INDIRECT, но нужно быть осторожным с экранированием "...

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