繁体   English   中英

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

[英]How to create named ranges using for loop in Excel?

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

示例数据集

我的目标是为从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”;等等)?

先感谢您。

使用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
 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

像这样的东西就足够了:

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()用作条件,因为命名范围不能以数字开头。

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

你真的不需要循环:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM