首页 文章

如果起始行和结束行是可变的,是否可以通过宏选择一系列数据?

提问于
浏览
0

我需要在我的宏中添加一段代码来复制和粘贴一系列数据 .

我遇到的问题是数据可以在任何行上开始和结束 .

是否有可能做到这一点?

例如目前,数据在单元格C10中开始并在单元格I20中结束 . 但是下个月它可以从C5开始到I40结束 .

列范围将始终保持不变,即C:I,但该行每次都会更改 .

如何添加代码来搜索C列中的第一个数据实例并复制下面的所有数据?

谢谢

3 回答

  • -1

    如果在运行宏之前突出显示所需的单元格,则可以使用“选择”来引用所选范围

    即,而不是

    Range("C10:i20").Clear
    

    你可以写

    Selection.Clear
    
  • 0

    以下是一些可能有用的代码段

    获取C中的第一个单元格

    If Range("C1").Value <> "" Then
        Set firstcell = Range("C1")
    Else
        Set firstcell = Range("C1").End(xlDown)
    End If
    

    我测试C1,因为如果它是C中唯一具有值的单元格,它将一直到底部 .

    之后,在此之后获得底部单元格

    Set lastcell = Cells(Rows.Count, "I").End(xlUp)
    
  • 1

    另一种方法可能是在电子表格中使用命名范围来定义要复制的范围 .

    =OFFSET(C1,MATCH(TRUE,INDEX(NOT(ISBLANK(C:C)),0),0)-1,0,COUNTA(C:C),7)
    

    该公式将从列 C 中的任何位置开始选择任意数量的数据行 . 它不考虑 Headers 行或任何其他内容 . 如果您的数据总是至少从第5行开始,那么您可以调整 C1 值并使用 C5:C1000 而不是 C:C . 然后,在VBA中,您可以使用 Range("namedRange") . 复制而不是必须计算起点和终点 .

相关问题