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

  • Обычная составная формула
  • Формулы массива для поиска символа с конца строки
    • С помощью МАКС
    • С помощью ПОИСКПОЗ

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

Поиск позиции последнего вхождения значения внутри ячейки Excel – довольно сложная задача.

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

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

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

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

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

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

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

Формула ниже ищет пробел с конца ячейки A1:

=ПОИСК(ЮНИСИМВ(23456);ПОДСТАВИТЬ(A1;" ";ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))

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

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

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

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

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

Поиск слева направо с помощью функции ПОДСТАВИТЬ, описанный выше, имеет пару недостатков.

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

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

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

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

Формула ниже находит позицию символа “а” в любом регистре.

={МАКС((ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)="а")*СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1))))}
ВАЖНО:
Это формула массива!
Она вводится без фигурных скобок.
Но не клавишей Enter а сочетанием: 
Ctrl+Shift+Enter
После этого фигурные скобки появятся сами.
Если ввести формулу обычным способом, она не сработает.

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

  1. Функция ДЛСТР измеряет длину ячейки в символах
  2. ДВССЫЛ создает из текстового представления длины ссылку на диапазон строк с 1 по строку, равную этой длине
  3. Функция СТРОКА возвращает массив чисел, соответствующих этим длинам, соответственно, {1;2;3;…”длина строки”}
  4. Функция ПСТР, обрабатывая этот массив, возвращает для каждого числа символ, стоящий на этой позиции в строке
  5. Текстовое сравнение с символом “а” возвращает булевый массив (значения ИСТИНА или ЛОЖЬ)
  6. Этот массив умножается на повторно созданный массив чисел (пункты 1:3). ЛОЖЬ эквивалентна нулю, а ИСТИНА – единице, поэтому для всех символов, не равных “а”, в результирующем числовом массиве будут нули, а для равных – их позиции
  7. Функция МАКС возвращает наибольшее число в этом массиве.

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

Чуть более хитрая механика делает формулу короче, вместе с тем существенно быстрее, а задействует функцию ПОИСКПОЗ:

{=ПОИСКПОЗ(2;1/(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)="а");1)}
ВАЖНО:
Это формула массива!
Она вводится без фигурных скобок.
Но не клавишей Enter а сочетанием: 
Ctrl+Shift+Enter
После этого фигурные скобки появятся сами.
Если ввести формулу обычным способом, она не сработает.

Здесь алгоритм такой:

  1. Как и в предыдущем варианте, с помощью тех же функций ДЛСТР, СТРОКА, ДВССЫЛ, ПСТР и текстового сравнения создается булевый массив;
  2. Но на этом этапе единица делится на него. ЛОЖЬ эквивалентна нулю и выдается ошибка деления на ноль. ИСТИНА возвращает единицу.
  3. Функция ПОИСКПОЗ с последним параметром “1” при поиске 2 (на месте 2 может быть любое число больше 1) возвращает позицию последнего наибольшего числа, меньшее, чем 2. Т.е. последней единицы, которой и соответствует последний найденный в строке символ.

Смотрите также по теме:

Формулы массива в Excel

Удалить последнее слово в ячейке

Найти и заменить первую букву в ячейке на заглавную


Предыдущая статья о формулах массива:

Учимся формулам массива 3/4:

Извлечь текст до первой цифры в ячейке

Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
Сотни инструментов надстройки для Excel !SEMTools помогут вам упростить их решение и сэкономят ваше время!

ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)

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

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

Описание

Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:

=ПОИСК(«н»;»принтер»)

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

=ПОИСК(«base»;»database»)

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

Важно: 

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

  • Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.

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

Синтаксис

ПОИСК(искомый_текст;просматриваемый_текст;[начальная_позиция])

ПОИСКБ(искомый_текст;просматриваемый_текст;[начальная_позиция])

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

  • Искомый_текст    Обязательный. Текст, который требуется найти.

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

  • Начальная_позиция    Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Замечание

  • Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.

  • В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (~).

  • Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

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

  • Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

  • Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

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

Данные

Выписки

Доход: маржа

маржа

Здесь «босс».

Формула

Описание

Результат

=ПОИСК(«и»;A2;6)

Позиция первого знака «и» в строке ячейки A2, начиная с шестого знака.

7

=ПОИСК(A4;A3)

Начальная позиция строки «маржа» (искомая строка в ячейке A4) в строке «Доход: маржа» (ячейка, в которой выполняется поиск — A3).

8

=ЗАМЕНИТЬ(A3;ПОИСК(A4;A3);6;»объем»)

Заменяет слово «маржа» словом «объем», определяя позицию слова «маржа» в ячейке A3 и заменяя этот знак и последующие пять знаков текстовой строкой «объем.»

Доход: объем

=ПСТР(A3;ПОИСК(» «;A3)+1,4)

Возвращает первые четыре знака, которые следуют за первым пробелом в строке «Доход: маржа» (ячейка A3).

марж

=ПОИСК(«»»»;A5)

Позиция первой двойной кавычки («) в ячейке A5.

5

=ПСТР(A5;ПОИСК(«»»»;A5)+1;ПОИСК(«»»»;A5;ПОИСК(«»»»;A5)+1)-ПОИСК(«»»»;A5)-1)

Возвращает из ячейки A5 только текст, заключенный в двойные кавычки.

босс

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

 

mirvaal

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

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

Необходимо что-то типа «ПОИСК» или «НАЙТИ» только не слева направо, а наоборот.  
Есть набор определенных данных нужно отобрать в строках данные справа налево до определенного знака (первого)  
Пример прилагается.  
Я не спец, а очень нужно.  
Заранее всем спасибо.

 

слэн

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

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

 

mazayZR

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

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

слэн, а вот твой же вариант решения проблемы ;)  
«символы после последнего пробела»    
не это ли тут надо? ;)  

  =ПСТР(СЖПРОБЕЛЫ(A1);1+НАЙТИ(«~~~»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»~~~»;ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»))));ДЛСТР(A1))  

  а вот формула массива от DL  
делает тоже самое — выбирает все символы после последнего пробела  

  =ПРАВСИМВ($A$1;ДЛСТР($A$1)-МАКС(ЕСЛИ(ПСТР($A$1;СТРОКА(ДВССЫЛ(«2:»&ДЛСТР($A$1)-1));1)=» «;СТРОКА(ДВССЫЛ(«2:»&ДЛСТР($A$1)-1));0)))

 

mirvaal

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

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

 

слэн

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

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

но эта по-моему короче? :)  

  =ПСТР(B5;МАКС(ЕСЛИ(ПСТР(B5;СТРОКА(СМЕЩ($A$1;0;0;ДЛСТР(B5);1));1)=» «;СТРОКА(СМЕЩ($A$1;0;0;ДЛСТР(B5);1))))+1;9999)  

  112 против 141 символа :)  

      =ПСТР(СЖПРОБЕЛЫ(A1);1+НАЙТИ(«~~~»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»~~~»;ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»))));ДЛСТР(A1))

 

ZVI

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

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

85 символов и не формула массива :-)  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);60))

 

mazayZR

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

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

забавно :)  
утащил в амбар

 

ytk5kyky

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

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

{quote}{login=ZVI}{date=14.01.2009 10:58}{thema=}{post}85 символов и не формула массива :-)  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);60)){/post}{/quote} Есть одно ограничение. Строка символов после последнего пробела должна быть короче 60.  
Чтобы снять это ограничение предлагаю так:  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;ДЛСТР(B5)));ДЛСТР(B5));ДЛСТР(B5)))  
106 символов стало.

 

ZVI

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

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

Тема сегодня такая :-) расчет на «человеческое» слово.  
Эту формулу я уже приводил, и по ней можно выделять не только последнее слово:  

http://www.planetaexcel.ru/forum.php?thread_id=5027

 

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

  Спасибо за формулу, а также за все посты в «сортировка массива в VBA»

 

{quote}{login=Лузер™}{date=15.01.2009 10:11}{post}Есть одно ограничение. Строка символов после последнего пробела должна быть короче 60.{/post}{/quote}  
да ладно .. можно ж и 99 (или 999) использовать

 

слэн

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

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

вот вам 84 символа без существенных ограничений :)  

  ПОДСТАВИТЬ(A1;ЛЕВСИМВ(A1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»)  

  кто меньше ? :))

 

ytk5kyky

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

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

Слэн, Ваша формула но на один символ короче :)  
ПОДСТАВИТЬ(A1;ПСТР(A1;1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»)  
«ПСТР» + «1;» < ЛЕВСИМВ

 

слэн

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

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

:))  

  ну тогда уж :  

  ПСТР(A1;1+МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999)));999)  

  ваш ход

 

слэн

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

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

и еще есть резерв .. но ваш ход, сударь

 

ytk5kyky

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

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

Кстати, у ZVI 85 знаков с «=», а у слэна без оного.  
Так что если в формуле ZVI провести аналогичную замену, то выйдет все равно короче.  
СЖПРОБЕЛЫ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);1;60))  
84 знака (учитывая «=»)  
Еще можно учесть отсутствие фигурных скобок, которые в формуле слэна необходимы.

 

ytk5kyky

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

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

Нету у меня ходов. Просто я давно заметил, что ПСТР короче ЛЕВСИМВ :)  
Времени жаль нет ковырять формулы.

 

слэн

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

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

ПСТР(A1;1+МАКС((ПСТР(A1;СТРОКА(1:999);1)=» «)*СТРОКА(1:999));999)  

  65 символов без равно и фиг скобок  

  ЗАМЕНИТЬ(A1;1;МАКС((ПСТР(A1;СТРОКА(1:999);1)=» «)*СТРОКА(1:999));»»)  

  68 символов

 

Плюс АДЫН!!! замечательным пионерам Excelя нашего форума!!!  
А казалось давно решенный простой вопрос…  
Игорь67

 

{quote}{login=слэн}{date=15.01.2009 12:01}{thema=}{post}вот вам 84 символа без существенных ограничений :)  
ПОДСТАВИТЬ(A1;ЛЕВСИМВ(A1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»){/post}{/quote}  
Слэн! Дело в том что Ваша формула и формула Zvi основаны на существенно различных идеях.  
Классическое решение, широко используемое на данном форуме, заключается в поиске позиции символа, отвечающего требуемым условиям и использованиии этой позиции для получения решения.  
Формула Zvi принципиально иная.  
Она основана на том, что если между словами мы вставим достаточно длинные пустоты, то каждое слово попадёт во вполне определённый участок: нам известны позиции начала и конца участка, но не известно где именно в нём находиться слово. То есть любое слово дополняется справа и слева пустотами, так чтобы  количество символов в слове и пустот окружающих слово было равно вполне определённому числу. В приведённых Zvi формулах — 60.  
Использовать для сравнения этих двух подходов задачу о выделении последнего слова некорректно, ну а тем более ложить в основу сравнения длину формулы.  
Например возьмём задачу о выделении третьего с конца слова. При классическом подходе придётся использовать «гнусную» по количеству символов функцию наибольший, и ещё находить позицию последнего символа в слове.  
В подходе ZVi достаточно изменить номер выбираемого участка:  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A2);» «;ПОВТОР(» «;60));3*60);60))  
//разделитель слов пробел «», вставляем между словами по 60 пробелов, выбираем участок длиной 60, начинающйся со 180 символа с конца, удаляем пробелы, получаем искомое слово//  
Разумеется остаётся в силе замечание Лузера о том, что существуют нехорошие фразы, для которых формула будет давать ошибки, но является ли это таким уж страшным недостатком?

 

написал в ответ целую повесть, с иллюстрациями, алеегориями — а оно мне «код не совпадает» зол!!!!  

  для поставленной задачи формула ZVI может быть урезана так:  
СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;ПОВТОР(» «;60));60))  

  что дает 68 символов..

 

ytk5kyky

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

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

{quote}{login=dl@kartoshka.ru}{date=16.01.2009 08:20}{post}Разумеется остаётся в силе замечание Лузера о том, что существуют нехорошие фразы, для которых формула будет давать ошибки, но является ли это таким уж страшным недостатком?{/post}{/quote}На самом делее этот «недостаток» легко исправляется. Формула, правда, становится длиннее, но этот «перфекционизм (совершенство)» мне напоминает старый тезис программистов, что «любую программу можно сократить на одну строку». :-D

 

слэн

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

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

остается еще ограничение на длину строки, что в переводе около 500 «слов» в изначальной фразе..

 

ytk5kyky

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

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

{quote}{login=слэн}{date=16.01.2009 11:08}{thema=}{post}остается еще ограничение на длину строки, что в переводе около 500 «слов» в изначальной фразе..{/post}{/quote} Ну если у Вас «слово» длиной в среднем 65 символов, то 500 слов. :)  
Провел сравнение разных формул на предельной длине строки (32767 симв.). Все что длиннее эксель тихо обрезает.  
Формулы от слэна рабочие (с оговоркой замены СТРОКА(1:999) на СТРОКА(1:65536))  
Самая короткая и универсальная вышла:  
ПСТР(B3;1+МАКС((ПСТР(B3;СТРОКА(1:65536);1)=» «)*СТРОКА(1:65536));65536)  
71 символ без = и {}  
Предупреждаю: считает такую строку долго.

 

слэн

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

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

я имел в виду, что слова разделены пробелами, т.е пробелов может быть как минимум на 1 меньше слов, а каждый пробел(после сжпробелы) заменяется  в формуле ZVI на 60 таких же.. но еще и сами слова — отсюда примерно 500 :)  

  с другой стороны трудно ожидать таких длинных слов или фраз — может и 60 достаточно, но 999-то уж точно? и уж совсем точно, что раз строка не может превышать 32767, то и 65536 не нужны..  

  а если у меня 999 заменить на 60, то это ж целых три символа экономии :)

 

ytk5kyky

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

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

А, теперь понял откуда 500 взялось. Логично.  

  Мне лень было менять 65536 на 32767 — количество символов одинаковое.

 

слэн

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

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

 

ytk5kyky

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

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

Время — да. Но этого критерия еще не вводилось. Только количество символов в формуле.

 

слэн

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

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

кстати, DL, с универсальностью тоже не все так просто.. не получится так, как Вы предложили..  

  попробуйте на такой строчке:  

  1 2 3 444444444444444444444444444444444444444444444444444444444444­44444444 5

 

dl@kartoshka.ru

Гость

#30

20.01.2009 07:05:20

Поэтому я и уточнил что замечание Лузера остаётся в силе.  
С другой стороны «неправильные» фразы, я думаю, встречаются не так уж часто.  
И на самом деле все упирается в методологический вопрос: необходимо ли создавать формулу, которая гарантировано посчитает требуемое или задуматься о том что же лежит в исходных данных и предъявить к ним некоторые ограничивающие требования.  
То есть совершенная формула при ошибочных исходных данных, тянет ошибку дальше, несовершенная формула, вносит ошибку в ошибку, но так или иначе, побкда над ошибкой лостигается возвращением к истокам.  

   а вот канувшие в лету аллегории действительно очень жаль, что поделать борьба с киборгами перманентна….

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

Найти позицию последнего вхождения значения в ячейке 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) То есть последнюю единицу, которая соответствует последней в строке найден символ.

Поиск символа/части строки справа налево,т.е. с конца строки

Мурад

Дата: Среда, 03.06.2015, 11:22 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

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

 

Ответить

Samaretz

Дата: Среда, 03.06.2015, 11:54 |
Сообщение № 2

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 215


Репутация:

62

±

Замечаний:
0% ±


Excel 2010; 2013; 2016

Так надо?

Код

=LEN(C3)-LEN(IF(ISERROR(FIND(» «;C3));C3;RIGHT(C3;LEN(C3)-FIND(«~»;SUBSTITUTE(C3;C5;»~»;LEN(C3)-LEN(SUBSTITUTE(C3;C5;»»)))))))-1


Благодарность можно отправить на Яндекс-кошелек: 410011414293115

 

Ответить

_Boroda_

Дата: Среда, 03.06.2015, 12:01 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

В В1 — что ищем, в А2 — где ищем, формулу нахождения последнего вхождения так можно написать (вообще-то куча вариантов).

Код

=ПРОСМОТР(;-1/(ПОИСК(B1;ПСТР(A2;СТРОКА($1:$99);99))=1);СТРОКА($1:$99))

формула немассивная
И массивная

Код

=МАКС((ПСТР(A2;СТРОКА($1:$99);ДЛСТР(B1))=B1)*СТРОКА($1:$99))

Еще немассивные

Код

=ПРОСМОТР(;-1/(B1=ПСТР(A2;СТРОКА($1:$99);ДЛСТР(B1)));СТРОКА($1:$99))

Код

=-ПРОСМОТР(;-СТРОКА($1:$99)/(B1=ПСТР(A2;СТРОКА($1:$99);ДЛСТР(B1))))


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Мурад

Дата: Среда, 03.06.2015, 14:10 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Спасибо, Саша, Самарец, за старания и отзывчивость!

 

Ответить

Yana239

Дата: Пятница, 25.11.2016, 16:31 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 24


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Уважаемые форумчане, я правильно понимаю, чтобы мне удалить все знаки справа до первой запятой (есть еще и вторая запятая) мне нужно использовать такую сложную формулу (см вложение).
Более простого решения нет?

К сообщению приложен файл:

_______.xlsx
(10.4 Kb)

 

Ответить

Pelena

Дата: Пятница, 25.11.2016, 16:54 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Yana239, создайте свою тему. Эта тема закрыта


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

В учебнике показано, как использовать функции подстроки в 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)

Skip to content

Функция ПРАВСИМВ в Excel — примеры и советы.

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

  • Правила синтаксиса
  • Как вернуть текст после определенного символа
  • Извлекаем текст после последнего вхождения разделителя
  • Как удалить первые N знаков?
  • Как извлечь число при помощи ПРАВСИМВ?
  • Почему ПРАВСИМВ не работает с датами?
  • Почему не работает? Причины и решения.

Синтаксис.

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

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

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

Где:

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

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

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

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

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

В реальных таблицах ПРАВСИМВ редко используется в одиночку. В большинстве случаев вы будете использовать ее вместе с другими функциями 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)

Может ли функция 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. Вы сможете без проблем избавиться от лишних пробелов и ненужных символов, поменять регистр букв, подсчитать символы и слова в ячейке или в диапазоне, добавить один и тот же текст в начало или конец всех ячеек в диапазоне, преобразовать текст в числа, разделить его по отдельным ячейкам, извлечь отдельные слова, найти и удалить дубли слов.

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

Как быстро посчитать количество слов в Excel В статье объясняется, как подсчитывать слова в Excel с помощью функции ДЛСТР в сочетании с другими функциями Excel, а также приводятся формулы для подсчета общего количества или конкретных слов в…
Как быстро извлечь число из текста в Excel В этом кратком руководстве показано, как можно быстро извлекать число из различных текстовых выражений в Excel с помощью формул или специального инструмента «Извлечь». Проблема выделения числа из текста возникает достаточно…
Как удалить пробелы в ячейках Excel Вы узнаете, как с помощью формул удалять начальные и конечные пробелы в ячейке, лишние интервалы между словами, избавляться от неразрывных пробелов и непечатаемых символов. В чем самая большая проблема с…
Функция СЖПРОБЕЛЫ — как пользоваться и примеры Вы узнаете несколько быстрых и простых способов, чтобы удалить начальные, конечные и лишние пробелы между словами, а также почему функция Excel СЖПРОБЕЛЫ (TRIM в английской версии)  не работает и как…
Функция ЛЕВСИМВ в Excel. Примеры использования и советы. В руководстве показано, как использовать функцию ЛЕВСИМВ (LEFT) в Excel, чтобы получить подстроку из начала текстовой строки, извлечь текст перед определенным символом, заставить формулу возвращать число и многое другое. Среди…
5 примеров с функцией ДЛСТР в Excel. Вы ищете формулу Excel для подсчета символов в ячейке? Если да, то вы, безусловно, попали на нужную страницу. В этом коротком руководстве вы узнаете, как использовать функцию ДЛСТР (LEN в английской версии)…
Как быстро сосчитать количество символов в ячейке Excel В руководстве объясняется, как считать символы в Excel. Вы изучите формулы, позволяющие получить общее количество символов в диапазоне и подсчитывать только определенные символы в одной или нескольких ячейках. В нашем предыдущем…

Функция ПОИСК() в MS EXCEL

​Смотрите также​ текстом имеет адрес​ ячейка, в которой​ а обработчик php​ быть указана, как​ улиц будут найдены​(ЕСЛИОШИБКА) появилась в​

Синтаксис функции

​ поиск начнётся с​​ Мы также разберем,​

​ найти, и позволяет​​нажмите кнопку​ можно оперативнее обеспечивать​

​=ИНДЕКС(Список;НАИМЕНЬШИЙ(​​ т.е. 5 букв).​Найдем все названия инструментов,​​ использована совместно с​​ 8-й позиции слева.​

​Функция ПОИСК(), английский вариант​​ «А2» и в​ находится произвольный текст.​ этот символ​ значение аргумента​​ фразы CENTRAL, CENTER​​ Excel, начиная с​ первого символа.​

​ как справиться с​​ сделать активной ячейки,​​Найти и выделить​ вас актуальными справочными​ЕСЛИОШИБКА(ЕСЛИ(ПОИСК($G$2;Список);СТРОКА(Список)-СТРОКА($A$4);НД());»»);​ Критерию также будут​ которые​ функциями ЛЕВСИМВ(), ПРАВСИМВ()​Пусть в ячейке​ SEARCH(), находит первое​ данной ячейке следующий​В тексте ячейки​ не любит.​start_num​

​ и CENTRE.​ версии 2007. В​Функция​

​ теми ситуациями, когда​ выбрав нужное вхождение.​и нажмите кнопку​ материалами на вашем​СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список))))​

Примеры

​ соответствовать такие несуразные​начинаются​ и ПСТР().​А2​

​ вхождение одной текстовой​​ текст «аб. Абвгд»:​​ постоянно меняются первые​RAN​(нач_позиция) в «главной»​=ISNUMBER(SEARCH($E$2,B3))​ более ранних версиях​SEARCH​ эта функция выдаёт​

​ Можно сортировать результаты​Найти​ языке. Эта страница​)​ значения как дрел5,​с фразы дрел​Например, в ячейке​

​введена строка Первый​ строки в другой​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ 1-3 символа, например:​: Так вы что,​ функции​=ЕЧИСЛО(ПОИСК($E$2;B3))​ тот же результат​(ПОИСК) возвратит позицию​ ошибку.​Найти​.​ переведена автоматически, поэтому​Часть формулы ПОИСК($G$2;Список) определяет:​ дрелМ и т.п.​

​ и​А2​ канал — лучший.​ строке и возвращает​xcell = Range(«A2»).Value​ а. 1111111, аб.​ каждый день сюда​SEARCH​

Функция НАЙТИ() vs ПОИСК()

​Если мы запишем два​ можно было получить,​ первой совпадающей строки,​Итак, давайте рассмотрим внимательно​все, щелкнув заголовок.​В поле​ ее текст может​содержит​ (если они содержатся​

Связь с функциями ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР()

​длина строки​содержится фамилия и​ Формула =ПОИСК(СИМВОЛ(32);A2) вернет​ начальную позицию найденной​

​xcellpart = Left(xcell,4)​​ 1111111, абв. 1111111.​​ новый файл выкладывать​(ПОИСК). В результате​ знака минус (двойное​ используя​ не зависимо от​ теорию и практические​Примечание:​Найти​ содержать неточности и​ли значение из​ в списке).​

excel2.ru

Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть2. Подстановочные знаки

​которых составляет 5​ имя «Иванов Иван»,​ 7, т.к. символ​ строки.​То есть, методом​Каким образом можно​ будете, чтобы мы​ названия городов будут​ отрицание) перед функцией​IF​ регистра. Если Вам​ примеры по функции​ Чтобы прекратить процесс поиска,​введите текст —​

​ грамматические ошибки. Для​ диапазона​Критерий вводится в ячейку​​ символов.​​ то формула =ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)​

Задача

​ пробела (код 32)​ПОИСКискомый_текстпросматриваемая_строка​ Left взять 4​ проверить ячейку на​ вам меняли?​ проигнорированы поиском.​ISNUMBER​

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

​(ЕСЛИ) вместе с​ нужен поиск с​SEARCH​​ нажмите клавишу ESC.​​ или номера —,​

​ нас важно, чтобы​A5:A13​E2​

​Критерий будет вводиться в​ извлечет фамилию, а​​ находится на 7-й​​;[нач_позиция])​ первые символа ячейки​​ наличие в первые​​ShAM​Теперь проверенная и исправленная​

​(ЕЧИСЛО), то она​ISERROR​​ учётом регистра, Вы​​(ПОИСК). Если у​Для выполнения этой задачи​ вам нужно найти.​

​ эта статья была​фразу «?дрел?». Критерию​и выглядит так:​ ячейку​ =ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2)) — имя.​ позиции.​Искомый_текст​ и уже их​ 4 символах содержимого​: Андрей, убил. Пойду,​

​ формула будет считать​ возвратит значения​(ЕОШИБКА).​
​ можете использовать функцию​
​ Вас припрятаны какие-то​
​ используется функция​
​ Или выберите из​

​ вам полезна. Просим​​ также будут соответствовать​​ «дрел??». В этом​С2​​ Если между именем​​Формула =ПОИСК(«#???#»;»Артикул #123# ID»)​
​  — текст, который требуется​ передав в переменную​​ ячейки (в том​​ отдышусь.​​ только те строки,​​1​

​=IFERROR(SEARCH(B5,B2),»Not Found»)​FIND​ хитрости или примеры​ЕТЕКСТ​ раскрывающегося списка​ вас уделить пару​ значения содержащие фразы​ случае будут выведены​и выглядеть так:​ и фамилией содержится​ будет искать в​ найти.​ при помощи конструкции​ числе и точку),​

Б. Найти значения, которые начинаются со слова дрель или дрели и содержат как минимум 6 букв

​palmin90​​ которые содержат слово​​/​=ЕСЛИОШИБКА(ПОИСК(B5;B2);»Not Found»)​(НАЙТИ), с которой​ работы с этой​.​​Найти​​ секунд и сообщить,​ 5дрел7, Адрелу и​​ все значения, в​​ «дрел?». Вопросительный знак​

​ более одного пробела,​ строке «Артикул #123#​Просматриваемая_строка​
​ if then else​
​ на наличие одного​
​: ShAM, я рад,​
​ «bank» в названии​

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

В. Найти значения, у которых слово дрель находится в середине строки

​ то для работоспособности​​ ID» последовательность из​​  — текст, в которой​ проверять на совпадение​ из вариантов: «а.»,​ что развеселил. Тяжкий​​ профессии:​​вместо TRUE/FALSE (ИСТИНА/ЛОЖЬ).​ результат, возвращаемый​ в рамках марафона​ ими в комментариях.​ условия, которое можно​

​Примечание:​ вам, с помощью​Критерий вводится в ячейку​
​начинаются​
​Для реализации этого варианта​
​ вышеупомянутых формул используйте​
​ 5 символов, которая​

​ ищется​​ с текстом, который​​ «аб», «абв.», вырезать​ день, проблема в​​=—ISNUMBER(SEARCH($E$1,B2,SEARCH(«|»,B2)))​​ Далее, функция​SEARCH​30 функций Excel за​Функция​ указать с помощью​

Г. Найти значения, которые заканчиваются на слово дрель или дрели

​ В условиях поиска можно​​ кнопок внизу страницы.​​I2​с текста-критерия (со​ поиска требуется функция​ функцию СЖПРОБЕЛЫ().​​ начинается и заканчивается​​Искомый_текст​ ищется.​

​ их из ячейки​

​ том, что уже​=—ЕЧИСЛО(ПОИСК($E$1;B2;ПОИСК(«|»;B2)))​SUM​
​(ПОИСК), на наличие​
​ 30 дней​
​SEARCH​
​ функции​

​ использовать подстановочные знаки.​​ Для удобства также​и выглядит так:​​ слова дрел) и​​ позволяющая использовать подстановочные​​Найдем текстовые значения, удовлетворяющие​ на знак #.​.​Подскажите, пожалуйста, как​ и передать в​

​ есть макрос и​
​Урок подготовлен для Вас​(СУММ) в ячейке​ ошибки – воспользоваться​.​(ПОИСК) ищет текстовую​Если​Чтобы задать формат для​

excel2.ru

Проверка ячейки на наличие в ней текста (без учета регистра)

​ приводим ссылку на​​ «дрел?». В этом​длиной как минимум​ знаки: используем функцию​ заданному пользователем критерию.​Чтобы найти позицию второго​Нач_позиция​ проверить при помощи​ переменную, либо делать​ хотелось его дополнить​ командой сайта office-guru.ru​ E2 подсчитает суммарное​ функцией​Используйте функцию​ строку внутри другой​.​ поиска, нажмите кнопку​ оригинал (на английском​ случае будут выведены​6 символов.​ ПОИСК(). Согласно критерию​ Критерии заданы с​

​ вхождения буквы «а»​  — позиция знака в​ .Find взятые от​ иное действие, если​ функцией, принцип ничего​Источник: http://blog.contextures.com/archives/2011/01/19/30-excel-functions-in-30-days-18-search/​ количество записей, где​ISNUMBER​SEARCH​ текстовой строки, и,​Для выполнения этой задачи​Формат​ языке) .​

​ все значения,​Для создания списка, содержащего​ «дрел?» (длина 5​ использованием подстановочных знаков.​ в строке «мама​

Поиск ячеек, содержащих текст

​ просматриваемой_строке, с которой​ исходного текста 4​ одного их данных​

  1. ​ не делать повторяющегося​Перевел: Антон Андронов​ искомый текст был​

    ​(ЕЧИСЛО). Если строка​(ПОИСК), чтобы найти​ если находит, то​

  2. ​ используются функции​​и внесите нужные​​Предположим, что вы хотите​​заканчивающиеся​​ найденные значения, воспользуемся​​ символов) — должны​​ Поиск будем осуществлять​​ мыла раму» используйте​​ должен начинаться поиск.​
    Найдите параметр на ленте

  3. ​ первых символа на​​ вариантов вначале ячейки​​ ежедневно хорош, для​Автор: Антон Андронов​ найден.​ найдена, результатом​ какой-либо текст внутри​​ сообщает её позицию.​​Если​

    ​ изменения во всплывающем​​ убедиться, что столбец​на слова дрель​

  4. ​ формулой массива:​ быть выведены 3​​ в диапазоне с​​ формулу =ПОИСК(«а»;»мама мыла​ Если аргумент​ наличие текста «аб.»?​​ нет.​​ этого и нужны​

  5. ​palmin90​​В следующем примере в​​SEARCH​ текстовой строки. В​Функция​,​ окне​ содержит текст, не​

    ​ или дрели.​=ИНДЕКС(Список;НАИМЕНЬШИЙ(​ значения: Дрель, дрель,​ повторяющимися значениями. При​​ раму»;ПОИСК(«а»;»мама мыла раму»)+1).​​нач_позиция​​ То есть, чтобы​​Сможет ли помочь​​ программисты.​​: Приветствую, нужна помощь.​

  6. ​ столбце B показаны:​​(ПОИСК) будет число,​​ этом примере мы​​SEARCH​​Поиск​

    ​Найти формат​​ номера. Или perhapsyou​ ​ЕСЛИОШИБКА(ЕСЛИ(ПОИСК($E$2;Список)=1;СТРОКА(Список)-СТРОКА($A$4);НД());»»);​ Дрели.​ наличии повторов, можно​ Чтобы определить есть​​опущен, то предполагается​​ в случае, если​

​ в данном вопросе​​В общем вопрос​Нужно найти и​

Проверка ячейки на наличие в ней любого текста

​Название города | Профессия​ а значит функция​​ будем искать одиночный​​(ПОИСК) ищет текстовую​

Примеры ЕТЕКСТ

Проверка соответствия содержимого ячейки определенному тексту

​и​.​ необходимо найти все​Для создания списка, содержащего​​СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список))))​​Для создания списка, содержащего​

Примеры ЕСЛИ

Проверка соответствия части ячейки определенному тексту

​ ожидать, что критерию​ ли третье вхождение​​ значение 1.​​ в первых 4​​ инструмент Find в​​ закрыт, на стадии​​ заменить символ на​​Наша задача найти профессии,​

​ISNUMBER​​ символ (введённый в​​ строку внутри другой​​ЕЧИСЛО​

Примеры ЕСЛИ, ЕЧИСЛО и ПОИСК

support.office.com

30 функций Excel за 30 дней: ПОИСК (SEARCH)

​Кнопка​​ заказы, которые соответствуют​ найденные значения, воспользуемся​​)​ найденные значения, воспользуемся​ будет соответствовать несколько​​ буквы «м» в​​В аргументе​ символах есть текст​ VBA?​ компилирования из csv​ всем рабочем пространстве​

​ содержащие текстовую строку,​(ЕЧИСЛО) вернет TRUE​​ ячейке B5) внутри​​ текстовой строки. Она​.​Параметры​ определенным Продавец. Если​ формулой массива:​Часть формулы ПОИСК($E$2;Список)=1 определяет:​ формулой массива:​ значений. Для их​ строке «мама мыла​искомый_текст​

​ «аб.», выполнялась одно​Пробовал написать макрос​ в json эту​​ листа.​​ введённую в ячейке​ (ИСТИНА). Если же​ текстовой строки, находящейся​ может:​Примечание:​служит для задания​

Функция 18: SEARCH (ПОИСК)

​ у вас нет​​=ИНДЕКС(Список;НАИМЕНЬШИЙ(​​начинается​=ИНДЕКС(Список;​ вывода в отдельный​ раму» используйте формулу​можно использовать подстановочные​

Функция ПОИСК в Excel

Как можно использовать функцию SEARCH (ПОИСК)?

​ условие, а если​​ при помощи Find,​​ вещь править будут.​Ситуация такая:​ E1. Формула в​ текст не найден,​

  • ​ в ячейке B2.​Найти строку текста внутри​ Функция​
  • ​ более подробных условий​ проблемой верхний или​
  • ​ЕСЛИОШИБКА(ЕСЛИ(ПОИСК($I$2;ПРАВСИМВ((Список);ДЛСТР($I$2)));СТРОКА(Список)-СТРОКА($A$4);НД());»»);​ли значение из​

Синтаксис SEARCH (ПОИСК)

​НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ((ПОИСК($C$2;Список)=1)*(ДЛСТР($C$2)=ДЛСТР(Список))=1;СТРОКА(Список)-СТРОКА($A$4);НД());»»);​​ диапазон удобно использовать​​ =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама​ знаки — вопросительный​

​ текст не "аб.",​
​ но не могу​

  • ​palmin90​​1. Нужно выделить​ ячейке C2 будет​
  • ​ то​​=SEARCH(B5,B2)​ другой текстовой строки​поиска​
  • ​ поиска. Например, можно найти​​ нижний регистр текста,​СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список))))​ диапазона​СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список))))​

Ловушки SEARCH (ПОИСК)

​ формулы массива.​​ мыла раму»);»Нет третьего​​ знак (?) и​ а просто «а.»,​ никак понять, как​: RAN, только дошло​ всю страницу от​ следующая:​SEARCH​​=ПОИСК(B5;B2)​​ (без учёта регистра).​не учитывается регистр.​ все ячейки, содержащие​​ существует несколько способов​)​​A5:A13​

Пример 1: Находим текст в строке

​)​​Пусть Исходный список значений​​ вхождения м»;»Есть третье​ звездочку (*). Вопросительный​ выполнялось другое?​ задать именно жесткий​ как вы до​ ctrl-home до ctrl-end.​=—ISNUMBER(SEARCH($E$1,B2))​(ПОИСК) сообщит об​Если текст найден, функция​

​Использовать в поиске символы​
​Вчера в марафоне​

​ данных определенного типа,​​ проверки, если ячейка​​Часть формулы ПОИСК($I$2;ПРАВСИМВ((Список);ДЛСТР($I$2))) определяет:​с фразы «дрел??».​Часть формулы ПОИСК($C$2;Список)=1 определяет:​ (например, перечень инструментов)​ вхождение м»)​ знак соответствует любому​​krosav4ig​​ поиск по вышеуказаным​

​ этой странности додумались,​2. Найти в​=—ЕЧИСЛО(ПОИСК($E$1;B2))​​ ошибке, а​​SEARCH​ подстановки.​​30 функций Excel за​​ такого как формулы.​ содержит текст.​​совпадают ли последние 5​​ Критерию также будут​начинается​ находится в диапазоне​Формула =ПОИСК(«клад?»;»докладная») вернет 3,​ знаку; звездочка —​:​наборам символов, чтобы​​ раз ctrl-home написано​​ ячейках , и​​Данная формула нашла строки,​​ISNUMBER​

​(ПОИСК) возвратит номер​
​Определить стартовую позицию в​

Функция ПОИСК в Excel

Пример 2: Используем символы подстановки с SEARCH (ПОИСК)

​ 30 дней​Для поиска на текущем​​Для поиска текста можно​​ символов​ соответствовать значения начинающиеся​ли значение из​​A5:A13.​​ т.е. в слове​ любой последовательности знаков.​​giovanni​​ указать макросу, что​ значит я все​​ заменить его на​​ которые содержат слово​(ЕЧИСЛО) возвратит FALSE​ позиции его первого​ просматриваемом тексте.​​мы распознавали типы​​ листе или во​ также использовать фильтр.​​значений из диапазона​​ с фраз дрелью,​ диапазона​

​См. Файл примера.​​ «докладная» содержится слово​​ Если нужно найти​, .Find не о​​ ищутся именно «а.»,​​ руками делаю)))​ /.​ «bank», но в​​ (ЛОЖЬ).​​ символа в текстовой​Функция​

​ ошибок с помощью​ всей книге можно​​ Дополнительные сведения см.​​A5:A13​ дрел23 и т.п.​A5:A13​Выведем в отдельный диапазон​

​ из 5 букв,​
​ в тексте вопросительный​

Функция ПОИСК в Excel

Пример 3: Определяем стартовую позицию для SEARCH (ПОИСК)

​ том, вам нужен​ «аб.» или «абв.»​RAN​​Pelena​​ одной из них​В значении аргумента​​ строке. Если не​​SEARCH​​ функции​​ выбрать в поле​ в статье Фильтрация​​с фразой «дрел?».​​Критерий вводится в ячейку​с фразы «дрел?».​ значения, которые удовлетворяют​ первые 4 из​ знак или звездочку,​

​ Instr​ и именно вначале​

​: Неужели есть? И​

​: Обязательно макросом? Стандартный​ это слово встречается​find_text​ найден, результатом будет​(ПОИСК) имеет вот​ERROR.TYPE​

​Искать​
​ данных.​

​ Критерию также будут​G2​Часть формулы ДЛСТР($C$2)=ДЛСТР(Список)​ критерию, причем критерий​ которых клад (начиная​ следует поставить перед​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub dd()​ содержимого ячейки​ где об этом​

Функция ПОИСК в Excel

​ инструмент Найти/Заменить не​ не в названии​​(искомый_текст) можно использовать​​ сообщение об ошибке​ такой синтаксис:​​(ТИП.ОШИБКИ) и убедились,​​вариант​Выполните следующие действия, чтобы​ соответствовать значения заканчивающиеся​и выглядит так:​ определяет:​​ задан с использованием​​ с третьей буквы​ ними тильду (~).​​Dim xcell As​​Подскажите, пожалуйста, в​ хоть намек?​ вариант?​

​ профессии, а в​ символы подстановки. Символ​#VALUE!​SEARCH(find_text,within_text,[start_num])​ что она может​Лист​

​ найти ячейки, содержащие​
​ на фразы дрела,​

Функция ПОИСК в Excel

​ «?дрель?». В этом​равна ли длина строки​
​ подстановочных знаков (*,​
​ слова докладная).​

​Если искомый_текст не найден,​

office-guru.ru

Поиск в диапазоне ячеек символа «/» и замена оного (Макросы/Sub)

​ Variant​​ какую сторону смотреть)​
​palmin90​palmin90​ названии города. Это​*​
​(#ЗНАЧ).​
​ПОИСК(искомый_текст;текст_для_поиска;[нач_позиция])​ быть очень полезна​или​
​ определенный текст.​ дрел6 и т.п.​ случае будут выведены​значения из диапазона​

​ ?). Рассмотрим различные​​Функция НАЙТИ() учитывает РЕгиСТР​ возвращается значение ошибки​xcell = Range(«A2»).Value​

​Спасибо!​​: RAN,​: Pelena, к сожалению​ нас не устраивает!​(звёздочка) заменяет любое​В случае, когда результатом​find_text​ для исправления ошибок​
​Книга​Выделите диапазон ячеек, среди​СОВЕТ:​ все значения,​A5:A13​ варианты поиска.​

​ букв и не​​ #ЗНАЧ!​Select Case 1​krosav4ig​ShAM​ нет, у меня​:o

​После каждого названия города​​ количество символов или​ является ошибка, Вы​hands

​(искомый_текст) – текст,​​ в Excel.​.​ которых требуется осуществить​О поиске текстовых​содержащие​5 символам?​Для удобства написания формул​ допускает использование подстановочных​Функция ПОИСК() не учитывает​Case InStr(xcell, «абв.»)​: Доброй ночи​
​: Макрорекордер рулит:​ каждый день новый​ стоит символ​ их отсутствие, а​ можете использовать функцию​

​ который Вы ищете.​​18-й день марафона мы​Нажмите кнопку​ поиск.​ значений с учетом​слово дрель, и​Знак * (умножить) между​

​ создадим Именованный диапазон​​ знаков. Для поиска​ РЕгиСТР букв. Для​MsgBox «абв.»​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>.Find(«абв.*», , xlFormulas, xlWhole,​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Макрос1(): Cells.Replace What:=»»,​

​ файл от 5​​|​
​?​IFERROR​

excelworld.ru

Поиск определенных символов вначале содержимого ячейки (Макросы/Sub)

​within_text​​ посвятим изучению функции​
​Найти все​Чтобы выполнить поиск по​
​ РЕгиСТра читайте в​ у которых есть​ частями формулы представляет​
​ Список для диапазона​ без учета регистра,​ поиска с учетом​Case InStr(xcell, «аб.»)​ xlByRows, xlNext)​
​ Replacement:=»/»: End Sub​ до 13 тыс.строк,​(вертикальная черта), поэтому​(вопросительный знак) заменяет​(ЕСЛИОШИБКА), чтобы вместо​(текст_для_поиска) – текстовая​SEARCH​или​ всему листу, щелкните​ статье Поиск текстовых​ перед ним и​ условие И (значение​A5:A13​ а также для​ регистра следует воспользоваться​MsgBox «аб.»​
​giovanni​giovanni​ где в некоторых​ мы, используя функцию​
​ любой одиночный символ.​ выполнения функции​ строка, внутри которой​(ПОИСК). Она ищет​Найти далее​ любую ячейку.​
​ значений в списках.​ после него как​ должно начинаться с​.​ поиска с использованием​ функцией НАЙТИ().​
​Case InStr(xcell, «а.»)​: Пришла на ум​
​: Доброй ночи!​

​ ячейках эти символы.​​SEARCH​​В нашем примере использован​SEARCH​

​ происходит поиск.​​ символ (или символы)​.​На вкладке​ Часть3. Поиск с​ минимум 1 символ.​ дрел и иметь​Перечень найденных значений будем​ подстановочных знаков пользуйтесь​
​Формула =ПОИСК("к";"Первый канал") вернет​
​MsgBox "а."​
​ примерно такая идея​

​Подскажите, пожалуйста, по​Дело в том,​(ПОИСК), можем найти​ символ подстановки​(ПОИСК) вывести соответствующее​start_num​ внутри текстовой строки​Найти все​Главная​ учетом РЕГИСТРА.​
​Для создания списка, содержащего​ такую же длину,​ помещать в отдельный​ функцией ПОИСК().​ 8, т.к. буква​End Select​ решения задачи. Например,​ следующему вопросу.​ что далее файл​ позицию этого символа.​*​ сообщение. Функция​(нач_позиция) – если​ и сообщает, где​списки каждого экземпляра​

​в группе​​Примечание:​​ найденные значения, воспользуемся​​ как и критерий,​ столбец.​Функция ПОИСК() может быть​​ к находится на​
​End Sub​ ячейка с исходным​
​К примеру, есть​
​ конвертим в .json,​
​ Его позиция может​
​, поэтому в названиях​
​IFERROR​
​ не указан, то​
​ он был найден.​
​ элемента, который необходимо​
​Редактирование​
​Мы стараемся как​

excelworld.ru

​ формулой массива:​

Как определить позицию символа в строке эксель

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

Описание

Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

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

Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.

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

Синтаксис

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

Искомый_текст Обязательный. Текст, который требуется найти.

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

Начальная_позиция Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Замечание

Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.

В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (

Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

Если аргумент начальная_позиция опущен, то он полагается равным 1.

Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

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

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

Формула ниже ищет пробел с конца ячейки A1:

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

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

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

поиск с конца строки - формула

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

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

Поиск слева направо с помощью функции ПОДСТАВИТЬ, описанный выше, имеет пару недостатков.

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

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

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

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

Формула ниже находит позицию символа «а» в любом регистре.

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

    измеряет длину ячейки в символах

  1. ДВССЫЛ создает из текстового представления длины ссылку на диапазон строк с 1 по строку, равную этой длине
  2. Функция СТРОКА возвращает массив чисел, соответствующих этим длинам, соответственно, , обрабатывая этот массив, возвращает для каждого числа символ, стоящий на этой позиции в строке
  3. Текстовое сравнение с символом «а» возвращает булевый массив (значения ИСТИНА или ЛОЖЬ)
  4. Этот массив умножается на повторно созданный массив чисел (пункты 1:3). ЛОЖЬ эквивалентна нулю, а ИСТИНА — единице, поэтому для всех символов, не равных «а», в результирующем числовом массиве будут нули, а для равных — их позиции
  5. Функция МАКС возвращает наибольшее число в этом массиве.

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

Чуть более хитрая механика делает формулу короче, вместе с тем существенно быстрее, а задействует функцию ПОИСКПОЗ:

Здесь алгоритм такой:

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

Смотрите также по теме:

Предыдущая статья о формулах массива:

Учимся формулам массива 3/4:

Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
Сотни инструментов надстройки для Excel !SEMTools помогут вам упростить их решение и сэкономят ваше время!

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