【发布时间】:2017-08-16 09:41:06
【问题描述】:
我的问题是:如何通过 VBA 将多个 vLookup 公式添加到一个单元格中?
我知道我可以像这样添加一个 vLookUp:
... = Application.WorksheetFunction.vLookUp("Search","Matrix","Index")
我的问题是:我有一个 255 页的工作簿,在我的“总和表”中,我需要在这 255 个工作表中搜索我需要的数据的变量公式。 因此,excel 中宏的输出需要类似于(全部在一个单元格中):
=vLoookUp($A2;Sheet1!A1:A1000;2)+SVERWEIS($A2;Sheet2!A1:A1000;2)+ ...(255 times)
甚至可以用 VBA 做类似的事情吗?
这是我用来将不同选项分成 255 张的代码:
这是我迄今为止编写的用于拆分股票的不同变体的代码: (它有点工作,但我确信它不是很有效,我对所有这些编程东西都是新手)
Sub Sheets()
Application.ScreenUpdating = False
ActiveWindow.WindowState = xlMinimized
Dim Data As String
Dim i As Long
Dim k As Long
Dim x As Long
Dim y As String
For i = 2 To 255
Sheetname = Worksheets("Input").Cells(i, 1).Value
Worksheets.Add.Name = Sheetname
ActiveSheet.Move After:=Worksheets(ActiveWorkbook.Sheets.Count)
x = 1
For k = 2 To 876
Data = Worksheets("Input").Cells(i, k).Value
y = Cells(1, x).Address(RowAbsolute:=False, ColumnAbsolute:=False)
BloomB = "=BDH(" & y & ",""TURNOVER"",""8/1/2011"",""4/30/2016"",""Dir=V"",""Dts=S"",""Sort=A"",""Quote=C"",""QtTyp=Y"",""Days=T"",""Per=cd"",""DtFmt=D"",""UseDPDF=Y"")"
Worksheets(Sheetname).Cells(1, x) = Data
Worksheets(Sheetname).Cells(2, x) = BloomB
x = x + 2
Next k
Application.Wait (Now + TimeValue("0:00:05"))
Next i
ActiveWindow.WindowState = xlMaximized
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
我知道这个问题很模糊。但是由于 VBA 的技能有限,我根本无法提出更具体的问题。我真的希望还有人可以帮助我。
-
查看循环表单,使用变量存储总和并将每个后续循环添加到其中。
-
Excel 2016 中公式的最大长度为 8192,因此如果查找时间过长,您可能会接近该限制。您可能必须将其分成两个或三个单元格。不清楚您是要在 VB 中计算(如您的示例所示)还是使用 VB 创建由 Excel 计算引擎计算的公式?
-
每张纸的布局都一样吗? IE。你能把每张纸上的同一个单元格相加吗?
-
尽管 Bloomberg 没有提供每个日期的每只股票的数据,但您最好更改流程,以便您的工作表确实包含每个日期的每只股票的详细信息. (即更新使用每日彭博数据填充工作表的代码。)然后进行
=SUM(Sheet1:Sheet255!A5)类型计算就变成了一个简单的练习。