我正在创建一个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个细胞增加一个。
答案 0 :(得分:1)
不容易。在我看来,您不仅需要增加190113,而且还需要在2月1日切换到190201,并且文件路径中还标出了年和月。
这可以用公式来构造。您可以创建自动生成路径和文件名位的公式。
="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是进行批量编辑的方法,但是您将无法记录此内容,因为需要循环。
答案 1 :(得分:0)
将打开文件吗?如果可以,那么您可以使用web
,我为您准备了一个基本示例:
indirect
我可以将其向下拖动,文件名中的=INDIRECT("'C:\Reporting Archive\[Daily Sales and Orders Report - 2018121" & ROW(A1)+5 & ".xlsx]Summary - Volume'!$C$41")
将以6开头,然后递增到7然后是8。
如果您没有打开文件,则需要使用VBA。从关闭的工作簿中读取而不打开它时,我总是使用ExecuteExcel4Macro方法,如下所示:
2018121