Excel VBA创建动态命名范围

Excel VBA创建动态命名范围,excel,excel-formula,vba,Excel,Excel Formula,Vba,我正在尝试创建以每个区域中左上角的单元格命名的单元格命名区域。这说明了我的意思: 在这里,我希望有4个命名范围(名称A、名称B、名称C、名称D),以便我可以引用它们。有没有办法让excel查找B列中以“名称”开头的任何单元格,并在其到达下一个以“名称”开头的单元格时将其截断?我很抱歉,如果这是不可能的,我仍然是新的excel,不知道这是可行的。感谢您的帮助 这是一个快速拼凑的脚本,提供了如何处理此问题的想法。它一点也不漂亮,但确实显示了步骤。这可以更复杂地编写,即使用所有单元格,而不是在名称的

我正在尝试创建以每个区域中左上角的单元格命名的单元格命名区域。这说明了我的意思:


在这里,我希望有4个命名范围(名称A、名称B、名称C、名称D),以便我可以引用它们。有没有办法让excel查找B列中以“名称”开头的任何单元格,并在其到达下一个以“名称”开头的单元格时将其截断?我很抱歉,如果这是不可能的,我仍然是新的excel,不知道这是可行的。感谢您的帮助

这是一个快速拼凑的脚本,提供了如何处理此问题的想法。它一点也不漂亮,但确实显示了步骤。这可以更复杂地编写,即使用所有单元格,而不是在名称的第一个实例之后开始(参见范围(“B3”)中的开始,以及范围(“B4”)中的开始单元格循环)


这是一个快速拼凑的脚本,提供了如何实现这一点的想法。它一点也不漂亮,但确实显示了步骤。这可以更复杂地编写,即使用所有单元格,而不是在名称的第一个实例之后开始(参见范围(“B3”)中的开始,以及范围(“B4”)中的开始单元格循环)


这完全符合我的要求!谢谢你让它变得简单,我可以很容易地理解你所做的,现在更好地理解它。我非常感谢你的帮助。这完全符合我的愿望!谢谢你让它变得简单,我可以很容易地理解你所做的,现在更好地理解它。我非常感谢你的帮助。
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