如何在Excel中使用for循环创建命名范围?

时间:2017-11-28 14:31:37

标签: excel vba excel-vba

我想在Excel中使用for循环脚本创建命名范围。

Example dataset

我的目标是为从B列到D列的每一行创建范围,这些列以列AEg命名:范围'alfae'包含B1:D1,范围'alfag'包含B2:D2,依此类推。

这是我创建的基本脚本:

Sub ExampleMacro()
'
' ExampleMacro Macro
'
'
        Range("B1:D1").Select
        ActiveWorkbook.Names.Add Name:="alfae", RefersToR1C1:="=Munka1!R1C2:R1C4"
    End Sub

我的问题:我怎样才能遍历A列中的每一行?如何用单元格的值命名范围(例如A1:D1 =“alfae”; A2:D2 =“alfag”;等等)?

提前谢谢。

6 个答案:

答案 0 :(得分:4)

使用 A 列中的建议名称,尝试:

Sub WhatsInAName()
    For Each r In Columns(1).SpecialCells(2)
        Range(r.Offset(, 1), r.Offset(, 3)).Name = r.Value
    Next r
End Sub

修改#1:

要保存一些输入,您可以替换:

Range(r.Offset(, 1), r.Offset(, 3)).Name = r.Value

使用:

r.Offset(, 1).Resize(, 3).Name = r.Value

答案 1 :(得分:2)

 sub Example()
 Dim r as range
 set r =  range("A1")
 Do
     ActiveWorkbook.Names.Add Name:=r.text, RefersToR1C1:="=Munka1!R" & r.row & "C2:R" & r.row & "C4"
     set r = r.offset(1.0)
Loop until r = ""
End SUb

答案 2 :(得分:2)

这样的事情就足够了:

Sub TestMe()

    Dim myRange     As Range
    Dim myRow       As Range

    Set myRange = Range("A1:D4")

    For Each myRow In myRange.Rows
        If Not IsNumeric(Left, Cells(myRow.Row, 1)) Then
          ActiveWorkbook.Names.Add Name:=Cells(myRow.Row, 1), _
          RefersToR1C1:=Range(myRange(myRow.Row, 2), myRange(myRow.Row, myRow.Columns - 1))
        End If
    Next myRow

End Sub

请确保A1:A4中有一些值。您可以更进一步,更新代码。 Left()用作条件,因为命名范围不能以数字开头。

答案 3 :(得分:2)

Sub MakeNamedRanges()

startrow = 1
endrow = Cells(Rows.Count, "A").End(xlUp).Row

For r = startrow To endrow
    Range(Cells(r, 2), Cells(r, 4)).Select
    rangename = Cells(r, 1)
    ActiveWorkbook.Names.Add Name:=rangename, RefersToR1C1:="=Munka1!R" & r & "C2:R" & r & "C4"
Next r

End Sub

答案 4 :(得分:2)

你真的不需要循环:

Sub ExampleMacro()
    Dim r As Range
    Set r = Application.Intersect(Sheet4.Range("A1").CurrentRegion, Sheet4.Range("A:D"))
    r.CreateNames Left:=True
End Sub

答案 5 :(得分:1)

根据您要从中调用公式的位置,您可以使用在将数据转换为Excel表(也称为ListObject)时获得的内置范围名称来实现此目的。使用Ctrl + T键盘快捷键,或从功能区中选择“插入>表格”。多列引用语法如下: 表3 = [@ [列2]:[Column4]] ...其中[Column2]和[Column4]是列的名称。