Excel VBA Vlookup问题
我是一个精通VBA的初学者 下面是我编写的代码,它应该遍历工作表中的一列,通过引用其左侧的列值和同一工作簿中的另一个工作表来填充值,以找到正确的对应值 我使用了Excel VBA Vlookup问题,vba,excel,ssis,Vba,Excel,Ssis,我是一个精通VBA的初学者 下面是我编写的代码,它应该遍历工作表中的一列,通过引用其左侧的列值和同一工作簿中的另一个工作表来填充值,以找到正确的对应值 我使用了While循环,因此我可以将此VLOOKUP宏应用于列中的每个单元格(仅查找值changes,它应该是表示左侧列的变量): Dim结果为字符串 将工作表设置为工作表 将rownum设置为整数 作为整数的Dim迭代器 将U值设置为字符串 Dim vlookupString1作为字符串 Set sheet=ActiveWorkbook.She
While
循环,因此我可以将此VLOOKUP
宏应用于列中的每个单元格(仅查找值changes,它应该是表示左侧列的变量):
Dim结果为字符串
将工作表设置为工作表
将rownum设置为整数
作为整数的Dim迭代器
将U值设置为字符串
Dim vlookupString1作为字符串
Set sheet=ActiveWorkbook.Sheets(“数据表”)
rownum=图纸范围(“A1”).End(xlDown).Row
设置迭代器=3
而迭代器 Selection.Value=vlookup1String
以
迭代器=迭代器+1
结束时
我在说“如果或选择或子…”时遇到错误@end
1) 我有语法错误吗?2) 我的方法正确吗。我只在另一个地方观察过这种字符串方法来设计
VLOOKUPS
。它似乎最合适。修复代码
您应该在循环中使用Wend
notEnd While
清洁剂替代品但您可以在一次拍摄中填充整个范围,如下所示
End(xlup)
从底部向上“循环”一个范围比使用End(xlDown)
向下看要好(不依赖空格)Select
rng1
设置从图纸数据表a列中最后使用的单元格到A3的工作范围rng1.Offset(0,范围(“N1”).列-1)
表示将rng1(即A列)偏移13列,以使用N列(即偏移A偏移14-1)进行公式插入“=VLOOKUP(RC[-1],“GICS子行业代码”!R2C1:R155C2,2,FALSE)”
李>
R1C1
speak中,RC[-1]
表示引用同一行中的单元格,但左侧有一列。因此,在N3
中,公式将以=VLOOKUP(M4..)
开始,因此在N30
中,公式将以“=VLOOKUP(M30..)等开始Sub QuickFill()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("datasheet")
Set rng1 = ws.Range(ws.[a3], ws.Cells(Rows.Count, "A").End(xlUp))
rng1.Offset(0, Range("N1").Column - 1).FormulaR1C1 = "=VLOOKUP(RC[-1],'GICS Sub-industry codes'!R2C1:R155C2,2,FALSE)"
End Sub
Selection.Value=vlookup1String可能应该是Selection.Formula=vlookup1String我也不认为你使用ActiveSheet.Cells做任何事情,你可能会把它取出来。首先,确保工作表名称不太长,在使用VBA代码时避免使用空格。另外,请尝试选择。公式使用
WEND
而不是END WHILE
只是想一想:iterator
是一个整数,因此在赋值时不使用Set
,只需使用iterator=3
。此外,您的几个变量要么没有声明,要么拼写错误。在代码顶部使用Option Explicit
,即使在运行代码之前也可以更正这些错误。您能解释一下您的代码吗?我不能完全理解它。特别是偏移量的作用。我有几个这样的vlookups,我需要为我的数据表上的其他4-5列创建,所以我需要复制相同的。谢谢:)通过在“数据表”工作表的a列中查找M列中的单元格值,在“GICS…”工作表的a列中搜索该单元格,并在B列中获取该行的相应值,即可获得“数据表”工作表N列中单元格的值。。。这就是你现在的逻辑吗?@user1638796我已经添加了更多细节。希望这对汉克斯很有帮助。。代码运行良好!在过去的两天里,我一直在寻找一个关于如何在vba中有效使用宏的有用解释:)大道具!
Sub QuickFill()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("datasheet")
Set rng1 = ws.Range(ws.[a3], ws.Cells(Rows.Count, "A").End(xlUp))
rng1.Offset(0, Range("N1").Column - 1).FormulaR1C1 = "=VLOOKUP(RC[-1],'GICS Sub-industry codes'!R2C1:R155C2,2,FALSE)"
End Sub