Джек задается вопросом, как он может выполнить поиск определенного слова или фразы и за один шаг выделить все ячейки, содержащие их, чтобы он мог вырезать или скопировать их и вставить в другое место.

Выбрать ячейки, содержащие текст, который вы хотите использовать, довольно просто; для этого можно использовать стандартную функцию «Найти и заменить». Выполните следующие действия:

  1. Нажмите Ctrl + F. Excel отображает вкладку «Найти» диалогового окна «Найти и заменить».

  2. Разверните диалоговое окно, нажав кнопку «Параметры». (См. Рис. 1.)

  3. В поле «Найти» введите текст, который нужно найти.

  4. При желании используйте элементы управления в диалоговом окне, чтобы ограничить совпадения.

  5. Щелкните «Найти все». Диалоговое окно расширяется, чтобы показать все найденные совпадения.

  6. Нажмите Ctrl + A. Это выбирает все те ячейки, которые были найдены.

  7. Щелкните Закрыть, чтобы закрыть диалоговое окно.

Вот и все. Пока вы не щелкали «Сопоставить содержимое ячеек целиком» на шаге 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 — ваш источник экономичного обучения Microsoft Excel.

Этот совет (8964) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Searching_for_All [Поиск всех].