すべてを検索(Microsoft Excel)
ジャックは、特定の単語やフレーズを検索する方法を考え、1つのステップで、それを含むすべてのセルを強調表示して、切り取りまたはコピーして別の場所に貼り付けることができるようにします。
使用するテキストを含むセルの選択はかなり簡単です。標準の検索と置換機能を使用してそれを行うことができます。次の手順に従ってください:
。 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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(8963)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excelribbon-Searching_for_All [Searching forAll]
。