VBA定义动态名称范围

时间:2014-08-20 15:16:05

标签: excel vba excel-vba dynamic range

我正在寻找一种基于相邻单元格值命名/重命名范围的方法,该单元格值可以通过VBA进行排序/值更改等。

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

我已经看过各种动态的命名范围查询,建议使用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

1 个答案:

答案 0 :(得分:2)

我相信我已经找到了答案。不确定它是否效率最高但似乎按预期执行。

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