Excel VLOOKUP Инкремент - PullRequest
       17

Excel VLOOKUP Инкремент

0 голосов
/ 18 декабря 2018

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

Формула, которую я сейчас использую, такова:

=VLOOKUP("Oil Production(Sm³)",'G:\DPNA\Non_Op_Assets\Hib\Pe\Production\Reports\Daily Report\2019\01 Jan19\[190113 Daily Report.xls]Daily Report'!$A$1:$P$500,3,FALSE)*1

Мне было интересно, можно ли с легкостью увеличить значение 190113 на единицу для следующих 365 ячеек.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Будут ли открыты файлы?Если это так, вы можете использовать indirect. Я просто собрал для вас базовый пример:

=INDIRECT("'C:\Reporting Archive\[Daily Sales and Orders Report - 2018121" & ROW(A1)+5 & ".xlsx]Summary - Volume'!$C$41")

Я могу перетащить его вниз, и 2018121 в имени файла будет начинаться с6, затем увеличьте до 7, затем 8.

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

strPath = "C:\Test\"
strFile = "Book1.xls"
strSheet = "Sheet1"
strRng = Range("A1")

strRef = "'" & strPath & "[" & strFile & "]" & strSheet & "'!" & strRng

Result = ExecuteExcel4Macro(strRef)
0 голосов
/ 18 декабря 2018

не легко.Мне кажется, что вам нужно не только увеличить значение 190113, но и перейти к 190201 для 1 февраля, а также указать путь к файлу с указанием года и месяца.

Однако это можно построить с помощью формул.Вы можете создавать формулы, которые автоматически генерируют путь и имя файла.

="Daily Report\"&YEAR(A2)&"\"&TEXT(A2,"dd MMMyy")&"\["&TEXT(A2,"yymmdd")&" Daily Report.xls]Daily Report'!$A$1:$P$500,3,FALSE)*1"

enter image description here

Следующий вопрос - как вы это используете.Вы можете подключить это к функции Indirect, но если Indirect ссылается на внешний файл, этот файл должен быть открыт для работы Indirect.Который побеждает цель.

Итак, другой вариант заключается в том, что вы строите полную формулу в виде текстовой строки,

="=VLOOKUP(""Oil Production(Sm³)"",'G:\DPNA\Non_Op_Assets\Hib\Pe\Production\Daily Report\"&YEAR(A2)&"\"&TEXT(A2,"dd MMMyy")&"\["&TEXT(A2,"yymmdd")&" Daily Report.xls]Daily Report'!$A$1:$P$500,3,FALSE)*1"

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

Редактировать: VBA - это способ массового редактирования, но вы не сможете записать это, так как вам понадобится цикл.

...