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

时间:2015-11-26 14:55:59

标签: excel excel-vba vba

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

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

是否可以这样做?

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

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

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

由于

3 个答案:

答案 0 :(得分:1)

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

获取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 :(得分:0)

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

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

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

答案 2 :(得分:-1)

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

即代替

 Range("C10:i20").Clear

你可以写

Selection.Clear