录制宏时,根据单元格中的文本值选择范围

时间:2017-01-03 12:07:24

标签: excel vba excel-vba

我有一个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 
  • 任何人都可以帮我解决这个问题吗?

1 个答案:

答案 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