KutoolsforOffice — Одно решение — пять мощных инструментов.Меньше усилий — больше результата.

Как найти первое, последнее или n-е вхождение символа в Excel?

АвторСяоянДата изменения

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


Найдите последнее вхождение символа с помощью формул

Если вам нужно найти позицию последнего вхождения определённого символа (например, «-») в текстовой строке, стандартные функции 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 — для второго вхождения). Номер вхождения можно легко изменить в зависимости от ваших задач.

получить n-е вхождение символа с помощью формулы

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

перетащите и заполните формулу в другие ячейки

Примечание: Число 2 в формуле указывает номер искомого вхождения. Измените это число, чтобы найти позицию первого, третьего, четвёртого или любого другого вхождения заданного символа. Если символ встречается меньше раз, чем указано, появится ошибка #ЗНАЧ!; её можно перехватить с помощью IFERROR(), чтобы получить более чистый результат.


Найдите первое или Вхождение вхождение определённого символа с помощью простой функции

Для пользователей, которые предпочитают простое и интерактивное решение или не хотят возиться со сложными формулами и кодом VBA, Kutools для Excel предлагает удобный инструмент под названием Найти позицию N-го вхождения символа в строке. С его помощью можно мгновенно определить позицию первого, второго, третьего или любого другого вхождения нужного символа в ячейке — всего за несколько щелчков мышью! Это реальное преимущество при ускорении рутинных задач по очистке данных и работе с большими наборами информации.

Kutools для Excelпредлагает более 300 расширенных функций для упрощения сложных задач, повышая креативность и эффективность.Интегрировано с возможностями ИИ, Kutools автоматизирует задачи с высокой точностью, делая управление данными простым и удобным.Подробная информация о Kutools для Excel…         Бесплатная пробная версия…
Примечание:Чтобы воспользоваться функцией Найти позицию N-го вхождения символа в строке, сначала скачайте и установите Kutools для Excel. После установки вы сможете быстро использовать эту функцию через панель инструментов.

После установки Kutools для Excelвыполните следующие действия для быстрого получения результата:

Предположим, вы хотите получить позицию второго вхождения символа дефиса «-» в наборе текстовых строк:

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

2. Выберите на ленте Kutools > Помощник формул > Помощник формул, как показано ниже:

нажмите функцию «Помощник формул» Kutools

3. В диалоговом окне Помощник формул:

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

настройте параметры в диалоговом окне «Помощник формул»

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

получите результат с помощью Kutools

Скачайте 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. Приведённая в статье полезная формула позволяет быстро и легко справиться с этой задачей.

  • Поиск позиции первой строчной буквы
  • Если у вас есть список текстовых строк, содержащих и прописные, и строчные буквы, как быстро определить позицию первой строчной буквы в каждой из них на листе Excel — без ручного подсчёта?

Лучшие инструменты повышения продуктивности в Office

🤖KUTOOLS AI Помощник: Преобразуйте Анализ данных с помощью:Интеллектуального выполнения   |  Генерации кода|  Создания пользовательские формулы  |  Анализа данных и построения диаграмм|  Вызова Расширенные функции
Популярные функции:Поиск, выделение или Отметить дубликаты   |  Удалить пустые строки   |  Объединить столбцы или ячеек без потери данных   |  Округление без использования формул
Супер ПОИСК:VLookup по нескольким критериям  |  VLookup по нескольким значениям  |   VLookup по нескольким листам   |   Распознавание нечетких соответствий
Расширенный раскрывающийся список:Быстрое создание выпадающего списка   |  Зависимый выпадающий список   |  Выпадающий список с множественным выбором
Управление столбцами:Добавление заданного количества столбцов|Перемещение столбцов|Переключение видимости скрытых столбцов|Сравнение диапазонов и столбцов
Избранные функции:Сетка фокусировки   |  Просмотр дизайна   |Улучшенная строка формулы   | Управление рабочими книгами и листами   |  Библиотека ресурсов(автотекст)|  Выбор даты   |  Объединить листы  |  Шифрование/Расшифровать ячейки   | Отправка писем по списку   |  Супер фильтр   |   Специальный фильтр(Фильтр ячеек с жирным шрифтом/курсив/зачёркивание…) …
Лучшие наборы инструментов 15:12 Текстовыеинструменты(Добавить текст,Удалить определенные символы, …)|   50+Типыдиаграмм(Диаграмма Ганта, …)|   40+ Практические формулы(Рассчитать возраст на основе даты рождения, …)|   19 Инструментывставки(Вставить QR-код,Вставка изображения по пути, …)|   12 Инструментыпреобразования(Преобразовать в слова,Конвертация валют, …)|   7 Объединить и разделитьИнструменты(Расширенное объединение строк,Разделить ячейки, …)|… и многое другое
Используйте Kutools на предпочитаемом языке — поддержка английского, испанского, немецкого, французского, китайского и ещё 40+ языков!

Раскройте весь потенциал 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.

ExcelWordOutlookTabsPowerPoint
  • Единый комплект— надстройки для Excel, Word, Outlook и PowerPoint + Office Tab Pro
  • Один установщик, одна лицензия— настройка занимает считанные минуты (готово для MSI)
  • Лучше работать вместе— оптимизированная продуктивность во всех приложениях Office
  • 30-дневная полнофункциональная пробная версия— без регистрации и кредитной карты
  • Лучшее соотношение цены и качества— экономия по сравнению с покупкой отдельных надстроек