当Michael在Excel中执行“查找全部”操作时,该程序将有帮助地显示包含他要搜索的内容的所有单元格的列表。

Michael希望将该单元格地址列表复制到另一个工作表中,因此他想知道是否可以将列表复制到剪贴板中,以便将其粘贴到工作表中。

有几种方法可以完成此任务,其中大多数涉及宏的使用。但是,在介绍基于宏的方法之前,让我们看一下可以使用命名范围和名称管理器访问地址的方法:

。与以前一样使用FindAll,但不要关闭“查找和替换”对话框。

。在显示的地址列表中,滚动到底部,按住Shift键,然后单击最后一个匹配项。 Excel选择所有匹配的单元格。

。按Esc键关闭“查找和替换”对话框。匹配的单元格仍全部选中。

。在“名称”框中键入名称(在“公式”栏的左侧,在单元格A1的正上方)。这将创建一个包含所有选定单元格的命名范围。

。显示功能区的“公式”选项卡。

。单击“名称管理器”工具。 Excel将显示“名称管理器”对话框。 (请参见图1。)

。单击您在步骤4中创建的名称。 。单元格列表将在对话框底部的“引用到”框中。

此时,您可以将信息复制到“引用到”框中,然后将其粘贴到所需的任何位置(包括另一个工作表)。粘贴数据后,您需要稍微按摩一下数据,因为列表就是这样-单元地址的串行列表。

显然,这会影响您的工作簿,因为它会创建一个命名范围。如果您多次执行此操作,则会创建多个命名范围。

当然,如果您需要经常执行任务,这很快就会变得笨拙。这是宏解决方案起作用的地方。下面是一个宏的示例,该宏将搜索特定值,然后将包含该值的每个单元格的地址放入另一个工作表中。

Sub CellAdressList()

Dim c1 As String     Dim nxt As String

Sheets("Sheet1").Select     Range("A1").Select     Cells.Find(What:="qrs", After:=ActiveCell, _       LookIn:=xlValues, LookAt:=xlWhole, _       SearchOrder:=xlByRows, SearchDirection:=xlNext, _       MatchCase:=False, SearchFormat:=False).Activate     c1 = ActiveCell.Address     Sheets("Sheet2").Select     Range("A1").Select     Range("A1").Value = c1     Do Until nxt = c1         Sheets("Sheet1").Select         Cells.FindNext(After:=ActiveCell).Activate         nxt = ActiveCell.Address         Sheets("Sheet2").Select         ActiveCell.Offset(1, 0).Select         ActiveCell.Value = nxt     Loop     ActiveCell.Value = ""

End Sub

宏进行一些假设。首先,假设您要在名为Sheet1的工作表上搜索信息。其次,假设您要在名为Sheet2的工作表中放置地址列表。最后,假设您要在Sheet1中搜索值“ qrs”。如果需要,可以更改宏的所有这些元素。

对于更灵活的东西,请考虑以下宏。假定您已经选择了包含所需值的所有单元格。 (换句话说,您需要在本技巧的开头附近执行步骤1到3。)然后,您可以运行宏。

Sub CopyFindAllSelection()

Dim outcell As Range     Dim c As Range

Set outcell = Range("Sheet2!A1")

For Each c In Selection         outcell.Value = c.Address         Set outcell = outcell.Offset(1, 0)

Next End Sub

结果是将所选单元格的地址放入Sheet2工作表中。该宏稍微灵活一点,因为它允许您在任何工作表中查找任何内容。唯一的部分“硬编码”

是放置地址的工作表(Sheet2)。

注意:

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

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

本技巧(13581)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。