У Гэри есть рабочий лист, содержащий неструктурированные текстовые строки, которые ему нужно проанализировать на составные элементы. Иногда ему нужно искать типы текста, а не конкретного символа. Например, он может захотеть найти первое, N-е или последнее вхождение любого жирного символа (или любого курсива) в ячейку.

В Excel нет встроенной функции или инструмента для выполнения этой задачи.

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

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

Function FindNth(r As Range, sType As String, N As Integer) As Integer     Dim J As Integer     Dim iCount As Integer     Dim sStyle As String          If r.Count = 1 Then         FindNth = 0         iCount = 0         For J = 1 To Len(r.Text)

sStyle = r.Characters(J, 1).Font.FontStyle             If LCase(sStyle) = LCase(sType) Then                 iCount = iCount + 1                 If N = 0 Then                     FindNth = J                 Else                     If N = iCount Then                         FindNth = J                         Exit For                     End If                 End If             End If         Next J     Else         FindNth = -1     End If End Function

Чтобы использовать макрос, используйте на листе одну из следующих формул:

=FindNth(A1, "bold", 2)

=FindNth(A1, "italic", 3)

=FindNth(A1, "bold italic", 1)

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

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

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

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

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

Этот совет (13402) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.