【问题标题】:Check a column to see if there is a named range in a column检查列以查看列中是否存在命名范围
【发布时间】:2016-07-16 03:56:43
【问题描述】:

我正在处理电子表格中的 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

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

【问题讨论】:

  • Range(nm).Column 将返回名称包含在字符串变量 nm 中的范围的列号
  • @YowE3K - 如果命名范围涵盖多个列怎么办?
  • @Jeeped 每一个只有一列。这是一种权宜之计,在重新设计期间只会持续几个月。范围永远不会超过一个单元格。
  • @Jeeped 在这个问题中,每个命名范围都被称为一个单元格,因此它们不会跨越列。
  • @YowE3K - 是的,你是对的。我想我为提供更多普遍性所做的努力被误导了。

标签: vba excel


【解决方案1】:

你可以使用 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多