Поиск всего (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), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (8964) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Searching_for_All [Поиск всех]
.