杰克想知道如何搜索特定的单词或短语,并一步一步地突出显示包含该单词或短语的所有单元格,以便他可以剪切或复制它们并将它们粘贴到其他位置。

选择包含您要使用的文本的单元格非常容易。您可以使用标准的查找和替换功能来执行此操作。请按照下列步骤操作:

。按Ctrl + F。 Excel将显示“查找和替换”对话框的“查找”选项卡。

。通过单击选项按钮来展开对话框。 (请参见图1。)

。在“查找内容”框中,输入要查找的文本。

。根据需要使用对话框中的控件来限制匹配项。

。单击全部查找。对话框将展开以显示所有已找到的匹配项。

。按Ctrl + A。这将选择所有找到的单元格。

。单击关闭以关闭对话框。

而已。只要您在步骤4中没有单击“匹配整个单元格内容”,Excel就会选择包含您在步骤3中指定的文本的所有单元格。此时,可以根据需要对单元格应用格式设置。

当然,您可以使用条件格式来动态格式化包含要突出显示的文本的单元格。您需要做的就是设置一个条件,该条件使用一个公式来测试所需文本的存在。当然,这不会选择所有包含文本的单元格,但是它将突出显示它们,以便您可以选择它们所在的位置。

您也可以使用宏选择包含所需文本的所有单元格。以下是完成任务的相当简单的方法:

Sub selCellbasedonValue()

Dim c As Object     Dim u As Range     Dim v As Range     Dim sInpt As String

Set u = ActiveSheet.UsedRange

sInpt = InputBox("Enter the search text")



If sInpt > "" Then         For Each c In u             If Instr(LCase(sInpt),LCase(c.Value)) > 0 Then                 If v Is Nothing Then                     Set v = Range(c.Address)

Else                     Set v = Union(v, Range(c.Address))

End If             End If         Next         v.Select         Set v = Nothing     End If

Set u = Nothing End Sub

但是,选择需要识别的单元格存在问题-如果单元格不连续,则无法剪切或复制这些单元格。如果尝试这样做,将会收到一条错误消息,指示该命令不能用于多个选择。将单元格内容复制到其他位置的最简单方法是再次使用宏:

Sub CopyFinds()

Dim sSrch As String     Dim sFirst As String     Dim rPaste As Range     Dim i As Integer     Dim iLeftC As Integer     Dim lTopR As Long     Dim c As Object

If Selection.Cells.Count = 1 Then         MsgBox "Select the range to be searched."

Exit Sub     End If

'Specify search string     sSrch = InputBox(Prompt:="Enter the search text")



'   Set the paste address     On Error Resume Next     Set rPaste = Application.InputBox(Prompt:="Enter the upper-left " & _       "cell address for the paste range", Type:=8)

On Error GoTo 0

'   Exit if canceled     If TypeName(rPaste) <> "Range" Then Exit Sub

'   Upper left cell to be used     Set rPaste = rPaste.Range("A1")



'Set where paste will start and headings     Application.ScreenUpdating = False     lTopR = rPaste.Row     iLeftC = rPaste.Column     Cells(lTopR, iLeftC) = "Address"

Cells(lTopR, iLeftC + 1) = "Cell Value"

lTopR = lTopR + 1          'Start copying cell values     With Selection         Set c = .Find(What:=sSrch, LookAt:=xlPart, MatchCase:=True)

If Not c Is Nothing Then             sFirst = c.Address             Do                 Cells(lTopR, iLeftC) = c.Address                 Cells(lTopR, iLeftC + 1) = c.Value                 Set c = .FindNext(c)

lTopR = lTopR + 1             Loop While Not c Is Nothing And c.Address <> sFirst         End If     End With          Application.ScreenUpdating = True     Cells(rPaste.Row, rPaste.Column).Select End Sub

当您选择一个单元格范围并运行此宏时,系统会要求您指定要搜索的内容(大小写重要)以及要将其复制到的地址。然后,宏将查找包含该值的所有单元格,并将其地址和单元格值都复制到您指定的起始地址。宏不执行很多错误检查;如果您指定已经包含信息的目标地址,它将覆盖信息。此外,如果您指定的目标地址在要搜索的范围内,则宏可能会无限运行。您绝对应该指定一个超出搜索范围的目标。

注意:

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

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

本技巧(8963)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: