【发布时间】:2013-09-18 13:52:55
【问题描述】:
我正在尝试制作一个看起来很简单的宏,但事实证明它比我想象的要难。我开始使用“指向和单击”方法制作它,但它并没有我想象的那么动态。基本上我使用 vlookup 从另一个工作表中查找单元格 A2 中的名称,然后将 D 列中的数字复制到当前工作表中。查看代码时,这部分看起来像这样:
Range("D2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-3],'Downstairs'!R[-1]C[-3]:R[200]C[14],4,0)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & lastrow&)
找到第一个数字后,我会尝试自动填充其余数字。当你运行它时它会起作用,但我认为这只是因为名称是有序的。但是,如果名称不按顺序排列,它将找不到正确的数字,部分原因是 R[] 和 C[] 中的所有数字随着您向下行而不断变化。如果我在列表中添加更多名称,我认为它不会起作用,这是我需要它做的事情。我将 R[] 中的数字从 93 更改为 200,因为我真的不知道如何合并我之前制作的 lastrow 对象,而且我不知道另一种方法可以使这个动态化。有没有更好的方法来做到这一点?
【问题讨论】:
-
您的代码末尾有一个额外的 & 不应该存在。但是,请发布您的确切、实际代码 - 而不是“类似”。 (没有人愿意浪费时间查看不真实的代码。)
-
我不了解其他所有人,但我对您的问题感到非常困惑。实际的代码会很好,并且是电子表格的布局。然后添加您的输入和输出的具体示例以及您的预期输出(您真正想要的)。另外,我仍然试图了解宏的实际用途,而不是手动自动归档它......
-
为什么是 VBA 而不是公式?
-
抱歉,这是实际代码,但它只是其中的一部分。好的,这就是背景。大楼里有 3 台打印机,它们都为大约 90 人收集当月制作的彩色和黑白副本和打印数据。他们还收集对我来说几乎没用的其他数据。然后将数据排列在表格中。所以会有三张纸,每张都有一台打印机,每台打印机返回 4 个数字(打印彩色和黑白,并复印彩色和黑白)。现在的问题是我们不需要出现在打印机提供的数据中的每个人。
-
顺便说一句,此打印机数据直接来自打印机的 csv 文件。我所做的是用我们实际需要的名字制作一个列表,然后我们与另一个列表交叉引用以从列表中的人那里获取指纹。我不想做超过 90 个 vlookup,所以这就是我尝试自动填充的原因。我希望这是有道理的。
标签: excel vba vlookup autofill