我有一个csv文件我记录了一个宏来操作CSV文件的数据,因为我需要它。宏的一部分查找包含文本"月索引"的单元格。一旦找到该单元,就选择一个范围(例如,A9,B50)。问题是,"月指数"单元格可以位于A7,A8,A11等中,因此如果单元格引用不同,宏会提取错误的数据。我选择的范围是一致的月份指数"发现所以我想我可以在某种程度上使用偏移指令,但不确定。
目前处理此位的宏看起来像这样:
Range("A1").Select
Cells.Find(What:="month index", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Range("A9:B9").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
答案 0 :(得分:0)
使用宏录制器非常适合开始执行任务,但它会增加大量额外的低效代码。了解如何Avoid Select/Activate。
你需要抓住'Month index'出现的行,因为它是动态的并且移动,你不能一直选择相同的范围,它需要根据找到的行移动...试试这些方面的东西。
Dim iRow as Integer, iMax as Integer
iRow = Cells.Find(What:="month index", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
iMax = Cells(iRow, "A").End(XlDown).Row
Range("A" & iRow & ":B" & iMax).Cut