在具有设定列数的两个命名单元格之间创建动态范围

时间:2015-08-03 16:13:08

标签: excel vba excel-vba range

我需要在两个命名单元格之间创建动态范围(单元格和相应的行不应包含在选择中)。列数总是相同的(4),只有行数在变化。这是第一步。 第二个是将几个这些范围放入另一个excel列表中的编号列表中,但这是我希望自己能够找到的东西。非常感谢你。

2 个答案:

答案 0 :(得分:0)

我可能会尝试这样的事情:

Sub RangeBetween()
Dim rng1 As Range, rng2 As Range
Dim betRange As Range

Set rng1 = Range("A1")   'sample data
Set rng2 = Range("A20")

Set betRange = Range(rng1.Offset(1, 0).Address & ":" & rng2.Offset(-1, 3).Address)

End Sub

这当然假设您的命名单元格位于同一列。如果您的命名单元格默认情况下始终展开4列,请将偏移量(-1,3)替换为偏移量(-1,0)。

答案 1 :(得分:0)

此代码定义名为“NewNamedRange”的命名范围。该代码假设(并要求)您的包围单元已经命名为范围,名称为“UpperLeft”和“LowerRight”。偏移公式从命名范围中排除包围单元格。因此,如果“UpperLeft”是单元格D2,“LowerRight”是单元格G22,则“NewNamedRange”将是“D3:G21”的范围。由于命名范围定义是公式,因此当包围单元格定义更改时,NewNamedRange将动态更改。希望这会有所帮助。

Sub NamedRange()

ActiveWorkbook.Names.Add _
Name:="NewNamedRange", _
RefersTo:="=OFFSET(UpperLeft,1,0):OFFSET(LowerRight,-1,0)"
End Sub