繁体   English   中英

Excel VBA 索引/查找

[英]Excel VBA Index/Lookup

  Dim worksheet1 As Worksheet
  Set worksheet1 = ActiveSheet

  Dim workbook2 As Workbook
  Set workbook2 = Workbooks.Open(("F:\Project Sweep\Kim Checklist\" & worksheet1.Cells(19, 12) & "\Consumers.xlsx"))

  Dim targetString As String
  targetString = "index('" & workbook2.Path & "\[" & workbook2.Name & "]Time'!$A$1:$E$366, 1, 1)"

Dim i As Long
For i = 0 To 4
    worksheet1.Cells(7 + (i * 2), 7) = Application.Calculate(targetString)
Next i

该代码试图执行以下操作:

  • 从应该调用函数的工作表 1 中,应该从工作表 2 中的工作表 Time 中提取位于单元格 A1 处的值(稍后更新以在代码工作时进行迭代),并将其放置在单元格(7,7)、单元格(9, 7)、单元格(11, 7)等中。
  • 上面的代码给出了错误“编译错误:参数数量错误或属性分配无效”

我使用的另一个选项是

 worksheet1.Range(Cells(7 + (i * 2), 7)).Formula = "=" & targetString

字面上只是将公式放在单元格中。 但这给出了错误“运行时错误 1004:对象的方法范围失败”

任何帮助将不胜感激,提前感谢您的时间。

您正在寻找 Application.Evaluate,而不是 Application.Calculate。

For i = 0 To 4
    worksheet1.Cells(7 + (i * 2), 7) = Application.Evaluate(targetString)
Next i

我有点不清楚在该循环中会发生什么变化,因为看起来像公式的字符串始终是静态的。

使用 .Address 和 External:=True 解析完整的外部路径、工作簿、工作表和范围。

with workbook2.worksheets("Time").range("A1:E366")
    targetString = "index(" & .address(external:=true) & ", 1, 1)"
    debug.print targetString
end with

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM