在命名范围内工作,引用命名范围的行和列

时间:2014-08-13 13:23:19

标签: excel

所以我对命名范围以及引用和保留它们的方式有疑问。

我能够从命名范围中提取特定行,然后循环遍历所有列。但是当我尝试获取列号时,我不会从命名范围内获取它,而是从整个工作表中获取它。

    For Each rng1 In Tray_System.Rows
        If rng1.Cells(1, 1).Value = "Truck Dumper" Then
            Debug.Print rng1.Address
            Set Tray_row = rng1
        End If
    Next

    For Each rng2 In tray_row.Columns
    If rng2.Value = "X" Then
        Debug.Print rng2.Column
    End If
    Next

我希望我能清楚自己的问题,我想简短说明。

基本上,我要做的是:

  • 查找指定范围中的哪一行以我正在查找的内容开头(例如“Truck Dumper”)
  • 从该行开始,查看每个单元格中的值是否为X
  • 对于每个具有X的单元格,检索列的名称

问题是我从rgn2.column得到的列号与指定范围无关。

1 个答案:

答案 0 :(得分:0)

我不会直接使用单元格,而是使用数据数组。这样更快,你只有那些数据,而不是整张表。

示例:

 aTray_System = Range("Tray_System").Value

 For lRow = LBound(aTray_System, 1) To UBound(aTray_System, 1)
  For lColumn = LBound(aTray_System, 2) To UBound(aTray_System, 2)
   'manipulate
   'aTray_System(lRow, lColumn) = aTray_System(lRow, lColumn) & "changed"
   'use
   Debug.Print aTray_System(lRow, lColumn)
  Next
 Next

 'write back, if changed
 Range("Tray_System").Value = aTray_System

问候

阿克塞尔