VBA定义dynamic名称范围

我正在寻找一种方法来命名/重命名一个范围的基础上,相邻单元格的值,可以改变sorting/价值的变化等通过VBA。

我试图概述如何布置网格的例子。 这是所有包含的是一个预先定义的表格。 Yes/No列包含条件。 如果值是Y那么我希望它右边的单元格包含在命名范围内。

我已经看了各种dynamic命名的范围查询,build议使用OFFSET,但是我正在努力编写代码,以便让我在任何地方。

  Column1 Column2 Column3 Column4 Row1 Y/N1 Balance1 Y/N2 Balance2 Row2 Y 1.000 Y 5.000 Row3 Y 2.000 N 0.000 Row4 N 0.000 N 0.000 Row5 Y 3.000 N 0.000 Row6 Y 4.000 N 0.000 

我相信我已经想出了答案。 不知道这是否是最有效的,但它似乎按预期执行。

 Sub GetRange() Dim rngselect As Range, rngfinal As Range, cell As Range Dim ws As Worksheet Set ws = Worksheets("Sheet1") Set rngselect = ws.Range("$A:$A,$C:$C") For Each cell In rngselect If cell.Value = "Y" Then If rngfinal Is Nothing Then Set rngfinal = ws.Range(Cells(cell.Row, cell.Column + 1).Address) Else Set rngfinal = Application.Union(rngfinal, ws.Range(Cells(cell.Row, cell.Column + 1).Address)) End If End If Next cell Names.Add Name:="test", RefersTo:=rngfinal End Sub