[英]Is it possible to select a range of data via a macro if the start and end row is variable?
我需要在宏中添加一段代碼,以復制並粘貼一系列數據。
我遇到的問題是數據可以在任何行上開始和結束。
是否有可能做到這一點?
例如,當前數據在單元格C10中開始,在單元格I20中結束。 但是下個月它可以從C5開始,到I40結束。
列范圍將始終保持相同,即C:I,但行將每次更改。
如何添加代碼在C列中搜索數據的第一個實例並復制隨后的所有數據?
謝謝
這里有一些代碼片段可能會有所幫助
獲取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
列中任意位置開始的任意數量的數據行。 它不考慮標題行或任何其他內容。 如果您的數據總是至少從第5行開始,那么您可以調整C1
值,並使用C5:C1000
而不是C:C
。 然后,在VBA中,您可以僅使用Range("namedRange")
。 復制而不需要計算起點和終點。
如果在運行宏之前突出顯示了所需的單元格,則可以使用“選擇”來引用選定的范圍
即,代替
Range("C10:i20").Clear
你可以寫
Selection.Clear
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.