我打算使某些工作或多或少地自动化,因此我正在考虑使用Excel VBA。基本上,我想要一个单独的工作簿来从一些不同的工作簿中获取数据。
为此,我尝试了:
Dim openWb As Workbook
Dim openWs As Worksheet
Path = Dir("PathToFile\File.xlsx")
filepath = "PathToFile"
Set openWb = Workbooks.Open(filepath & Path)
Set openWs = openWb.Sheets("Sheet1")
currentwb.Sheets("Sheet2").Cells.(2, 20).Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1))
我要实现的基本上是从与“ John”相对应的行和与“ Age”相对应的列中获取一个值。为了避免别人更改文件会导致任何问题的情况,我在较大范围(而不是仅一列)中使用Match。
这使我在行上出现语法错误:
Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1))
我认为这与我在VLookUp参数中使用“ openWs”的方式有关。谁能确定我认为错了的地方?
我正在使用Path和filepath作为变量,因为该程序以后每个月都会有一个新的Path和一个新的filepath,这是我所知道的最好的实现方式(基本上,path和filepath包含月份名称和年份名称我根据今天的日期进行了排序。
将Match和VLOOKUP前面的所有“ openWs”替换为“ Application”,使其显示为:
Value = Application.VLOOKUP("John",openWs.Range("A1:S30"), Application.Match("Age", openWs.Range("A1:S1")))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句