【发布时间】:2012-10-22 11:00:59
【问题描述】:
我是 Excel VBA 的初学者。
以下是我编写的代码,它应该遍历工作表中的列,通过引用左侧的列值填充值并引用同一工作簿中的另一个工作表来查找正确的对应值应该是什么.
我使用了While 循环,因此我可以将此VLOOKUP 宏应用于列中的每个单元格(只有查找值会发生变化,这应该是表示左侧列的变量):
Dim result As String
Dim sheet As Worksheet
Dim rownum As Integer
Dim iterator As Integer
Dim lookup_value As String
Dim vlookupString1 As String
Set sheet = ActiveWorkbook.Sheets("datasheet")
rownum = sheet.Range("A1").End(xlDown).Row
Set iterator = 3
While iterator < rownum
lookup = "M" & iterator
vlookup1String = "=VLOOKUP(" & lookup & ",'GICS Sub-industry codes'!$A$2:$B$155,2,FALSE)"
With ActiveSheet.Cells
Range("N" & iterator).Select
Selection.Value = vlookup1String
End With
iterator = iterator + 1
End While
我在说“预期 if 或 select 或 sub...”时收到错误 @end
1) 我是否犯了语法错误?
2)我的方法是否正确。我只在另一个地方观察到这种在vba 中设计VLOOKUPS 的字符串方法。它似乎最合适。
【问题讨论】:
-
Selection.Value = vlookup1String 应该是 Selection.Formula = vlookup1String
-
另外我不认为你的 With ActiveSheet.Cells 有什么作用,你可以把它拿出来。
-
首先,请确保工作表名称不要太长,并且在使用 VBA 代码时避免使用空格。另外,试试 Selection.Formula
-
使用
WEND而不是END WHILE -
只是一些想法:
iterator是一个整数,因此在分配时不要使用Set,只需使用iterator = 3。此外,您的一些变量要么未声明,要么拼写错误。即使在运行代码之前,也可以在代码顶部使用Option Explicit来纠正这些类型的错误。