Джей должен определить ячейку, в которой встречается конкретное текстовое значение.

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

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

=ADDRESS(MATCH(C2,A:A,0),1)

В этом примере ячейка C2 содержит искомое значение, а столбец A — это диапазон ячеек, в которых выполняется поиск. Формула возвращает результат независимо от заглавной буквы C2 или значений в столбце A.

Таким образом, если C2 содержит «яблоко», то формула будет положительно соответствовать ячейкам, содержащим «яблоко», «Яблоко» или «ЯБЛОКО». Действительно, подойдет любое сочетание заглавных букв.

Эта формула не вернет адрес ячейки, содержащей то, что вы ищете среди другого текста. Таким образом, если вы ищете «яблоко» (ячейка C2), он не вернет адрес ячейки, содержащей фразу «яблочная корочка». Вы можете немного изменить это поведение, добавив символы подстановки в ячейку поиска. Например, если вы ищете «яблоко», то формула возвращает адрес ячейки, содержащей слово «яблоко», даже если ему предшествуют или следуют другие символы.

Следует отметить, что эта формула возвращает только адрес первой ячейки в диапазоне, который соответствует критериям. Если вам действительно нужны адреса всех ячеек, которые соответствуют критериям, вам нужно полагаться на макрос. Вот хороший пример:

Function FindMe(x As Range, y As String) As String     Dim r As Range     Dim sResults As String     Dim sSearch As String

Application.Volatile     sSearch = LCase(y)

For Each r In x         If InStr(1, LCase(CStr(r.Value)), sSearch) > 0 Then             sResults = sResults & r.Address & ", "

End If     Next r     If Len(sResults) > 2 Then         FindMe = Left(sResults, Len(sResults) - 2)

Else         FindMe = ""

End If End Function

Вы используете функцию, просто предоставляя диапазон, в котором вы хотите искать, вместе с тем, что вы хотите искать:

=FindMe(A:A, "apple")

Если вы используете большой диапазон (как в этом примере — весь столбец A), не удивляйтесь, если функции потребуется заметное количество времени, чтобы вернуть результат. Это имеет смысл, так как он должен искать по каждой ячейке в диапазоне, независимо от того, есть ли что-нибудь в ячейке или нет.

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

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

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

link: / excel-Where_Is_that_Text [Где этот текст?].