Определение положения форматированных символов в ячейке (Microsoft Excel)
У Гэри есть рабочий лист, содержащий неструктурированные текстовые строки, которые ему нужно проанализировать на составные элементы. Иногда ему нужно искать типы текста, а не конкретного символа. Например, он может захотеть найти первое, 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.