【问题标题】:Excel VLOOKUP IncrementExcel VLOOKUP 增量
【发布时间】:2019-05-19 05:17:18
【问题描述】:

我正在创建一个 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 个单元轻松递增 1。

【问题讨论】:

  • 是否可以在文件查找目录中的数字处执行?

标签: excel increment vlookup


【解决方案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 是进行批量编辑的方法,但您将无法记录此内容,因为您需要一个循环。

【讨论】:

  • 谢谢,这让生活更轻松了。有没有办法录制一个可以编辑每个粘贴的单元格的宏?
【解决方案2】:

文件会打开吗?如果是这样,您可以使用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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多