Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 尝试在VBA中填充VLOOKUP,但lookp仅适用于2个单元格_Excel_Vba_Loops - Fatal编程技术网

Excel 尝试在VBA中填充VLOOKUP,但lookp仅适用于2个单元格

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

我正在尝试编写一个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 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
没有任何好处,请参阅。