【发布时间】:2014-05-20 15:06:59
【问题描述】:
我录制了以下宏:
ActiveCell.FormulaR1C1 = _
"=INDEX(Sheet1!R2C2:R491C2,MATCH(Sheet2!RC[-2],Sheet1!R2C1:R491C1,0))"
Range("D2").End (xlToLeft)
Range("C2").End (xlDown)
Range("D882").Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
正如你们中的一些人可能会说的那样,这不仅是记录的结果,而且是试图从所述记录中编辑“选择”语句的结果。但是,VBA 告诉我我错误地使用了 .End 属性。最好的编辑方法是什么,以便不使用 select,并且范围的结尾仅取决于为每一行填充的列 A 中的值?
更通用的宏的结构是:
1) Select cell D2 in Sheet(1) (the cell under Header_1)
2) Write an INDEX(MATCH()) formula here referencing some specific columns in Sheet(1) and Sheet(2)
3) Select D2 in Sheet(2) and copy down to Dn where n is the first row where An = "".
然后我会简单地对其他两个所需的 INDEX(MATCH()) 公式重复此操作。
更新:
还有一种方法可以设置 INDEX(MATCH()),以便只要单元格不为空白(例如 R2C1:Rnonblank),列范围就会继续。更具体地说,我可以只使用相同的 & Cells() 方法吗?这些范围会更长或更短,具体取决于目标工作簿。
【问题讨论】: