Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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_Excel_Vba_Conditional Statements_Vlookup - Fatal编程技术网

Excel VBA代替vlookup

Excel VBA代替vlookup,excel,vba,conditional-statements,vlookup,Excel,Vba,Conditional Statements,Vlookup,我刚开始使用VBA。 我有一本有两张纸的工作簿。在第一页的“D”栏中,我有零件号。 在第二页,我在“A”栏中有零件号,在“B”栏中有每个零件号的说明。 在表1中,我想收集以下数据: 如果表2列“A”包含表1列“D”中的零件号,则列“O”值需要为表2列“B” 现在通过录制宏自行使用Vlookup: Application.CutCopyMode = False Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=

我刚开始使用VBA。 我有一本有两张纸的工作簿。在第一页的“D”栏中,我有零件号。 在第二页,我在“A”栏中有零件号,在“B”栏中有每个零件号的说明。 在表1中,我想收集以下数据:

  • 如果表2列“A”包含表1列“D”中的零件号,则列“O”值需要为表2列“B”
现在通过录制宏自行使用Vlookup:

Application.CutCopyMode = False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],'RIG MB'!C[-14]:C[-13],2,0)"
    Range("O2").Select
    Selection.AutoFill Destination:=Range("O2:O3430")
    Range("O2:O3430").Select
我需要一个vba代码,但不是vlookup工作表函数,我需要更快的东西。 我还想循环它,直到Sheet1列“D”中有数据。
提前谢谢你

下面是一个不循环的示例,但应该比VLOOKUP更快:

Range("O2:O3430").Formula = "=INDEX('RIG MB'!B:B, MATCH(D2, 'RIG MB'!A:A, 0))

下面是一个不循环的示例,但应该比VLOOKUP更快:

Range("O2:O3430").Formula = "=INDEX('RIG MB'!B:B, MATCH(D2, 'RIG MB'!A:A, 0))

希望不使用“Vlookup()”或任何其他函数都无法带来数据。如果是宏,则还需要使用“Vlookup()”或任何其他匹配函数。我通过录制宏尝试了您的方法,通过自动“Vlookup()”并粘贴相同的特殊内容,效果很好。如果你想知道录制宏的步骤,请告诉我,我会发布相同的答案。我录制了宏,但速度太慢了,因为我已经使用了5000多行。我需要一个代码,是什么处理这些行直到它们有值,而不是一个精确的范围(因为我在Sheet2中添加了更多的行,所以我现在也必须更新宏。请您通过修改您的问题上传查询。您已经尝试录制了宏。这样,您就可以理解为什么它很慢。您可以使用字典,这将快得多。希望不使用“Vlookup()无法带来数据。)'或任何其他函数。如果它的宏还需要使用'Vlookup()'或任何其他匹配函数。我已通过录制宏尝试了您的方法,通过自动'Vlookup()它工作正常'并粘贴相同的特殊内容。如果您想知道录制宏的步骤,请告诉我,我将在回答中发布相同的内容。我录制了宏,但速度很慢,因为我已使用了5000多行。我需要一个代码,如何处理行,直到它们具有值,而不是精确的范围(因为我在Sheet2中添加了更多的行,所以我现在也必须更新宏。请您通过修改您的问题上传查询。您已经尝试录制了宏。这样,您就可以理解为什么它很慢。您可以使用字典,这将快得多。)。