首页 文章

VBA定义动态名称范围

提问于
浏览
0

我正在寻找一种基于相邻单元格值的方式,该单元格值可以通过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 回答

  • 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
    

相关问题