检查列以查看列中是否存在命名范围

时间:2016-07-15 19:51:32

标签: vba excel-vba excel

我在电子表格中处理了300多个命名区域,每个区域都标识单个列。 (它们不是列名,因为有许多重复项)

问题:如果我的命名范围是:

myRange = Range(cells(2,7).address) 

并且活动单元格

cells(5,7)

有没有办法确定我能从我的活动单元格中的列号中识别出我与命名范围在同一列中的事实,并返回该命名范围的名称?

像.......

这样的东西
Function Get_RangeName(MyColumn) as string
   For Each nm In ThisWorkbook.Names
       if ***code to get coloumn number here*** = Mycolumn then
          Get_RangeName = nm.name
       end if
   next nm
end function

我只是不知道如何从名称中获取列号

2 个答案:

答案 0 :(得分:4)

您可以使用Intersect()函数

Function Get_RangeName(MyColumn as Long) as string
   For Each nm In ThisWorkbook.Names
       if Not Intersect(Columns(Mycolumn),Range(nm)) Is Nothing then
          Get_RangeName = nm.name
          Exit For
       end if
   next nm
end function

答案 1 :(得分:3)

使用Intersect method确定两个范围是否共享任何单元格。

if not intersect(columns(cells(5,7).column), range("myNamedRange")) is nothing then
    'the full column and the named range share at least 1 cell
end if