Поиск N-го появления символа (Microsoft Excel)
Барри часто обнаруживает, что хочет идентифицировать N-е вхождение символа в текстовой строке. Он знает, что может использовать функции рабочего листа SEARCH и FIND для поиска начального вхождения, но не знает, как найти, скажем, третье вхождение буквы «B» в текстовой строке.
Фактически, функцию ПОИСК можно использовать для поиска нужного вхождения следующим образом:
=SEARCHB("b",G20,(SEARCHB("b",G20,(SEARCHB("b",G20,1)+1))+1))
Обратите внимание, как функция SEARCHB используется вложенным образом. Формула определяет, что ищется (буква «b»), а количество уровней вложенности указывает, какое вхождение в ячейке вы хотите найти. Формула возвращает положение желаемого символа в ячейке.
Проблема с такой формулой, конечно, в том, что ее сложно поддерживать и она может быстро прийти в негодность, если вы захотите найти, скажем, седьмое вхождение.
Более гибкая формула была бы следующей:
=FIND(CHAR(1),SUBSTITUTE(A1,"B",CHAR(1),3))
Эта формула проверяет значение в A1. Он заменяет код CHAR (1) на третье вхождение «B» в ячейке. Затем функция НАЙТИ ищет в результирующей строке позицию, где встречается CHAR (1).
Если желаемое вхождение не существует, формула возвращает ошибку #VALUE.
Если хотите, вы можете создать определяемую пользователем функцию, которая будет искать N-ю позицию символа. Ниже приводится очень простой макрос, который принимает три аргумента: строку для поиска, текст для сопоставления и желаемую позицию.
Function FindN(sFindWhat As String, _ sInputString As String, N As Integer) As Integer Dim J As Integer Application.Volatile FindN = 0 For J = 1 To N FindN = InStr(FindN + 1, sInputString, sFindWhat) If FindN = 0 Then Exit For Next End Function
Функция чувствительна к регистру в том, что ищет, и возвращает позицию в указанной строке, в которой встречается значение sFindWhat. Если в указанном экземпляре нет вхождений, функция возвращает 0. Ниже показано, как функцию можно использовать на листе:
=FindN("b",C15,3)
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3324) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздние версии) здесь:
link: / excelribbon-Finding_the_Nth_Occurrence_of_a_Character [Поиск N-го появления символа]
.