Microsoft Excel 2007 – 如何为Vlookup编写一个dynamic的Table_Array
我不确定是否需要在特定的地方发布这个问题,但是这里就是这样。
警告:墙上的文字。 我需要完全解释我的情况,因为这似乎是一个独特的问题,没有多less解决scheme。
TL; DR – Master电子表格通过vlookups从“每周”电子表格中抓取数据。 每周发布一个新的电子表格。 如何自动执行vlookup以每周从新电子表格抓取数据?
现在这里是长版本…
我有一个主电子表格,使用指向另一个电子表格的vlookups。 示例代码如下:
=VLOOKUP(A2,'...OTC\2016\Reports Sent\[SALES BY SKU STORE wk 3 (retail) (2).xls]SKU'!$D$1:$G$65536,4,FALSE)
大。 十分简单。
主电子表格当前指向“第3周”的数据。 因此,[销售SKU STORE wk3 (零售)(2).xls]。 目前在电子表格所在的文件目录中,第3周的电子表格是最新的。 每个星期,一个新的电子表格将被保存在同一个文件夹,但被称为[销售SKU商店wk4 (零售)(2).xls]。 现在得到这个想法..?
我希望主电子表格能够指向新的每周数据,每次有新的电子表格存在。 所以人们会认为以某种方式使vlookup Table_Arraydynamic。 我如何做到这一点?
附加说明: – 我已经写了一个PowerShell脚本来输出所有的文件名和文件扩展名为.csv文件。 然后我创build了一个macros来将.csv数据导入到主文件中的一个单独的表单中。 我做了一个潜在的查找表。 下面的示例数据,我们将其称为“文件名单”:
[SALES BY SKU STORE wk1 (retail)(2).xls]
[SALES BY SKU STORE wk2 (retail)(2).xls]
[SALES BY SKU STORE wk3 (retail)(2).xls]
解决scheme尝试但失败,因为我的Excel /macros/ VBA的知识是非常有限的: –
-
文件目的地不会更改。 文件名中唯一改变的部分是星期数。 每当一个新文件被添加到文件名单中时,我已经考虑了+ 1到星期编号的想法。 我不知道如何做到这一点。
-
我已经尝试了与Table_Array和文件名单的CONTCATENATE的想法。 再次,我不知道如何解决这个问题。 浏览networking导致我相信“
INDIRECT
是前进的方向。 -
想到了通过VBA编写
IF
语句的想法。 在某种程度上可能在vlookup中对文件名进行硬编码。 再次,我不知道如何做到这一点。
请任何人都可以告诉我如何做到这一点? 如果你能回答一个想法,我会尽我所能去模仿它。 在这一点上我会很感激。
谢谢。
就像这样 – 我认为你将永远不会超过53个财政周:
Sub updateWorkbook() Dim n As Long Const csFOLDER_PATH As String = "C:\your path\" For n = 53 To 1 Step -1 If Dir(csFOLDER_PATH & "SALES BY SKU STORE wk" & n & " (retail)(2).xls") <> vbNullString Then FileCopy csFOLDER_PATH & "SALES BY SKU STORE wk" & n & " (retail)(2).xls", csFOLDER_PATH & "SALES BY SKU STORE CURRENT (retail)(2).xls" Exit For End If Next n End Sub
您可以从主工作簿的“打开”事件中调用此方法。 在ThisWorkbook
模块中,添加:
Private Sub workbook_open updateWorkbook End Sub
你可以用吗?
=VLOOKUP(A2,INDIRECT("'...OTC\2016\Reports Sent\[SALES BY SKU STORE wk " & A1 & " (retail) (2).xls]SKU'!$D$1:$G$65536"),4,FALSE)
A1是你想要从中导入数据的周数?
- Excel中的dynamic范围
- dynamic范围和一个静态项目通过VBAcombobox
- 如何dynamic地将单元格值放入excel的多页文本框中?
- 在Excel中进行dynamicsearch和过滤
- .End(xlDown)错误地select了最后一个非空白单元格
- Excel VBA Userformdynamic运行时控件 – 跨多个控件触发相同的类事件
- Excel自动化使用C#dynamic
- Excel求解器VBA,多个dynamicinput
- 如何从Microsoft.Office.Interop.Excel.Range对象的“value”属性中获取dynamictypesvariables的值