您是否经常使用包含数十个(或数百个)

的工作表?命名的单元格,而其中大多数名称是不必要的?清理名称可能是一项艰巨的任务,但是摆脱不必要的名称可以使您的工作簿更小,更高效。问题是,如何一次性消除很多不必要的名称?您当然可以一次删除它们,但是这样的过程很快就会很麻烦。您也可以使用名称管理器将其删除(按Ctrl + F3),但这也非常耗时。

一种可能的解决方案是简单地创建一个新工作簿并将单元格从旧工作簿复制到新工作簿。突出显示旧工作簿中的单元格,使用Ctrl + C复制它们,然后将它们粘贴到新工作簿中的工作表中。这将复制旧工作簿中的几乎所有内容-公式,格式等。它不会使复制超出打印设置或范围名称。剩下的唯一任务是在新工作簿中重新定义所需的几个名称。

如果您喜欢使用旧的工作簿(带有所有名称的工作簿),则最好创建一个宏,该宏将为您删除名称。您需要一个宏,该宏将允许您删除除要保留的名称以外的所有名称。以下是完成此任务的简单方法:

Sub DeleteSomeNames()

Dim vKeep     Dim nm As Name     Dim x As Integer     Dim AWF As WorksheetFunction

'Add Names to keep here     vKeep = Array("Name1", "Name2")



Set AWF = Application.WorksheetFunction     For Each nm In ActiveWorkbook.Names         x = 0         On Error Resume Next         x = AWF.Match(nm.Name, vKeep, 0)

On Error GoTo 0         If x = 0 Then             nm.Delete         End If     Next     Set AWF = Nothing End Sub

在使用宏之前,请修改创建vKeep数组的行。

只需输入要保留在数组中的名称,每个名称都用引号引起来并用逗号分隔。 (在此处显示的示例中,名称“ Name1”和“ Name2”将保留。)宏循环遍历工作簿中的所有名称,并使用Match函数查看名称在数组中是否为1。如果不是,则将其删除。

如果您希望使用第三方解决方案来管理工作簿中的名称,则最好的选择是Jan Karel Pieterse编写的Name Manager加载项。您可以在此处找到有关该加载项的更多信息:

http://www.jkp-ads.com/officemarketplacenm-en.asp

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11787)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Deleting_All_Names_but_a_Few [删除少数几个人的所有名字]。