获取包含范围内所有单元格的子范围,但第一行除外?

时间:2015-04-10 16:34:22

标签: excel vba excel-vba

我有一个范围

Set rng = Range("B5:H20")

我想创建一个包含除rng第一行之外的所有单元格的子范围。有什么好办法呢?

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

5 个答案:

答案 0 :(得分:5)

使用偏移和调整大小的混合

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

如果您只使用行,则不需要在offset或resize中指定第二个参数(列)。

答案 1 :(得分:3)

另一种通用方法是OffsetIntersect模式。无论你如何进行转换,它都优于Resize同样的工作(可以移动1列或行,而无需重新考虑Resize部分)。

它在技术上也适用于不连续的范围,尽管用例很少见。

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

答案 2 :(得分:0)

目的是什么?您的方法可以与评论的部分一起使用。您也可以将顶行设置为变量,并使用...类似

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))

答案 3 :(得分:0)

我认为您正在寻找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

答案 4 :(得分:0)

我没有使用VBA,所以这可能不是最简单的方法,但它应该有效:

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