Приращение ВПР в Excel

Я создаю файл 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 ячеек.

Возможно ли это сделать, если номер находится в каталоге поиска файлов?

Mitchell Lawlor 18.12.2018 19:41
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
1
134
2

Ответы 2

Не легко. Мне кажется, что вам нужно не только увеличить 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"

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

Спасибо, это немного облегчает жизнь. Есть ли способ записать макрос, который может редактировать каждую вставленную ячейку?

Mitchell Lawlor 18.12.2018 20:36

Файлы будут открыты? Если это так, вы можете использовать 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)

Другие вопросы по теме