Как найти первое, последнее или n-е вхождение символа в Excel?
При обработке данных часто встречаются списки текстовых строк, содержащих специальные символы — например, дефис «-», — и возникает необходимость определить позицию их первого, последнего или конкретного (n-го) вхождения. Это особенно актуально при извлечении информации по разделителям, анализе артикулов или разборе структурированных данных, где важно точно установить местоположение нужного символа в каждой строке. Однако Excel не предлагает встроенной функции для поиска позиции первого, последнего или n-го вхождения символа в ячейке. В этой статье вы найдёте практические методы и пошаговые решения для точного определения таких позиций — незаменимый инструмент для эффективного парсинга и подготовки данных.

Найдите последнее вхождение символа с помощью формул
Найдите последнее вхождение символа с помощью пользовательской функции
Найдите первое или Вхождение вхождение символа с помощью формулы
Найдите первое или Вхождение вхождение определённого символа с помощью простой функции
Альтернативное решение с формулой для последних версий Excel
Найдите последнее вхождение символа с помощью формул
Если вам нужно найти позицию последнего вхождения определённого символа (например, «-») в текстовой строке, стандартные функции Excel не предоставляют прямого решения. Однако, комбинируя несколько формул, эту задачу можно решить эффективно. Ниже описаны два подхода с использованием формул, которые особенно полезны при работе с артикулами, путями к файлам или другими данными, имеющими единый шаблон разделителей. Учтите, что сложные формулы могут повысить вычислительную нагрузку при обработке больших объёмов данных.
1. В пустой ячейке (например, C2) введите или скопируйте одну из приведённых ниже формул:
=SEARCH("^^",SUBSTITUTE(A2,"-","^^",LEN(A2)-LEN(SUBSTITUTE(A2,"-","")))) =LOOKUP(2,1/(MID(A2,ROW(INDIRECT("1:"&,LEN(A2))),1)="-"),ROW(INDIRECT("1:"&,LEN(A2)))) Обе формулы возвращают позицию (в виде числа) последнего вхождения символа «-» в указанной ячейке (A2). Первая формула использует SEARCH и SUBSTITUTE, чтобы определить эту позицию: она заменяет последний символ «-» уникальным знаком, а затем находит его. Вторая формула применяет LOOKUP в сочетании с MID и ROW, чтобы обнаружить последнее вхождение «-». Вы можете выбрать любой из этих методов — в зависимости от ваших предпочтений или объёма данных. Подход с использованием LOOKUP проще адаптировать для современных версий Excel с поддержкой динамических массивов.

2. После ввода формулы нажмите Enter. Чтобы применить формулу к дополнительным строкам, перетащите маркер заполнения вниз до конца нужного диапазона. Это мгновенно заполнит каждую ячейку позицией последнего вхождения соответствующей текстовой строки, как показано на следующем изображении. При копировании формулы в другую область обязательно проверьте правильность ссылок на ячейки.

Примечание: В приведённых примерах A2 — это ячейка с вашими данными, а «-» — искомый символ. Вы можете заменить «-» на любой другой символ. Если ячейка пуста или символ отсутствует в тексте, формула может вернуть ошибку. При работе с текстом, содержащим повторяющиеся разделители или специальные символы, внимательно проверяйте наличие скрытых или непечатаемых символов — они могут повлиять на результат.
Найдите последнее вхождение символа с помощью пользовательской функции
Еще один гибкий способ — создать пользовательскую функцию (UDF) в модуле VBA. Это дает вам больше контроля и упрощает повторное использование, особенно если вам часто приходится искать последнее вхождение любого символа при различных анализах. Такой подход идеален, если вы хотите работать через простой формульный интерфейс ()=lastpositionofchar(cell, character)), который функционирует так же, как встроенные функции Excel. Однако помните: чтобы решения на основе VBA работали, необходимо включить макросы, а книгу следует сохранять в формате с поддержкой макросов (*.xlsm), чтобы ваша UDF осталась доступной.
1. Откройте лист, в который хотите добавить эту функцию.
2. Нажмите клавиши ALT + F11 одновременно, чтобы открыть редактор Microsoft Visual Basic for Applications.
3. В редакторе VBA выберите Insert > Module, чтобы создать новый модуль. Затем скопируйте и вставьте приведённый ниже код в окно модуля.
Код VBA: поиск последнего вхождения символа
Function LastpositionOfChar(strVal As String, strChar As String) As Long
LastpositionOfChar = InStrRev(strVal, strChar)
End Function
Устранение неполадок: Если функция не возвращает результат, убедитесь, что макросы включены и что вы правильно указали ссылку на ячейку и символ в формуле. Чтобы найти последнее вхождение другого символа, просто измените соответствующий аргумент.
4. Сохраните и закройте окно кода. Вернитесь на лист и введите следующую формулу в пустую ячейку (например, B2):=lastpositionofchar(A2,"-"). Замените A2 на нужную ячейку, а «-» — на искомый символ.

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

Примечание: первый аргумент ()A2) — это исходная ячейка с текстовой строкой, а второй («-») — искомый символ. Эти параметры можно изменить по мере необходимости. Если совпадений не найдено, функция может вернуть 0. Всегда сохраняйте работу перед запуском или редактированием кода VBA. При возникновении ошибки проверьте правильность кавычек и ссылок на ячейки.
Найдите первое или Вхождение вхождение символа с помощью формулы
Если требуется найти не только последнее, но и первое, второе или Вхождение вхождение символа в текстовой строке, можно использовать другую структуру формулы. Это часто необходимо при разборе иерархических кодов, извлечении частей структурированных идентификаторов или определении повторяющихся символов в записях данных.
1. Чтобы найти позицию n-го вхождения указанного символа, введите или вставьте следующую формулу в пустую ячейку (например, C2):
=FIND(CHAR(160),SUBSTITUTE(A2,"-",CHAR(160),2)) В этой формуле A2 — это ячейка, в которой выполняется поиск, «-» — искомый символ, а 2 указывает, какое по счёту вхождение символа нужно найти (например, 2 — для второго вхождения). Номер вхождения можно легко изменить в зависимости от ваших задач.

2. Нажмите Enter. Чтобы применить формулу к дополнительным строкам, перетащите маркер заполнения вниз до нужного диапазона. Так вы определите позицию, например, второго вхождения символа «-» в каждой текстовой строке. Если указанное число вхождений превышает общее количество этого символа в строке, формула вернёт ошибку — в этом случае проверьте свои текстовые данные или параметр номера вхождения.

Примечание: Число 2 в формуле указывает номер искомого вхождения. Измените это число, чтобы найти позицию первого, третьего, четвёртого или любого другого вхождения заданного символа. Если символ встречается меньше раз, чем указано, появится ошибка #ЗНАЧ!; её можно перехватить с помощью IFERROR(), чтобы получить более чистый результат.
Найдите первое или Вхождение вхождение определённого символа с помощью простой функции
Для пользователей, которые предпочитают простое и интерактивное решение или не хотят возиться со сложными формулами и кодом VBA, Kutools для Excel предлагает удобный инструмент под названием Найти позицию N-го вхождения символа в строке. С его помощью можно мгновенно определить позицию первого, второго, третьего или любого другого вхождения нужного символа в ячейке — всего за несколько щелчков мышью! Это реальное преимущество при ускорении рутинных задач по очистке данных и работе с большими наборами информации.
После установки Kutools для Excelвыполните следующие действия для быстрого получения результата:
Предположим, вы хотите получить позицию второго вхождения символа дефиса «-» в наборе текстовых строк:
1. Щелкните по ячейке, в которую нужно вставить результат.
2. Выберите на ленте Kutools > Помощник формул > Помощник формул, как показано ниже:

3. В диалоговом окне Помощник формул:
- Выберите Lookup из раскрывающегося списка Тип формулы.
- Выберите Найти позицию N-го вхождения символа в строке из списка Выберите формулу.
- В области Ввод аргумента выберите ячейку с текстом, введите искомый символ и укажите номер вхождения.

4. Нажмите ОК. После того как формула вернёт результат, перетащите маркер заполнения вниз, чтобы применить её к другим строкам по мере необходимости. Этот метод помогает избежать ошибок, вызванных ручным вводом формул.

Скачайте Kutools для Excel и начните бесплатный пробный период прямо сейчас!
Этот вариант идеально подходит для нетехнических пользователей или тех, кто часто повторяет процесс в разных листах: он минимизирует ручные ошибки и экономит время на создании сложных формул.
Альтернативная формула для последних версий Excel (с динамическими массивами)
В новых версиях Excel (Excel 365, Excel 2021 и более поздних), поддерживающих динамические массивы, можно использовать такие функции, как ПОСЛЕД и ФИЛЬТР, чтобы сразу получить все позиции символа. Это не только упрощает поиск конкретного вхождения, но и позволяет вывести все вхождения в отдельный диапазон для дальнейшей обработки.
1. Введите следующую формулу в любую пустую ячейку (например, B2), чтобы найти все позиции символа «-» в ячейке A2:
=FILTER(SEQUENCE(LEN(A2)), MID(A2,SEQUENCE(LEN(A2)),1)="-") После нажатия Enter формула автоматически заполнит позиции всех вхождений символа «-» в соседние ячейки. Если вы хотите получить только первое вхождение, используйте:
=INDEX(FILTER(SEQUENCE(LEN(A2)), MID(A2,SEQUENCE(LEN(A2)),1)="-"),2) Замените 2 на нужный номер вхождения. Этот метод особенно эффективен для массивов или списков переменной длины, но требует версии Excel, поддерживающей указанные функции.
Совет: Если вы видите ошибку #ВЫЧ! или аналогичную, убедитесь, что ваша версия Excel поддерживает динамические массивы, и проверьте, чтобы ссылочные ячейки содержали текстовые данные.
Код VBA для поиска позиции Вхождение вхождения символа
Если вам нужно найти не только последнее, но и любое вхождение символа, на помощь придёт VBA. Приведённый ниже макрос легко адаптируется под множество задач парсинга и может многократно использоваться в разных книгах, что существенно экономит время.
1. Перейдите на вкладку Разработчик → Visual Basic, затем выберите Вставка → Модуль. Вставьте приведённый ниже код в окно модуля:
Function NthPositionOfChar(cell As Range, ch As String, nth As Integer) As Long
Dim s As String
Dim i As Long, count As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
s = cell.Value
count = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = ch Then
count = count + 1
If count = nth Then
NthPositionOfChar = i
Exit Function
End If
End If
Next i
NthPositionOfChar = 0
End Function 2. Закройте редактор. На листе используйте формулу =NthPositionOfChar(A2,"-",2) (при необходимости замените аргументы), чтобы определить позицию второго вхождения символа «-» в ячейке A2. Обратите внимание: если указанное вхождение не существует, функция вернёт 0.
Этот код идеально подходит для извлечения информации о гибких разделителях из данных или упрощения повторяющихся задач парсинга. Пользовательские функции VBA можно легко адаптировать под более специализированные требования — например, для поиска с учётом регистра или обработки крупных наборов данных.
При работе с текстовыми строками и позициями вхождений символов всегда проверяйте наличие скрытых или непечатаемых символов — таких как пробелы, возврат каретки или специальные символы Unicode, — поскольку они могут повлиять на результаты формул. Кроме того, если ваши данные содержат разные разделители, убедитесь в их согласованности перед применением формул или макросов. В случае возникновения ошибок дважды проверьте входные параметры, ссылки в формулах и совместимость типов данных (текст/число) с используемой функцией.
Сочетание формул, VBA и функций Kutools обеспечивает универсальную гибкость для решения как повседневных, так и сложных задач обработки текста в Excel. Выберите метод, который соответствует вашему уровню технической подготовки, версии Excel и сложности данных, чтобы добиться максимальной точности и эффективности.
Другие связанные статьи:
- Извлечение всех слов, кроме первого или последнего, в Excel
- Извлечение всех слов из ячейки, кроме первого или последнего, поможет вам удалить ненужное слово. В таком случае, конечно, можно скопировать нужные слова и вставить их по одному в другую ячейку. Однако это станет утомительным, если потребуется обработать сразу несколько ячеек. Как быстро и легко извлечь все слова, кроме первого или последнего, в Excel?
- Извлечение символов справа налево из ячейки
- В этой статье рассказывается, как извлекать символы справа из ячейки до первого пробела, чтобы получить нужный результат на листе Excel. Приведённая в статье полезная формула позволяет быстро и легко справиться с этой задачей.
- Удаление первых, последних X символов или символов с определённой позиции
- В этой статье рассказывается, как извлекать символы справа из ячейки до первого пробела, чтобы получить нужный результат на листе Excel. Приведённая в статье полезная формула позволяет быстро и легко справиться с этой задачей.
- Поиск позиции первой строчной буквы
- Если у вас есть список текстовых строк, содержащих и прописные, и строчные буквы, как быстро определить позицию первой строчной буквы в каждой из них на листе Excel — без ручного подсчёта?
Лучшие инструменты повышения продуктивности в Office
Раскройте весь потенциал Excel с помощью Kutools для Excel и ощутите эффективность как никогда раньше.Kutools для Excel предлагает более 300 расширенных функций для повышения продуктивности и Экономия времени.Нажмите здесь, чтобы получить нужную Вам функцию…
Office Tab добавляет в Office вкладки и значительно упрощает Вашу работу
- Включите редактирование и чтение во вкладках в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна — вместо того чтобы использовать отдельные окна.
- Повышает вашу продуктивность на 50 % и экономит сотни кликов мышью каждый день!
Все надстройки Kutools — один установщик
Kutools for Office — набор надстроек для Excel, Word, Outlook и PowerPoint, а также Office Tab Pro, идеально подходящий командам, работающим с разными приложениями Office.
- Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
- Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
- Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
- 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
- Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек