Excel 尝试在VBA中填充VLOOKUP,但lookp仅适用于2个单元格
我正在尝试编写一个VBA代码,thta可以帮助我从C驱动器上的另一个位置获取Vlookup值,但显然只有前两个单元格可以工作 你能帮我更正这个代码吗?对VBA来说真的很陌生,只是在Looops的时候尝试一下我的水域Excel 尝试在VBA中填充VLOOKUP,但lookp仅适用于2个单元格,excel,vba,loops,Excel,Vba,Loops,我正在尝试编写一个VBA代码,thta可以帮助我从C驱动器上的另一个位置获取Vlookup值,但显然只有前两个单元格可以工作 你能帮我更正这个代码吗?对VBA来说真的很陌生,只是在Looops的时候尝试一下我的水域 Sub Copy3() Dim lookfor As Range Dim table_array As Range Dim table_array_col As Integer Dim lookFor_col As Integer Dim W
Sub Copy3()
Dim lookfor As Range
Dim table_array As Range
Dim table_array_col As Integer
Dim lookFor_col As Integer
Dim Wbk As Workbook
Dim Rows As Integer
Rows = 2
Do While Rows < 60
Set lookfor = Cells(Rows, 1)
Set Wbk = Workbooks.Open("C:\Users\XXX.xlsx")
Set table_array = Wbk.Sheets("Sheet1").Range("B2:H60")
table_array_col = 5
lookFor_col = ThisWorkbook.Sheets("Sheet1").UsedRange.Columns.Count - 2
ThisWorkbook.Sheets("Sheet1").Cells(Rows, lookFor_col).Formula = Application.VLookup(lookfor.Value, table_array, table_array_col, 0)
Rows = Rows + 1
Loop
End Sub
子副本3()
模糊查找范围
Dim table_数组作为范围
Dim表格\u数组\u列为整数
Dim lookFor_col为整数
将Wbk设置为工作簿
将行设置为整数
行数=2
当行数小于60时执行此操作
设置查找=单元格(行,1)
设置Wbk=Workbooks.Open(“C:\Users\XXX.xlsx”)
设置表格数组=Wbk.Sheets(“Sheet1”).范围(“B2:H60”)
表\u数组\u列=5
lookFor_col=thiswook.Sheets(“Sheet1”).UsedRange.Columns.Count-2
ThisWorkbook.Sheets(“Sheet1”).Cells(行,查找列).Formula=Application.VLookup(查找值,表数组,表数组列,0)
行=行+1
环
端接头
我想我找到了错误Set lookfor=Cells(行,1)
缺少限定符,可能未引用正确的工作簿<代码>工作簿。打开更改活动工作簿。当活动工作簿在执行过程中发生更改时,不合格的范围容易导致错误
我通过添加对thiswoolk.Sheets(“Sheet1”)
的引用来纠正这一点,并清理了我注意到的一些其他小问题。值得注意的是,行是Excel VBA中内置的范围对象之一。尽可能避免使用已定义的对象名作为变量名
子副本3()
常量表\u数组\u列为整数=5
模糊查找范围
将行设置为整数
Dim lookFor_col为整数
lookFor_col=Sh.UsedRange.Columns.Count-2
将Wbk设置为工作簿
设置Wbk=Workbooks.Open(“C:\Users\XXX.xlsx”)
Dim table_数组作为范围
设置表格数组=Wbk.Sheets(“Sheet1”).范围(“B2:H60”)
将Sh设置为工作表
Set Sh=ThisWorkbook.Sheets(“Sheet1”)
对于第2行到第59行
设置lookfor=Sh.Cells(第1行)
Sh.Cells(Row,lookFor\u col).Value=Application.VLookup(lookFor.Value,table\u array,table\u array\u col,0)
下一排
端接头
您是在尝试向单元格中写入公式还是值?然后注意<代码>设置WBK=工作簿。打开(“C:\用户\xxx .xLSx”)< /C> >(和其他行)应该在循环之外。也考虑一致的外壳,并避免SnaKeKY情况。然后将所有这些Integer
更改为Long
。。。。在此处使用Integer
没有任何好处,请参阅。