查找未使用的名称(Microsoft Excel)
理查德有一本他已经使用了一段时间的工作簿,里面有很多名字(命名范围,命名公式等)。他想知道是否有一种简单的方法来查找根本不使用的名称,因为他想摆脱这些名称。
没有内置的方法可以摆脱这些未使用的名称。但是,您可以创建一个宏来为您解决问题。通过使用Find方法找出哪些名称具有可以“找到”的引用,最容易做到这一点。如果找不到引用,则该名称未使用。
Sub RidOfNames() Dim myName As Name Dim fdMsg As String On Error Resume Next fdMsg = "" For Each myName In Names If Cells.Find(What:=myName.Name, _ After:=ActiveCell, _ LookIn:=xlFormulas, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ SearchFormat:=False).Activate = False Then fdMsg = fdMsg & myName.Name & vbCr ActiveWorkbook.Names(myName.Name).Delete End If Next myName If fdMsg = "" Then MsgBox "No unused names found in the workbook" Else MsgBox "Names Deleted:" & vbCr & fdMsg End If End Sub
宏逐步遍历Names集合的所有元素,并搜索每个名称。如果找不到该名称,则删除该名称。宏完成后,它将显示一个消息框,其中列出了从工作簿中删除的名称。
但是,RidOfNames宏存在问题。它不会检查所有可能使用的名称。例如,它无法确定是否在宏中引用了名称,或者它们是否在工作簿中的其他工作表(包括隐藏的工作表)上使用。它还不会检查是否在条件格式设置规则或图表,下拉列表和其他对象中使用了特定名称。即使存在缺陷,RidOfNames仍可以在没有其他宏(除了此宏)的简单工作簿中处理奇迹,并且这些工作簿的大多数数据都包含在单个工作表中。
如果您不想创建自己的宏,则可以选择使用Jan Karel Pieterse的免费加载项。名为“名称管理器”的加载项使您(猜测什么?)比使用本机Excel更好地管理名称。它提供的功能之一是能够删除不再需要的名称。您可以在这里找到加载项:
http://www.jkp-ads.com/OfficeMarketPlaceNM-EN.asp
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(10998)适用于Microsoft Excel 2007、2010和2013。您可以在以下版本的旧版Excel菜单界面中找到该技巧的版本:“ link:/ excel-Finding_Unused_Names [查找未使用的名称]”。