获取一个子区域,该子区域包含除第一行单元格之外的所有单元格



我有一个范围

Set rng = Range("B5:H20")

我想创建一个子范围,其中包含除第一行rng单元格之外的所有单元格。这样做的好方法是什么?

Set subRng = 'Range("B6:H20")

混合使用偏移和调整大小

set rng = Range("B5:H20")
set subrng=rng.offset(1).resize(rng.rows.count-1)

如果只处理行,则无需在偏移量或调整大小中指定第二个参数(列)。

另一种通用方法是OffsetIntersect模式。 无论您如何进行轮班,它都比Resize工作具有优势(可以移动 1 列或行而无需重新考虑Resize部分)。

从技术上讲,它也适用于不连续的范围,尽管这种情况充其量很少见。

Set subrng = Intersect(rng.Offset(1), rng)

目的是什么?您的方法可以很好地处理注释部分。 您还可以将顶行设置为变量,并使用它...有点像

dim headerRow as Integer
headerRow = 5
Set rng = Range(Cells(headerRow,2),Cells(20,8))
Set subRng = Range(Cells(headerRow+1,2),Cells(20,8))

我不怎么使用 VBA,所以这可能不是最简单的方法,但它应该可以工作:

Set subRng = rng.Range(rng.Cells(2, 1), rng.Cells(rng.Rows.Count, rng.Columns.Count))
我认为

您正在寻找OffsetResize属性。喜欢这个:

Set rng = Range("B5:H20")
Set subRng = rng.Offset(RowOffset:=1, ColumnOffset:=0).Resize(rng.Rows.Count - 1)

或更短(但不太清楚):

Set subRng = rng.Offset(1, 0).Resize(rng.Rows.Count - 1)

这是一个包含更多信息的教程:http://www.homeandlearn.org/the_offset_property.html

最新更新