Excel найти последний символ в ячейке excel

  • Последние N символов – Excel-формула
  • Оставить последние N символов в ячейках в 1 клик

При работе с текстом часто бывает нужно отделить нескольких ячеек столбца последние символы, скопировав их в соседний. Или оставить прямо в самих ячейках столбца последние 2, 3, 4… N символов.

К сожалению, встроенной процедуры, которая позволила бы это сделать парой кликов мыши, в Excel нет, но зато можно использовать формулу.

Вывести в отдельную ячейку последний символ или N символов ячейки формулой довольно просто. В этом поможет функция ПРАВСИМВ.

Пример с извлечением одного символа из ячейки A1:

Оставить последние N символов в ячейках в 1 клик

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

Они доступны с панели !SEMTools в пару кликов. Извлекаемое количество придется вбить в предназначенное для этого окошко ввода.

Преимущества решения:

  • Процедура обработает все выделенные данные. Можно выделять
    • одну ячейку,
    • несколько,
    • целый столбец
    • или даже несколько несвязанных диапазонов
  • При желании можно вернуться назад на 1 шаг
  • Есть опция “Выводить результат справа”. Позволяет вывести извлеченные данные в соседний столбец или столбцы.

Пример ниже:

Как взять первые символы из ячеек Excel с помощью !SEMTools

Берем и вытаскиваем из произвольных ячеек первые / последние символы в 1 клик

Процедуры доступны в полной версии надстройки, но попробовать можно и бесплатно.

P.S. вероятно, после отделения последних символов в соседний столбец, вам может потребоваться удалить последние N символов в ячейках исходного столбца.

Если вы столкнулись с этой задачей, наверняка сталкиваетесь и с множеством других, которые сложно сделать в Excel. !SEMTools — это сотни инструментов, которые существенно упростят выполнение задач и сэкономят ваше время!

ПРАВСИМВ, ПРАВБ (функции ПРАВСИМВ, ПРАВБ)

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функций ПРАВСИМВ иПРАВБ в Microsoft Excel.

Описание

Функция ПРАВСИМВ возвращает последний символ или несколько последних символов текстовой строки на основе заданного числа символов.

Функция ПРАВБ возвращает последний символ или несколько последних символов текстовой строки на основе заданного числа байтов.

Важно: 

  • Эти функции могут быть доступны не на всех языках.

  • Функция ПРАВСИМВ предназначена для языков с однобайтовой кодировкой, а ПРАВБ — для языков с двухбайтовой кодировкой. Язык по умолчанию, заданный на компьютере, влияет на возвращаемое значение следующим образом.

  • Функция ПРАВСИМВ всегда считает каждый символ (одно- или двухбайтовый) за один вне зависимости от языка по умолчанию.

  • Функция ПРАВБ считает каждый двухбайтовый символ за два, если включена поддержка ввода на языке с двухбайтовой кодировкой, а затем этот язык назначен языком по умолчанию. В противном случае функция ПРАВБ считает каждый символ за один.

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

ПРАВСИМВ(текст;[число_знаков])

ПРАВБ(текст;[число_байтов])

Аргументы функций ПРАВСИМВ и ПРАВБ описаны ниже.

  • Текст    Обязательный. Текстовая строка, содержащая символы, которые требуется извлечь.

  • Число_знаков    Необязательный. Количество символов, извлекаемых функцией ПРАВСИМВ.

    • Значение «число_знаков» должно быть больше нуля или равно ему.

    • Если значение «число_знаков» превышает длину текста, функция ПРАВСИМВ возвращает весь текст.

    • Если значение «число_знаков» опущено, оно считается равным 1.

  • Число_байтов    Необязательный. Количество символов, извлекаемых функцией ПРАВБ.

    • Num_bytes должен быть больше нуля или равен нулю.

    • Если num_bytes больше, чем длина текста, то right возвращает весь текст.

    • Если num_bytes опущен, предполагается, что это 1.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Данные

Описание

Цена продажи

Число акций

Формула

Описание (результат)

Результат

=ПРАВСИМВ(A2;5)

Последние 7 знаков первой строки («продажи»)

продажи

=ПРАВСИМВ(A3)

Последний знак второй строки («й»)

r

Нужна дополнительная помощь?

Содержание

  1. Найти позицию последнего появления символа в строке в Excel
  2. Получение последней позиции символа с помощью формулы Excel
  3. Как работает эта формула?
  4. Получение последней позиции символа с помощью пользовательской функции (VBA)
  5. Функции подстроки Excel для извлечения текста из ячейки
  6. Как извлечь подстроку определенной длины
  7. Извлечь подстроку из начала строки (СЛЕВА)
  8. Получить подстроку с конца строки (ВПРАВО)
  9. Извлечь текст из середины строки (MID)
  10. Извлечь подстроку до или после заданного символа
  11. Как извлечь текст перед определенным символом
  12. Как извлечь текст после символа
  13. Как извлечь текст между двумя экземплярами символа
  14. Как найти подстроку в Excel
  15. Как извлечь текст из ячейки с помощью Ultimate Suite для Excel
  16. Дополнительные формулы для подстрок в Excel

Найти позицию последнего появления символа в строке в Excel

В этом руководстве вы узнаете, как найти позицию последнего вхождения символа в строке в Excel.

Несколько дней назад коллега столкнулся с этой проблемой.

У него был список URL-адресов, как показано ниже, и ему нужно было извлечь все символы после последней косой черты («/»).

Так, например, с https://example.com/archive/Январь ему пришлось извлечь «январь».

Это было бы очень просто, если бы в URL-адресах была только одна косая черта.

У него был огромный список из тысяч URL-адресов разной длины и с различным количеством косых черт.

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

В этом уроке я покажу вам два способа сделать это:

  • Использование формулы Excel
  • Использование пользовательской функции (созданной через VBA)

Получение последней позиции символа с помощью формулы Excel

Когда у вас есть позиция последнего вхождения, вы можете просто извлечь что-нибудь справа от него, используя функцию ВПРАВО.

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

Как работает эта формула?

Давайте разберем формулу и объясним, как работает каждая ее часть.

  • ЗАМЕНА (A2; ”/”,“”) — Эта часть формулы заменяет косую черту пустой строкой. Так, например, если вы хотите найти вхождение любой строки, кроме косой черты, используйте ее здесь.
  • LEN (A2) -LEN (ЗАМЕНА (A2; ”/”,“”)) — Эта часть сообщит вам, сколько косых черт в строке. Он просто вычитает длину строки без косой черты из длины строки с косой чертой.
  • ПОДСТАВИТЬ (A2, ”/”, ”@”, LEN (A2) -LEN (ПОДСТАВИТЬ (A2, ”/”, ””))) — Эта часть формулы заменит последнюю косую черту на @. Идея состоит в том, чтобы сделать этого персонажа уникальным. Вы можете использовать любой персонаж, какой захотите. Просто убедитесь, что он уникален и его еще нет в строке.
  • НАЙТИ («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1) — Эта часть формулы даст вам позицию последней косой черты.
  • LEN (A2) -FIND («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1) — Эта часть формулы сообщает нам, сколько символов стоит после последней косой черты.
  • = ПРАВО (A2; LEN (A2) -НАЙТИ («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1 )) — Теперь это просто даст нам строку после последней косой черты.

Получение последней позиции символа с помощью пользовательской функции (VBA)

Вышеупомянутая формула прекрасна и работает как шарм, но она немного сложна.

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

Давайте воспользуемся тем же набором данных URL-адресов (как показано ниже):

Для этого случая я создал функцию с именем LastPosition, которая находит последнюю позицию указанного символа (в данном случае это косая черта).

Вот формула, которая сделает это:

Вы можете видеть, что это намного проще, чем тот, который мы использовали выше.

Вот как это работает:

  • LastPosition — наша настраиваемая функция — возвращает позицию косой черты. Эта функция принимает два аргумента — ссылку на ячейку с URL-адресом и символ, позицию которого нам нужно найти.
  • Затем функция ВПРАВО дает нам все символы после косой черты.

Вот код VBA, создавший эту функцию:

Чтобы эта функция работала, вам нужно поместить ее в редактор VB. После этого вы можете использовать эту функцию, как любую другую обычную функцию Excel.

Вот шаги, чтобы скопировать и вставить этот код в серверную часть VB:

Вот шаги, чтобы поместить этот код в редактор VB:

  1. Перейдите на вкладку Разработчик.
  2. Выберите вариант Visual Basic. Это откроет редактор VB в бэкэнде.
  3. На панели Project Explorer в редакторе VB щелкните правой кнопкой мыши любой объект книги, в которую вы хотите вставить код. Если вы не видите Project Explorer, перейдите на вкладку View и нажмите Project Explorer.
  4. Перейдите во вкладку «Вставить» и нажмите «Модуль». Это вставит объект модуля для вашей книги.
  5. Скопируйте и вставьте код в окно модуля.

Теперь формула будет доступна на всех листах книги.

Обратите внимание, что вам необходимо сохранить книгу в формате .XLSM, поскольку в ней есть макрос. Кроме того, если вы хотите, чтобы эта формула была доступна во всех используемых вами книгах, вы можете сохранить ее в личной книге макросов или создать на ее основе надстройку.

Вам также могут понравиться следующие руководства по Excel:

  • Как узнать количество слов в Excel.
  • Как использовать ВПР с несколькими критериями.
  • Найдите последнее вхождение подстановочного значения в списке в Excel.
  • Извлечь подстроку в Excel.

Источник

Функции подстроки Excel для извлечения текста из ячейки

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

Прежде чем мы начнем обсуждать различные методы работы с подстроками в Excel, давайте уделим немного времени определению термина, чтобы мы могли начать с той же страницы. Итак, что такое подстрока? Проще говоря, это часть текстовой записи. Например, если вы наберете что-то вроде «AA-111» в ячейке, вы назовете это буквенно-цифровая строкаи любая часть строки, скажем, «AA», будет подстрока.

Хотя в Excel нет такой функции, как функция подстроки, существуют три текстовые функции (LEFT, RIGHT и MID) для извлечения подстроки заданной длины. Кроме того, есть функции НАЙТИ и ПОИСК для получения подстроки до или после определенного символа. И есть несколько других функций для выполнения более сложных операций, таких как извлечение чисел из строки, замена одной подстроки на другую, поиск частичного совпадения текста и т. д. Ниже вы найдете примеры формул для выполнения всего этого и многого другого. .

Как извлечь подстроку определенной длины

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

  • Функция LEFT — извлечь подстроку слева.
  • Функция ПРАВО — извлечь текст справа.
  • Функция MID — для извлечения подстроки из середины текстовой строки, начиная с указанной вами точки.

Как и в случае с другими формулами, функции работы с подстроками в Excel лучше всего изучать на примере, поэтому давайте рассмотрим несколько из них.

Извлечь подстроку из начала строки (СЛЕВА)

Чтобы извлечь текст слева от строки, вы используете функцию Excel LEFT:

Где текст адрес ячейки, содержащей исходную строку, и num_chars количество символов, которые вы хотите извлечь.

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

=ЛЕВО(A2,4)

Получить подстроку с конца строки (ВПРАВО)

Чтобы получить подстроку из правой части текстовой строки, воспользуйтесь функцией Excel ПРАВИЛЬНО:

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

=ВПРАВО(A2,4)

Извлечь текст из середины строки (MID)

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

По сравнению с двумя другими текстовыми функциями, MID имеет несколько иной синтаксис:

MID(текст, start_num, num_chars)

Помимо текст (исходная текстовая строка) и num_chars (количество символов для извлечения), вы также указываете start_num (отправная точка).

В нашем примере набора данных, чтобы получить три символа из середины строки, начинающейся с 6-го символа, вы используете следующую формулу:

=СРЕДНЕЕ(A2,6,3)

Кончик. Вывод формул Right, Left и Mid всегда является текстом, даже если вы извлекаете число из текстовой строки. Если вы хотите оперировать результатом как числом, оберните формулу в функцию ЗНАЧЕНИЕ следующим образом:

= ЗНАЧЕНИЕ (СРЕДНЕЕ (A2,6,3))

Извлечь подстроку до или после заданного символа

Как показано в приведенных выше примерах, функции Left, Right и Mid прекрасно справляются с однородными строками. Когда вы имеете дело с текстовыми строками переменной длины, потребуются более сложные манипуляции.

Примечание. Во всех приведенных ниже примерах мы будем использовать функцию SEARCH без учета регистра, чтобы получить позицию символа. Если вам нужна формула с учетом регистра, используйте функцию НАЙТИ.

Как извлечь текст перед определенным символом

Чтобы получить подстроку, предшествующую заданному символу, нужно сделать две вещи: сначала определить позицию интересующего символа, а затем вытянуть все символы перед ним. Точнее, вы используете функцию ПОИСК, чтобы найти положение символа, и вычитаете 1 из результата, потому что вы не хотите включать сам символ в вывод. А затем вы отправляете возвращенный номер непосредственно на num_chars аргумент ЛЕВОЙ функции:

Например, чтобы извлечь подстроку перед символом дефиса (-) из ячейки A2, используйте следующую формулу:

Независимо от того, сколько символов содержит ваша строка Excel, формула извлекает только текст до первого дефиса:

Как извлечь текст после символа

Чтобы получить текст после определенного символа, вы используете несколько иной подход: получите позицию символа с помощью ПОИСК или НАЙТИ, вычтите это число из общей длины строки, возвращаемой функцией ДЛСТР, и извлеките столько же символов из конца строки. Струна.

В нашем примере мы будем использовать следующую формулу для извлечения подстроки после первого дефиса:

=ВПРАВО(A2,ДЛСТР(A2)-ПОИСК(«-«,A2))

Как извлечь текст между двумя экземплярами символа

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

Первые два аргумента этой формулы MID предельно ясны:

Текст это ячейка, содержащая исходную текстовую строку.

Start_num (начальная точка) — простая формула ПОИСК возвращает позицию нужного символа, к которой вы добавляете 1, потому что хотите начать извлечение со следующего символа.

Num_chars (количество символов для извлечения) — самая сложная часть:

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

Например, чтобы извлечь текст, окруженный двумя дефисами, вы должны использовать эту формулу:

=СРЕДН(A2, ПОИСК(«-«,A2) + 1, ПОИСК(«-«,A2,ПОИСК(«-«,A2)+1) — ПОИСК(«-«,A2) — 1)

На скриншоте ниже показан результат:

Если вы хотите извлечь текст между 2-м и 3-м или 3-м и 4-м вхождением одного и того же символа, вы можете использовать более компактную комбинацию ПОИСК ПОДСТАВКИ, чтобы получить позицию символа, как описано в разделе Как найти N-е вхождение символа в строку. :

В нашем случае мы могли бы извлечь подстроку между 2-м и 3-м дефисом по следующей формуле:

=MID(A2, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1),2))+1, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1) ,3)) — НАЙТИ(СИМВОЛ(1),ПОДСТАВИТЬ(A2,»-«,СИМВОЛ(1),2))-1)

Как найти подстроку в Excel

В ситуациях, когда вы не хотите извлекать подстроку, а хотите найти только ячейки, содержащие ее, вы используете функцию ПОИСК или НАЙТИ, как показано в приведенных выше примерах, но выполняете поиск внутри функции ЕСНИМ. Если ячейка содержит подстроку, функция поиска возвращает позицию первого символа, и если ISNUMBER получает любое число, она возвращает TRUE. Если подстрока не найдена, поиск приводит к ошибке, заставляя ISNUMBER возвращать FALSE.

Предположим, у вас есть список британских почтовых индексов в столбце A, и вы хотите найти те, которые содержат подстроку «1ZZ». Чтобы это сделать, используйте эту формулу:

Результаты будут выглядеть примерно так:

Если вы хотите вернуть собственное сообщение вместо логических значений ИСТИНА и ЛОЖЬ, вложите приведенную выше формулу в функцию ЕСЛИ:

=ЕСЛИ(IЧИСЛО(ПОИСК(«1zz», A2)), «Да», «»)

Если ячейка содержит подстроку, формула возвращает «Да», в противном случае — пустую строку («»):

Как вы помните, функция ПОИСК в Excel нечувствительна к регистру, поэтому вы используете ее, когда регистр символов не имеет значения. Чтобы ваша формула различала прописные и строчные буквы, выберите функцию НАЙТИ с учетом регистра.

Дополнительные сведения о том, как найти текст и числа в Excel, см. в разделе Если ячейка содержит примеры формул.

Как извлечь текст из ячейки с помощью Ultimate Suite для Excel

Как вы только что видели, Microsoft Excel предоставляет множество различных функций для работы с текстовыми строками. Если вы не уверены, какая функция лучше всего подходит для ваших нужд, передайте задание нашему Ultimate Suite for Excel. Имея эти инструменты в своем арсенале Excel, вы просто переходите к Данные об аблебитах вкладка > Текст группу и нажмите Извлечь:

Теперь вы выбираете исходные ячейки и любые сложные строки, которые они содержат, извлечение подстроки сводится к этим двум простым действиям:

  1. Укажите, сколько символов вы хотите получить из начала, конца или середины строки; или выберите извлечение всего текста до или после заданного символа.
  2. Нажмите Вставить результаты. Сделанный!

Например, чтобы получить доменные имена из списка адресов электронной почты, выберите Все после текста переключатель и введите @ в поле рядом с ним. Чтобы извлечь имена пользователей, выберите Все перед текстом переключатель, как показано на скриншоте ниже.

И через мгновение вы получите следующие результаты:

Помимо скорости и простоты, инструмент Извлечь текст имеет дополнительную ценность — он поможет вам изучить формулы Excel в целом и функции работы с подстроками в частности. Как? Установив флажок «Вставить как формулу» в нижней части панели, вы гарантируете, что результаты выводятся в виде формул, а не значений.

В этом примере, если вы выберете ячейки B2 и C2, вы увидите следующие формулы соответственно:

    Чтобы извлечь имя пользователя:

Чтобы извлечь домен:

=ЕСЛИОШИБКА(ПРАВО(A2, ДЛСТР(A2)- ПОИСК(«@»,A2) — ДЛСТР(«@») + 1),»»)

Сколько времени у вас ушло бы на то, чтобы вычислить эти формулы самостоятельно? 😉

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

Если вам интересно попробовать это, а также многие другие полезные функции, включенные в Ultimate Suite for Excel, вы можете загрузить ознакомительную версию.

Дополнительные формулы для подстрок в Excel

В этом уроке мы продемонстрировали некоторые классические формулы Excel для извлечения текста из строки. Как вы понимаете, может быть почти бесконечное количество вариаций этих базовых сценариев. Ниже вы найдете еще несколько примеров формул, в которых вам пригодятся функции Text.

Источник

Содержание

  • Получение последней позиции символа с помощью формулы Excel
  • Получение последней позиции символа с помощью пользовательской функции (VBA)

В этом руководстве вы узнаете, как найти позицию последнего вхождения символа в строке в Excel.

Несколько дней назад коллега столкнулся с этой проблемой.

У него был список URL-адресов, как показано ниже, и ему нужно было извлечь все символы после последней косой черты («/»).

Так, например, с https://example.com/archive/Январь ему пришлось извлечь «январь».

Это было бы очень просто, если бы в URL-адресах была только одна косая черта.

У него был огромный список из тысяч URL-адресов разной длины и с различным количеством косых черт.

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

В этом уроке я покажу вам два способа сделать это:

  • Использование формулы Excel
  • Использование пользовательской функции (созданной через VBA)

Когда у вас есть позиция последнего вхождения, вы можете просто извлечь что-нибудь справа от него, используя функцию ВПРАВО.

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

= ПРАВО (A2; LEN (A2) -НАЙТИ ("@", ПОДСТАВИТЬ (A2, "/", "@", LEN (A2) -LEN (ПОДСТАВИТЬ (A2, "/", ""))), 1 )) 

Как работает эта формула?

Давайте разберем формулу и объясним, как работает каждая ее часть.

  • ЗАМЕНА (A2; ”/”,“”) — Эта часть формулы заменяет косую черту пустой строкой. Так, например, если вы хотите найти вхождение любой строки, кроме косой черты, используйте ее здесь.
  • LEN (A2) -LEN (ЗАМЕНА (A2; ”/”,“”)) — Эта часть сообщит вам, сколько косых черт в строке. Он просто вычитает длину строки без косой черты из длины строки с косой чертой.
  • ПОДСТАВИТЬ (A2, ”/”, ”@”, LEN (A2) -LEN (ПОДСТАВИТЬ (A2, ”/”, ””))) — Эта часть формулы заменит последнюю косую черту на @. Идея состоит в том, чтобы сделать этого персонажа уникальным. Вы можете использовать любой персонаж, какой захотите. Просто убедитесь, что он уникален и его еще нет в строке.
  • НАЙТИ («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1) — Эта часть формулы даст вам позицию последней косой черты.
  • LEN (A2) -FIND («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1) — Эта часть формулы сообщает нам, сколько символов стоит после последней косой черты.
  • = ПРАВО (A2; LEN (A2) -НАЙТИ («@», ПОДСТАВИТЬ (A2, «/», «@», LEN (A2) -LEN (ПОДСТАВИТЬ (A2, «/», »»))), 1 )) — Теперь это просто даст нам строку после последней косой черты.

Получение последней позиции символа с помощью пользовательской функции (VBA)

Вышеупомянутая формула прекрасна и работает как шарм, но она немного сложна.

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

Давайте воспользуемся тем же набором данных URL-адресов (как показано ниже):

Для этого случая я создал функцию с именем LastPosition, которая находит последнюю позицию указанного символа (в данном случае это косая черта).

Вот формула, которая сделает это:

= ПРАВО (A2; LEN (A2) -LastPosition (A2; "/") + 1)

Вы можете видеть, что это намного проще, чем тот, который мы использовали выше.

Вот как это работает:

  • LastPosition — наша настраиваемая функция — возвращает позицию косой черты. Эта функция принимает два аргумента — ссылку на ячейку с URL-адресом и символ, позицию которого нам нужно найти.
  • Затем функция ВПРАВО дает нам все символы после косой черты.

Вот код VBA, создавший эту функцию:

Функция LastPosition (rCell As Range, rChar As String) 'Эта функция выдает последнюю позицию указанного символа' Этот код был разработан Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len (rCell) For i = rLen To 1 Step -1 If Mid (rCell, i - 1, 1) = rChar Then LastPosition = i Exit Function End If Next i End Function

Чтобы эта функция работала, вам нужно поместить ее в редактор VB. После этого вы можете использовать эту функцию, как любую другую обычную функцию Excel.

Вот шаги, чтобы скопировать и вставить этот код в серверную часть VB:

Вот шаги, чтобы поместить этот код в редактор VB:

  1. Перейдите на вкладку Разработчик.
  2. Выберите вариант Visual Basic. Это откроет редактор VB в бэкэнде.
  3. На панели Project Explorer в редакторе VB щелкните правой кнопкой мыши любой объект книги, в которую вы хотите вставить код. Если вы не видите Project Explorer, перейдите на вкладку View и нажмите Project Explorer.
  4. Перейдите во вкладку «Вставить» и нажмите «Модуль». Это вставит объект модуля для вашей книги.
  5. Скопируйте и вставьте код в окно модуля.

Теперь формула будет доступна на всех листах книги.

Обратите внимание, что вам необходимо сохранить книгу в формате .XLSM, поскольку в ней есть макрос. Кроме того, если вы хотите, чтобы эта формула была доступна во всех используемых вами книгах, вы можете сохранить ее в личной книге макросов или создать на ее основе надстройку.

Вам также могут понравиться следующие руководства по Excel:

  • Как узнать количество слов в Excel.
  • Как использовать ВПР с несколькими критериями.
  • Найдите последнее вхождение подстановочного значения в списке в Excel.
  • Извлечь подстроку в Excel.

Вы поможете развитию сайта, поделившись страницей с друзьями

Как найти первый символ в конце строки?

Найти позицию последнего вхождения значения в ячейке Excel — довольно сложная задача.

Однако иногда это необходимо исправить, например, чтобы удалить или заменить это вхождение.

Так в чем проблема?

Дело в том, что функции поиска местоположения SEARCH и FIND выполняют поиск только с начала ячейки и не имеют возможности перейти к поиску с конца.

Процедура «Найти и заменить» также не будет работать. Он не ищет с конца строки, он просто находит (и заменяет) все вхождения.

Ниже я покажу вам несколько способов поиска с конца строки.

Обычная составная формула

Формула, аналогичная приведенной ниже, подробно описана в статье Как удалить последнее слово в ячейке Excel. В этом случае необходимо искать пробел с конца строки.

Следующая формула ищет пробел от конца ячейки A1:

= ПОИСК (UNISIMV (23456); ПОДСТАВИТЬ (A1; «»; UNISIMV (23456); DLSTR (A1) -LSTR (ПОДСТАВИТЬ (A1;» «;»»))))

Как это работает:

  • В разделе, выделенном красным, рассчитывается количество пробелов в ячейке. Более подробную информацию можно найти в описании функции ЗАМЕНИТЬ.
  • Этот номер является аргументом в пользу другой замены, где заменяется только последний пробел (выделенный жирным шрифтом)
  • Вместо пробела на его последней позиции вставляется довольно редкий символ. В данном случае это иероглиф, созданный функцией SYMBOL. Но вы также можете зарегистрировать символ вручную. В приведенной ниже формуле это обратная косая черта:

= ПОИСК («»; ПОДСТАВИТЬ (A1; «»; «»; DLSTR (A1) -LSTR (ПОДСТАВИТЬ (A1;» «;»»))))

  • Функция ПОИСК находит позицию этого символа. Поскольку он встречается только один раз в строке и находится на месте последнего пробела, это позволяет нам сказать, что поиск выполнялся справа налево.

Если вам нужно найти другие символы или фрагменты текста с конца строки, замените им пробелы в этой формуле.

поиск в конце строки - формула Примеры использования составной формулы для поиска с конца строки

Формулы массива для поиска символа с конца строки

Поиск слева направо с помощью описанной выше функции REPLACE имеет несколько недостатков.

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

А второе уже посерьезнее: формула не очень универсальна, т.к использует подстановку символа, который может появиться в строке и, таким образом, вернет неверное значение.

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

С помощью МАКС

В любом случае следующая формула находит положение символа «а.

= {MAX ((MID (A1; LINE (INDIRECT («1:» & DLSTR (A1)))); 1) = «a») * LINE (INDIRECT («1:» & DLSTR (A1)))))) ВАЖНО: Это формула массива! Вы входите без фигурных скобок. Но не клавишей Enter, а комбинацией: Ctrl + Shift + Enter После этого фигурные скобки появятся сами собой. Если вы введете формулу обычным способом, она не сработает.

Механика его работы пошаговая:

  1. Функция DLSTR измеряет длину ячейки в символах
  2. INDIRECT создает из текстового представления длины ссылку на диапазон строк от 1 до строки, равной этой длине
  3. Функция СТРОКА возвращает массив чисел, соответствующих этим длинам, соответственно, {1; 2; 3;… «длина строки»}
  4. Функция MID, обрабатывая этот массив, возвращает символ в этой позиции в строке для каждого числа
  5. Текстовое сравнение с символом «a» возвращает логический массив (значения TRUE или FALSE)
  6. Эта матрица умножается на воссозданную матрицу чисел (точки 1: 3). FALSE эквивалентно нулю, а TRUE эквивалентно единице, поэтому для всех символов, которые не равны «a», результирующий числовой массив будет содержать нули, а для равных — их позиции
  7. Функция MAX возвращает наибольшее число в этом массиве.

С помощью ПОИСКПОЗ

Чуть более умный механизм делает формулу короче, но в то же время намного быстрее и использует функцию СРАВНЕНИЕ:

{= SEARCH (2; 1 / (MID (A1; LINE (INDIRECT («1:» & DLSTR (A1)))); 1) = «a»); 1)} ВАЖНО: это формула массива! Вы входите без фигурных скобок. Но не клавишей Enter, а комбинацией: Ctrl + Shift + Enter После этого фигурные скобки появятся сами собой. Если вы введете формулу обычным способом, она не сработает.

Вот алгоритм:

  1. Как и в предыдущей версии, с использованием тех же функций DLSTR, STRING, INDIRECT, MID и сравнения текста создается логический массив;
  2. Но на данном этапе на него делится единство. FALSE эквивалентно нулю, и выводится ошибка деления на ноль. ИСТИНА возвращает единицу.
  3. Функция ПОИСКПОЗ с последним параметром «1» при поиске 2 (на месте 2 может быть любое число больше 1) возвращает позицию последнего наибольшего числа меньше 2) То есть последнюю единицу, которая соответствует последней в строке найден символ.
 

Ситуация:  
Есть ячейка, в ней текст, например: «Слово1[пробел1]Слово2[пробел2][пробел3])» Как нужно написать код, чтобы:
Брался последний символ в ячейке, если это пробел, то берётся предпоследний итд (т.е. перебор справа-налево), пока не дойдёт до символа, отличного от пробела. Перебор справа-налево продолжается, пока не дойдёт до следующего пробела (в примере это [пробел1]). Затем всё, что находится правее этого пробела удаляется (в примере это Слово2).

  Другими словами, есть в ячейке два слова, разделённые пробелом. Мне нужно програмно удалить второе слово.    

  Буду очень благодарен за ответ, т.к. хочу автоматизировать процесс, иначе в ручную буду месяц удалять, а нервы — они не железные )  
PS: И как раньше люди без экселя жили? :)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

=ЛЕВСИМВ(A1;НАЙТИ(» «;A1)-1)

 

=ПСТР(A1;1;НАЙТИ(» «;A1;1)-1)  
Данная формула возвращает текст до первого пробела…  
=ЕСЛИ(ЕОШ(ПСТР(A1;1;НАЙТИ(» «;A1;1)-1));A1;ПСТР(A1;1;НАЙТИ(» «;A1;1)-1))  
А здесь добавлена проверка на ошибку когда нет пробелов в строке…

 

Большое спасибо за ответ. Извиняюсь за назойливость, а можно то же самое, но на  VBA сделать? Просто я хотел эту часть кода включить в перебор ячеек в выделеном диапазоне, и не ожидал, что вы ответите с исп. функций эксель)  
Ещё раз простите, что сразу не сказал, что надо на VBA, совсем вылетело из головы.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Используйте функцию MID(string, start, length)  
она извлекает определенное количество символов  
из строки и цикл до нахождения первого пробела

 

Pavel

Пользователь

Сообщений: 126
Регистрация: 01.01.1970

подскажите пожалуйста как быть если слов в ячейке много и надло разделаить по последнему пробелу? идельным вариантом было бы разделение по латинским буквам.  
к примеру:  
S1265 фара передняя левая AUDIRS5  
нужно:  
S1265 фара передняя левая    

  спасибо.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Public Sub www()  
Dim a$  
a = Left([A1], InStrRev([A1], » «))
MsgBox a  
End Sub  

  =88088=

Я сам — дурнее всякого примера! …

 

webley

Пользователь

Сообщений: 1991
Регистрация: 01.01.1970

С Вашего разрешения немного поправлю:  
Public Sub www()  
Dim a$  
a = Left([A1], InStrRev([A1], » «) — 1)
Debug.Print a  
End Sub

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

=ЛЕВСИМВ(A1;НАЙТИ(«/»;ПОДСТАВИТЬ(A1;» «;»/»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))-1)

 

Pavel

Пользователь

Сообщений: 126
Регистрация: 01.01.1970

спасибо за ответы.    

  можно ли формулой заменить последний пробел(или 2 последних пробела) на «@», а затем отделить через текст по столбцам?

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Один последний пробел:  
=ПОДСТАВИТЬ(A1;» «;»@»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

как вы меня все время выручаете! спасибо!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Вы формулой меняете один пробел, потом разделение по столбцам, потом удаление лишнего. Формулой выше подтягиваете нужную первую часть. Если нужна и вторая, то  
=ПРАВСИМВ(A1;ДЛСТР(A1)-ДЛСТР(E1))

 

Pavel

Пользователь

Сообщений: 126
Регистрация: 01.01.1970

 

Eugeon

Пользователь

Сообщений: 51
Регистрация: 01.01.1970

{quote}{login=vikttur}{date=11.10.2010 09:17}{thema=}{post}=ЛЕВСИМВ(A1;НАЙТИ(«/»;ПОДСТАВИТЬ(A1;» «;»/»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))-1){/post}{/quote}  
А что если нужно выделить слова идущие после 2-ого пробела

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Слова до второго пробела:  
=ЛЕВСИМВ(A1;НАЙТИ(«/»;ПОДСТАВИТЬ(A1;» «;»/»;2)-1)  
После второго — ПРАВСИМВ(): длина полной строки минус длина строки до второго пробела. Или ПСТР(): со второго пробела и до конца (можно задать максимальнім числом знаков).

 

Вить, наверное, ты чуть ошибся в формуле про слова до 2-го пробела  

  =ЛЕВСИМВ(A1;НАЙТИ(«/»;ПОДСТАВИТЬ(A1;» «;»/»;2))-1)  

    Павел

 

k61

Пользователь

Сообщений: 2441
Регистрация: 21.12.2012

В ячейке A1 исходный текст.  
В ячейку B1 пишем результат:  
Sub www()  
Cells(1, 2).Clear  
текст = «»  
НомерПробела = 2  
For i = НомерПробела To UBound(Split(Cells(1, 1), » «))  
текст = текст & » » & Split(Cells(1, 1), » «)(i)  
Next i  
Cells(1, 2) = Trim(текст)  
End Sub

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

{quote}{login=}{date=10.01.2012 08:46}{thema=}{post}Вить, наверное, ты чуть ошибся в формуле про слова до 2-го пробела{/post}{/quote}  
Ну да, «наколенный» вариант! Начинаешь изучать формулы? :)

 

ну, «средние» формулы я всегда знал (там НАЙТИ, ВПР, ГПР, ИНДЕКС, ПОИСКПОЗ, СУММПРОИЗВ и т.д).  

  А вот когда вы там «извращаетесь» с длинными формулами, то я пасс))    
Если можно решить задачу «средними» формулами, я пишу формулы, а когда что-то посложнее, я пишу функции )) Функция более понятнее для меня.  
Просто на нашем форуме я стараюсь на вопросы по формулам не отвечать, меня больше макросы интересуют )

 

забыл дописать, что так же умею пользоваться F9 в длинной формуле, чтобы понять результат какой-то её части. Ну. и конечно встроенный инструмент Excel «Вычислить формулу», когда пошагово показывается её вычислений )  
Мне этого хватает )

 

ребята, в этой теме описано извлечение последнего слова перед пробелом.  
ПРобовал запустить формулу, работает, но с какой-то постоянной оишбкой, не могу понять в чем проблема.  

  Подскажите кто чем может.  

  Спасибо!

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Сделайте ссылку в функции СТРОКА абсолютной:  
СТРОКА($1:$999)

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Вариант формулы (массивный ввод не требуется):  
=ПСТР(A1;ПРОСМОТР(100;ПОИСК(» «;» «&A1;СТРОКА($1:$99)));99)

 

МСН? cпасибо!!! Работает!!! и спасибо за такой быстрый ответ!

 

Мужики есть произвольная строка (предложение, кол-во пробелов разное нужно последнее слово вырезать в другую ячейку

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

Да не проблема. Правила не поленитесь прочесть, чтоб я Вам не задавал массу вопросов.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

ShAM

Пользователь

Сообщений: 469
Регистрация: 05.01.2013

{quote}{login=Евменчик}{date=14.07.2012 12:57}{thema=}{post}Мужики есть произвольная строка (предложение, кол-во пробелов разное нужно последнее слово вырезать в другую ячейку{/post}{/quote}Вы формулу МСН от 11.01.2012, 20:26 пробовали? Она это и делает.

 

Nemo

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

Здравствуйте!  
Объясните, пожалуйста, принцип формулы    
=ПСТР(A1;ПРОСМОТР(100;ПОИСК(» «;» «&A1;СТРОКА($1:$99)));99), которую привел MCH.  
Спасибо!

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#30

14.08.2012 12:54:41

Замените 99 на 9, 100 на 10 и вычислите формулу поэтапно.  
Почитайте справку по ПРОСМОТР и ПОИСК.

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

Прежде чем мы начнем обсуждать различные методы работы с подстроками в Excel, давайте уделим немного времени определению термина, чтобы мы могли начать с той же страницы. Итак, что такое подстрока? Проще говоря, это часть текстовой записи. Например, если вы наберете что-то вроде «AA-111» в ячейке, вы назовете это буквенно-цифровая строкаи любая часть строки, скажем, «AA», будет подстрока.

Хотя в Excel нет такой функции, как функция подстроки, существуют три текстовые функции (LEFT, RIGHT и MID) для извлечения подстроки заданной длины. Кроме того, есть функции НАЙТИ и ПОИСК для получения подстроки до или после определенного символа. И есть несколько других функций для выполнения более сложных операций, таких как извлечение чисел из строки, замена одной подстроки на другую, поиск частичного совпадения текста и т. д. Ниже вы найдете примеры формул для выполнения всего этого и многого другого. .

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

  • Функция LEFT — извлечь подстроку слева.
  • Функция ПРАВО — извлечь текст справа.
  • Функция MID — для извлечения подстроки из середины текстовой строки, начиная с указанной вами точки.

Как и в случае с другими формулами, функции работы с подстроками в Excel лучше всего изучать на примере, поэтому давайте рассмотрим несколько из них.

Чтобы извлечь текст слева от строки, вы используете функцию Excel LEFT:

СЛЕВА(текст, [num_chars])

Где текст адрес ячейки, содержащей исходную строку, и num_chars количество символов, которые вы хотите извлечь.

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

=ЛЕВО(A2,4)
ЛЕВАЯ формула для извлечения подстроки из начала строки

Получить подстроку с конца строки (ВПРАВО)

Чтобы получить подстроку из правой части текстовой строки, воспользуйтесь функцией Excel ПРАВИЛЬНО:

ПРАВИЛЬНО(текст, [num_chars])

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

=ВПРАВО(A2,4)
ПРАВИЛЬНАЯ формула для извлечения подстроки из конца строки

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

По сравнению с двумя другими текстовыми функциями, MID имеет несколько иной синтаксис:

MID(текст, start_num, num_chars)

Помимо текст (исходная текстовая строка) и num_chars (количество символов для извлечения), вы также указываете start_num (отправная точка).

В нашем примере набора данных, чтобы получить три символа из середины строки, начинающейся с 6-го символа, вы используете следующую формулу:

=СРЕДНЕЕ(A2,6,3)
Формула MID для извлечения текста из середины строки

Кончик. Вывод формул Right, Left и Mid всегда является текстом, даже если вы извлекаете число из текстовой строки. Если вы хотите оперировать результатом как числом, оберните формулу в функцию ЗНАЧЕНИЕ следующим образом:

= ЗНАЧЕНИЕ (СРЕДНЕЕ (A2,6,3))

Как показано в приведенных выше примерах, функции Left, Right и Mid прекрасно справляются с однородными строками. Когда вы имеете дело с текстовыми строками переменной длины, потребуются более сложные манипуляции.

Примечание. Во всех приведенных ниже примерах мы будем использовать функцию SEARCH без учета регистра, чтобы получить позицию символа. Если вам нужна формула с учетом регистра, используйте функцию НАЙТИ.

Как извлечь текст перед определенным символом

Чтобы получить подстроку, предшествующую заданному символу, нужно сделать две вещи: сначала определить позицию интересующего символа, а затем вытянуть все символы перед ним. Точнее, вы используете функцию ПОИСК, чтобы найти положение символа, и вычитаете 1 из результата, потому что вы не хотите включать сам символ в вывод. А затем вы отправляете возвращенный номер непосредственно на num_chars аргумент ЛЕВОЙ функции:

ОСТАВИЛ(клеткаПОИСК(«уголь«, клетка)-1)

Например, чтобы извлечь подстроку перед символом дефиса (-) из ячейки A2, используйте следующую формулу:

=ВЛЕВО(A2, ПОИСК(«-«,A2)-1)

Независимо от того, сколько символов содержит ваша строка Excel, формула извлекает только текст до первого дефиса:
Извлечение текста перед определенным символом

Чтобы получить текст после определенного символа, вы используете несколько иной подход: получите позицию символа с помощью ПОИСК или НАЙТИ, вычтите это число из общей длины строки, возвращаемой функцией ДЛСТР, и извлеките столько же символов из конца строки. Струна.

ПРАВИЛЬНО(клетка,ЛЕН(клетка)-ПОИСК(«уголь«, клетка))

В нашем примере мы будем использовать следующую формулу для извлечения подстроки после первого дефиса:

=ВПРАВО(A2,ДЛСТР(A2)-ПОИСК(«-«,A2))
Извлечение текста после определенного символа

Как извлечь текст между двумя экземплярами символа

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

СРЕДНЯЯ(клеткаПОИСК(«уголь«, клетка)+1, ПОИСК («уголь«, клеткаПОИСК («чар», клетка)+1) — ПОИСК («уголь«, клетка)-1)

Первые два аргумента этой формулы MID предельно ясны:

Текст это ячейка, содержащая исходную текстовую строку.

Start_num (начальная точка) — простая формула ПОИСК возвращает позицию нужного символа, к которой вы добавляете 1, потому что хотите начать извлечение со следующего символа.

Num_chars (количество символов для извлечения) — самая сложная часть:

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

Например, чтобы извлечь текст, окруженный двумя дефисами, вы должны использовать эту формулу:

=СРЕДН(A2, ПОИСК(«-«,A2) + 1, ПОИСК(«-«,A2,ПОИСК(«-«,A2)+1) — ПОИСК(«-«,A2) — 1)

На скриншоте ниже показан результат:
Извлечение текста между двумя дефисами

Если вы хотите извлечь текст между 2-м и 3-м или 3-м и 4-м вхождением одного и того же символа, вы можете использовать более компактную комбинацию ПОИСК ПОДСТАВКИ, чтобы получить позицию символа, как описано в разделе Как найти N-е вхождение символа в строку. :

НАЙТИ(СИМВОЛ(1),ПОДСТАВИТЬ(клетка,персонаж,СИМВОЛ(1),N-е вхождение))

В нашем случае мы могли бы извлечь подстроку между 2-м и 3-м дефисом по следующей формуле:

=MID(A2, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1),2))+1, НАЙТИ(СИМВОЛ(1),ЗАМЕНИТЬ(A2,»-«,СИМВОЛ(1) ,3)) — НАЙТИ(СИМВОЛ(1),ПОДСТАВИТЬ(A2,»-«,СИМВОЛ(1),2))-1)
Извлечение подстроки между 2-м и 3-м дефисом

В ситуациях, когда вы не хотите извлекать подстроку, а хотите найти только ячейки, содержащие ее, вы используете функцию ПОИСК или НАЙТИ, как показано в приведенных выше примерах, но выполняете поиск внутри функции ЕСНИМ. Если ячейка содержит подстроку, функция поиска возвращает позицию первого символа, и если ISNUMBER получает любое число, она возвращает TRUE. Если подстрока не найдена, поиск приводит к ошибке, заставляя ISNUMBER возвращать FALSE.

IНОМЕР(ПОИСК(«подстрока«, клетка))

Предположим, у вас есть список британских почтовых индексов в столбце A, и вы хотите найти те, которые содержат подстроку «1ZZ». Чтобы это сделать, используйте эту формулу:

=ISNUMBER(ПОИСК(«1zz», A2))

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

Если вы хотите вернуть собственное сообщение вместо логических значений ИСТИНА и ЛОЖЬ, вложите приведенную выше формулу в функцию ЕСЛИ:

=ЕСЛИ(IЧИСЛО(ПОИСК(«1zz», A2)), «Да», «»)

Если ячейка содержит подстроку, формула возвращает «Да», в противном случае — пустую строку («»):
Формула для идентификации ячеек, содержащих определенную подстроку

Как вы помните, функция ПОИСК в Excel нечувствительна к регистру, поэтому вы используете ее, когда регистр символов не имеет значения. Чтобы ваша формула различала прописные и строчные буквы, выберите функцию НАЙТИ с учетом регистра.

Дополнительные сведения о том, как найти текст и числа в Excel, см. в разделе Если ячейка содержит примеры формул.

Как вы только что видели, Microsoft Excel предоставляет множество различных функций для работы с текстовыми строками. Если вы не уверены, какая функция лучше всего подходит для ваших нужд, передайте задание нашему Ultimate Suite for Excel. Имея эти инструменты в своем арсенале Excel, вы просто переходите к Данные об аблебитах вкладка > Текст группу и нажмите Извлечь:
Инструмент «Извлечь текст» в Excel

Теперь вы выбираете исходные ячейки и любые сложные строки, которые они содержат, извлечение подстроки сводится к этим двум простым действиям:

  1. Укажите, сколько символов вы хотите получить из начала, конца или середины строки; или выберите извлечение всего текста до или после заданного символа.
  2. Нажмите Вставить результаты. Сделанный!

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

И через мгновение вы получите следующие результаты:
Части адресов электронной почты извлекаются в отдельные столбцы.

Помимо скорости и простоты, инструмент Извлечь текст имеет дополнительную ценность — он поможет вам изучить формулы Excel в целом и функции работы с подстроками в частности. Как? Установив флажок «Вставить как формулу» в нижней части панели, вы гарантируете, что результаты выводятся в виде формул, а не значений.

В этом примере, если вы выберете ячейки B2 и C2, вы увидите следующие формулы соответственно:

  • Чтобы извлечь имя пользователя:

    =ЕСЛИОШИБКА(СЛЕВА(A2,ПОИСК(«@»,A2)-1),»»)

  • Чтобы извлечь домен:

    =ЕСЛИОШИБКА(ПРАВО(A2, ДЛСТР(A2)- ПОИСК(«@»,A2) — ДЛСТР(«@») + 1),»»)

Сколько времени у вас ушло бы на то, чтобы вычислить эти формулы самостоятельно? 😉

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

Если вам интересно попробовать это, а также многие другие полезные функции, включенные в Ultimate Suite for Excel, вы можете загрузить ознакомительную версию.

Дополнительные формулы для подстрок в Excel

В этом уроке мы продемонстрировали некоторые классические формулы Excel для извлечения текста из строки. Как вы понимаете, может быть почти бесконечное количество вариаций этих базовых сценариев. Ниже вы найдете еще несколько примеров формул, в которых вам пригодятся функции Text.

Доступные загрузки

Функции работы с подстроками в Excel — практическая рабочая тетрадь (файл .xlsx)
Ultimate Suite — пробная версия (файл .exe)

Предположим, у вас есть следующий список текстовых строк, которые содержат символ «-», и теперь вы хотите получить последнее или n-е вхождение символа «-», есть ли у вас какие-нибудь хорошие идеи для решения этой проблемы?


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

Вот несколько формул, которые помогут вам найти последнюю позицию определенного символа, пожалуйста, сделайте следующее:

1. Рядом с текстовой строкой введите или скопируйте любую из приведенных ниже формул в пустую ячейку:

=SEARCH(«^^»,SUBSTITUTE(A2,»-«,»^^»,LEN(A2)-LEN(SUBSTITUTE(A2,»-«,»»))))
=LOOKUP(2,1/(MID(A2,ROW(INDIRECT(«1:»&LEN(A2))),1)=»-«),ROW(INDIRECT(«1:»&LEN(A2))))

2. Затем перетащите маркер заливки в диапазон, в котором вы хотите применить эту формулу, и вы получите последнее вхождение определенного символа «-», см. Снимок экрана:

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


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

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

1. Откройте свой рабочий лист, который вы хотите использовать.

2. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

3. Затем нажмите Вставить > Модули, и вставьте следующий макрос в Окно модуля.

Код VBA: найти последнее вхождение символа

Function LastpositionOfChar(strVal As String, strChar As String) As Long
LastpositionOfChar = InStrRev(strVal, strChar)
End Function

4. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите эту формулу = lastpositionofchar (A2; «-») в пустую ячейку помимо ваших данных, см. снимок экрана:

5. Затем перетащите дескриптор заполнения в диапазон, который вам нужен для применения этой формулы, и вхождение последнего символа «-» было извлечено из текстовых строк, как показано на следующем снимке экрана:

Внимание: В приведенной выше формуле: A2 — это ячейка, содержащая данные, которые вы хотите использовать, а «»- это символ, который вам нужен, чтобы найти его последнюю позицию, вы можете изменить их по своему усмотрению.


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

Чтобы получить первую или n-ю позицию определенного символа, примените следующую формулу:

1. Введите или скопируйте приведенные ниже формулы в пустую ячейку, в которую вы хотите поместить результат, и нажмите Enter ключ для получения первого результата:

=FIND(CHAR(160),SUBSTITUTE(A2,»-«,CHAR(160),2))

2. Затем перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и позиции второго символа «-» были вычислены, см. Снимок экрана:

Примечание: В приведенных выше формулах A2 указывает значение ячейки, которое вы хотите использовать, «»Обозначает конкретный символ, положение которого вы хотите получить, число 2 обозначает указанное вхождение символа, который вы хотите получить.


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

Работы С Нами Kutools for ExcelАвтора Найдите место N-го символа в строке утилиту, вы можете быстро и легко получить позицию первого или n-го конкретного символа.

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

После установки Kutools for Excel, пожалуйста, сделайте так:

Например, я хочу получить второе появление символа «-», пожалуйста, сделайте следующее:

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

2. Затем нажмите Кутулс > Формула Помощник > Формула Помощник, см. снимок экрана:

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

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

4. Затем нажмите Ok кнопку, а затем перетащите маркер заполнения вниз к ячейкам, положение которых вы хотите получить, чтобы получить следующий результат по мере необходимости.

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Больше относительных статей:

  • Извлечь все, кроме первого / последнего слова в Excel
  • Чтобы извлечь все слова из ячейки, но первое или последнее слово может помочь вам удалить ненужное слово, которое вам нужно, в этом случае, конечно, вы можете скопировать нужные слова и вставить их в другую ячейку по одному. Но это будет скучно, если нужно извлечь несколько значений ячеек, кроме первого или последнего слова. Как быстро и легко извлечь все слова, кроме первого или последнего, в Excel?
  • Извлечь символы справа налево в ячейке
  • В этой статье будет рассказано о вытягивании или извлечении символов справа в ячейке, пока не будет достигнут пробел, чтобы получить следующий результат на листе Excel. Полезная формула из этой статьи поможет быстро и легко решить эту задачу.
  • Удалить первые, последние X символов или символы определенных позиций
  • В этой статье будет рассказано о вытягивании или извлечении символов справа в ячейке, пока не будет достигнут пробел, чтобы получить следующий результат на листе Excel. Полезная формула из этой статьи поможет быстро и легко решить эту задачу.
  • Найдите позицию первой строчной буквы
  • Если у вас есть список текстовых строк, которые содержат как прописные, так и строчные буквы, теперь вы хотите узнать положение первой строчной буквы из них на листе Excel. Как быстро получить результат, не пересчитывая их по очереди?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Like this post? Please share to your friends:
  • Excel найти последнее вхождение строки
  • Excel найти подстроку в столбце
  • Excel найти повторяющиеся значения в столбце формула
  • Excel найти повторы в ячейках
  • Excel найти перевод строки в ячейке