搜索全部(Microsoft Excel)
杰克想知道如何搜索特定的单词或短语,并一步一步地突出显示包含该单词或短语的所有单元格,以便他可以剪切或复制它们并将它们粘贴到其他位置。
选择包含您要使用的文本的单元格非常容易。您可以使用标准的查找和替换功能来执行此操作。请按照下列步骤操作:
。按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及更高版本)找到本技巧的版本:
全部搜索。