我需要在宏中添加一段代码来复制和粘贴一系列数据。
我遇到的问题是数据可以在任何行上开始和结束。
是否可以这样做?
e.g。目前,数据在单元格C10中开始并在单元格I20中结束。但是下个月它可以从C5开始到I40结束。
列范围将始终保持不变,即C:I,但每次都会更改行。
如何添加代码以搜索C列中的第一个数据实例并复制后面的所有数据?
由于
答案 0 :(得分:1)
以下是一些可能有用的代码段
获取C中的第一个单元格
If Range("C1").Value <> "" Then
Set firstcell = Range("C1")
Else
Set firstcell = Range("C1").End(xlDown)
End If
我测试C1,因为如果这是C中唯一带有值的单元格,它会一直到底。 p>
之后,在那之后获得底部单元格
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