ジャックは、特定の単語やフレーズを検索する方法を考え、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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8964)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。