我需要在我的宏中添加一段代码来复制和粘贴一系列数据 .
我遇到的问题是数据可以在任何行上开始和结束 .
是否有可能做到这一点?
例如目前,数据在单元格C10中开始并在单元格I20中结束 . 但是下个月它可以从C5开始到I40结束 .
列范围将始终保持不变,即C:I,但该行每次都会更改 .
如何添加代码来搜索C列中的第一个数据实例并复制下面的所有数据?
谢谢
如果在运行宏之前突出显示所需的单元格,则可以使用“选择”来引用所选范围
即,而不是
Range("C10:i20").Clear
你可以写
Selection.Clear
以下是一些可能有用的代码段
获取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)
另一种方法可能是在电子表格中使用命名范围来定义要复制的范围 .
=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") . 复制而不是必须计算起点和终点 .
C
C1
C5:C1000
C:C
Range("namedRange")
3 回答
如果在运行宏之前突出显示所需的单元格,则可以使用“选择”来引用所选范围
即,而不是
你可以写
以下是一些可能有用的代码段
获取C中的第一个单元格
我测试C1,因为如果它是C中唯一具有值的单元格,它将一直到底部 .
之后,在此之后获得底部单元格
另一种方法可能是在电子表格中使用命名范围来定义要复制的范围 .
该公式将从列
C
中的任何位置开始选择任意数量的数据行 . 它不考虑 Headers 行或任何其他内容 . 如果您的数据总是至少从第5行开始,那么您可以调整C1
值并使用C5:C1000
而不是C:C
. 然后,在VBA中,您可以使用Range("namedRange")
. 复制而不是必须计算起点和终点 .