我正在寻找一种基于相邻单元格值命名/重命名范围的方法,该单元格值可以通过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
答案 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