我正在尝试创建以每个范围中左上角单元格命名的命名范围的单元格。这说明我的意思:
在这里,我希望有4个命名范围(名称A,名称B,名称C,名称D),因此我可以引用它们。有没有办法让excel查找B列中以“Names”开头的任何单元格,并在它击中以“Names”开头的下一个单元格时切断范围?如果这是不可能的,我道歉,我仍然是新手,并且不确定这是否可行。任何帮助表示赞赏!
答案 0 :(得分:3)
这是一个快速抛出的脚本,提供了如何处理此问题的想法。绝不是很漂亮,但确实显示了步骤。这可以更复杂地编写,即与所有单元格一起工作,而不是在第一个名称实例之后开始(参见范围(“B3”)用于开始,而范围(“B4”)用于开始循环单元格)< / p>
Sub DefineRanges()
Dim rngStart As Range
Set rngStart = Range("B3")
Dim NamedRangeCount As Integer
NamedRangeCount = 0
Dim NameRangeName As String
Dim LastRow As Integer
For Each cell In Range("B4:B18")
If LCase(Left(cell.Value, 5)) = "names" Then
NameRangeName = "Name_" & NamedRangeCount
ActiveWorkbook.Names.Add Name:=NameRangeName, RefersToLocal:=Range(rngStart.Address & ":D" & cell.Row - 1)
Set rngStart = Range("B" & cell.Row)
NamedRangeCount = NamedRangeCount + 1
End If
LastRow = cell.Row
Next
NameRangeName = "Name_" & NamedRangeCount
ActiveWorkbook.Names.Add Name:=NameRangeName, RefersToLocal:=Range(rngStart.Address & ":D" & LastRow)
End Sub