В последних нескольких статьях мы обсуждали различные текстовые функции. Сегодня наше внимание сосредоточено на ПРАВСИМВ (RIGHT в английской версии), которая предназначена для возврата указанного количества символов из крайней правой части текстовой строки. Как и другие функции для работы с текстом, ПРАВСИМВ очень проста и понятна. Тем не менее, у нее есть несколько неочевидных применений, которые могут оказаться полезными в вашей работе.

Синтаксис.

ПРАВСИМВ возвращает указанное количество символов от конца текста.

Правила написания:

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

Где:

  • Текст  (обязательно) - текст, из которого вы хотите извлечь символы.
  • число_знаков  (необязательно) - количество символов для извлечения, начиная с самого правого символа.
    • Если аргумент опущен, возвращается один последний символ (по умолчанию).
    • Когда число знаков для извлечения больше, чем общее количество символов в ячейке, возвращается весь текст.
    • Если введено отрицательное число, формула возвращает ошибку #ЗНАЧ!.

Например, чтобы извлечь последние 6 символов из ячейки A2, запишите:

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

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

функция ПРАВСИМВ в Excel

Важное замечание! ПРАВСИМВ всегда возвращает текст, даже если исходное значение является числом. Чтобы заставить формулу выводить число, используйте ее в сочетании с ЗНАЧЕН, как показано в этом примере .

В реальных таблицах ПРАВСИМВ редко используется в одиночку. В большинстве случаев вы будете использовать ее вместе с другими функциями Excel в составе более сложных формул. Об этом и поговорим далее.

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

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

ПРАВСИМВ( текст; ДЛСТР( текст ) - ПОИСК( символ ; текст ))

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

=ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(" ";A2))

Формула даст следующий результат:

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

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

=ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК("-";A2))

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

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

Как извлечь подстроку после последнего вхождения разделителя

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

Как вы можете видеть на скриншоте выше, столбец A содержит список ошибок. Ваша цель - получить описание ошибки, которое идет после последнего двоеточия. Дополнительная сложность заключается в том, что исходные значения могут содержать разное количество разделителей, например, A3 содержит 3 двоеточия, а A5 - только одно.

Ключом к поиску решения является определение позиции последнего разделителя (последнее вхождение двоеточия в этом примере). Для этого вам нужно будет выполнить несколько несложных операций:

  1. Подсчитайте количество разделителей в исходной строке. Это несложно:
    • Вычисляете общую ее длину с помощью ДЛСТР(A2).
    • Определяем длину без разделителей, используя формулу ПОДСТАВИТЬ, которая заменяет все вхождения двоеточия ничем: ДЛСТР(ПОДСТАВИТЬ(A2; ":"; ""))
    • Наконец, вы вычитаете длину исходной строки без разделителей из общей длины:  ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;":";""))

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

  1. Замените последний разделитель на какой-нибудь уникальный символ. Чтобы извлечь текст, который идет после последнего разделителя, нам нужно каким-то образом «пометить» это последнее вхождение разделителя. Для этого давайте заменим последнее вхождение двоеточия символом, который нигде не встречается в исходных значениях, например, знаком доллара ($).

Если вы знакомы с синтаксисом функции ПОДСТАВИТЬ, вы можете помнить, что у нее есть 4-й необязательный аргумент (номер вхождения), который позволяет заменять только конкретное появление указанного символа. И поскольку мы уже вычислили количество разделителей, просто впишите рассмотренное выше выражение в четвертый аргумент функции ПОДСТАВИТЬ:

=ПОДСТАВИТЬ(A2;":";"$";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;":";"")))

Если вы поместите эту формулу в отдельную ячейку, она вернет:          ERROR: 432 $ Connection timed out

  1. Определяем позицию последнего разделителя. В зависимости от того, на какой символ вы заменили последний разделитель, используйте ПОИСК (без учета регистра) или НАЙТИ (с учетом регистра), чтобы определить позицию этого символа. Мы заменили последнее двоеточие на знак $, поэтому используем следующую формулу, чтобы узнать его местоположение:

ПОИСК("$"; ПОДСТАВИТЬ(A2;":";"$";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;":";"")))))

В этом примере формула возвращает 10, что является позицией $ в измененном тексте.

  1. Получаем подстроку справа от последнего разделителя. Теперь, когда вы знаете позицию последнего разделителя, все, что вам нужно сделать, это вычесть это число из общей длины строки и использовать ПРАВСИМВ, чтобы вернуть это количество символов из конца исходного текста:

ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК("$"; ПОДСТАВИТЬ(A2;":";"$";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;":";"")))))

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

=ЕСЛИОШИБКА(ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК("$"; ПОДСТАВИТЬ(A2;":";"$";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;":";""))))); A2)

Как показано на скриншоте ниже, формула работает отлично:

извлечь текст после последнего двоеточия при помощи ПРАВСИМВ

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

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

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

В наборе данных, использованном в предыдущем примере, вы можете удалить слово «ERROR», которое появляется в начале, и оставить только номер ошибки и описание. Для этого вычтите количество удаляемых символов из общей длины текста и передайте это число в  аргумент количество_знаков:

ПРАВСИМВ( текст; ДЛСТР (текст) - число_символов_для_удаления )

В этом примере мы удаляем первые 6 символов (5 букв и двоеточие) из содержимого A2, поэтому наша формула выглядит следующим образом:

=ПРАВСИМВ(A2; ДЛСТР(A2)-6)

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

Может ли функция Excel ПРАВСИМВ извлечь число из текста?

Как упоминалось в начале этого руководства, ПРАВСИМВ в Excel всегда возвращает текст, даже если исходное значение является числом. Но что, если вы работаете с числовым набором данных и хотите, чтобы результат тоже был числовым? Простой обходной путь - вложить формулу ПРАВСИМВ в функцию ЗНАЧЕН, которая специально разработана для преобразования текста, состоящего из цифр, в число.

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

=ЗНАЧЕН(ПРАВСИМВ(A2; 6))

На рисунке ниже показан результат. Обратите внимание на числа с выравниванием по правому краю в столбце B, в отличие от текстовых значений, которые выровнены по левому краю в столбце A:

извлечь число из текста при помощи ПРАВСИМВ

Больше инструкций и примеров по этому вопросу вы можете посмотреть здесь: Как быстро извлечь число из текста.

Почему ПРАВСИМВ не работает с датами?

Потому что она предназначена для работы с текстовыми значениями, тогда как даты на самом деле являются числами во внутренней системе Excel. Формула ПРАВСИМВ не может получить отдельную часть даты — день, месяц или год. Если вы попытаетесь это сделать, все, что вы получите, - это несколько последних цифр числа, представляющего дату.

Предположим, у вас есть дата 9 августа 2020 года в ячейке A1. Если вы попытаетесь извлечь год с помощью формулы ПРАВСИМВ(A1,4), результатом будет 4052, что является последними четырьмя цифрами числа 44052, представляющего 9 августа 2020года в системе Excel.

«Итак, как мне получить определенную часть даты?», - спросите вы меня. Используя одно из следующих выражений:

  • Функция ДЕНЬ для извлечения дня: = ДЕНЬ(A1)
  • Функция МЕСЯЦ, чтобы получить месяц: = МЕСЯЦ(A1)
  • ГОД, чтобы вытащить год: = ГОД(A1)

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

Если ваши даты записаны в виде текста, что часто бывает при экспорте данных из других программ, то ничто не мешает вам использовать ПРАВСИМВ для извлечения последних нескольких символов, которые представляют определенную часть даты:

Теперь наша попытка извлечь год из даты вполне удачна.

Почему ПРАВСИМВ не работает? Причины и решения.

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

  1. В исходных данных есть один или несколько концевых пробелов. Чтобы быстро удалить лишние пробелы в ячейках, используйте функцию СЖПРОБЕЛЫ.
  2. Аргумент число_знаков меньше нуля. Конечно, вряд ли вам захочется специально добавлять отрицательное число в формулу, но если этот аргумент вычисляется какой-то формулой Excel, и вы получаете ошибку #ЗНАЧ!, то обязательно проверьте вложенные выражения на наличие ошибок.
  3. Исходное значение - дата. Если вы внимательно следовали этому руководству, вы уже знаете, почему формула ПРАВСИМВ не может работать с датами. 

Вот как вы можете использовать ПРАВСИМВ в Excel. 

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

Благодарю вас за чтение и надеюсь увидеть вас в нашем блоге.