【发布时间】:2016-10-10 01:38:45
【问题描述】:
我正在开发一种分析数据的工具。要分析的数据被手动复制到第一张表中,然后我计划运行一个宏,将数据分析到第二张表中。我需要每个条目的一个属性的 vlookup 函数:
Worksheets("x1").Cells(z, 4).Value = Application.WorksheetFunction.VLookup(Worksheets("x1").Cells(z, 2).Value, Worksheets("x2").Range("$A$1:$B$23"), 2, False)
显然 z 是指示当前行的变量(我确实在“for”循环中复制了大约 700 行数据)。
每当我尝试执行整个子程序时,它都会返回运行时错误(1004)。奇怪的是,每当我使用单个步骤执行宏时,它都可以正常工作。
有人知道这里发生了什么吗?
提前致谢
【问题讨论】:
-
从
Range中删除$符号,使其显示为:Worksheets("x1").Cells(z, 4).Value = Application.WorksheetFunction.VLookup(Worksheets("x1").Cells(z, 2).Value, Worksheets("x2").Range("A1:B23"), 2, False) -
这并不能解决问题。
-
您是否单步浏览了整个 700 行数据?尝试编写一个错误处理程序(在错误 goto 上)并查看它在哪一行失败。
-
我解决了这个问题。运行时错误是由从 vlookup 列中选择值的草率公式引起的。这可能是代码在没有 vlookup 的情况下工作的原因。感谢您向我介绍错误处理的概念。
标签: excel vba loops macros vlookup