Excel - 检索单元名称和范围名称

时间:2016-07-10 13:14:29

标签: excel range named

当我查找min / max时,不仅我想要结果,还有结果所在的单元格名称以及它的范围名称。

e.g。 = MAX(B2:C20)

B6中的最大值为100,B6是名为第1周的命名范围的一部分。

因此,我们希望有一个可以检索的公式:

100,B6,WEEK 1

请帮助,我整夜都在寻找这个。

非常感谢。

1 个答案:

答案 0 :(得分:1)

在这种情况下,我将范围B5:B7定义为名称WEEK1

enter image description here

和这个简短的 UDF()

Public Function FindMax(rIN As Range) As String
    Dim mx As Variant, rF As Range, N As Name
    mx = Application.WorksheetFunction.Max(rIN)
    Set rF = rIN.Find(What:=mx, After:=rIN(1))

    For Each N In ThisWorkbook.Names
        If Not Intersect(rF, Range(N.RefersTo)) Is Nothing Then
            lab = N.Name
        End If
    Next N

    FindMax = mx & ", " & rF.Address(0, 0) & ", " & lab
End Function

返回:

enter image description here

您必须小心排除打印范围等。

修改#1:

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      =FindMax(A1:Z100)
      

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!