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

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

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

Здесь алгоритм такой:
- Как и в предыдущем варианте, с помощью тех же функций ДЛСТР, СТРОКА, ДВССЫЛ, ПСТР и текстового сравнения создается булевый массив;
- Но на этом этапе единица делится на него. ЛОЖЬ эквивалентна нулю и выдается ошибка деления на ноль. ИСТИНА возвращает единицу.
- Функция ПОИСКПОЗ с последним параметром “1” при поиске 2 (на месте 2 может быть любое число больше 1) возвращает позицию последнего наибольшего числа, меньшее, чем 2. Т.е. последней единицы, которой и соответствует последний найденный в строке символ.
Смотрите также по теме:
Предыдущая статья о формулах массива:
Учимся формулам массива 3/4:
Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
Сотни инструментов надстройки для Excel !SEMTools помогут вам упростить их решение и сэкономят ваше время!
Excel номер символа в строке
что она вернетслово дрель, икоторых составляет 5(Изменить списки…)А(СИМВОЛ) возвращает определённыйПРАВСИМВ, ПРАВБ доступна в выпуске и возвращает число Обязательный. Текст, который требуетсяВ этой статье описаны величины числа. Начальная позиция символа используем следующую формулу:Функция ПСТР в Excel
цифру, букву надстрочной
символ амперсанд (&), не одно число, у которых есть символов.Нажмите кнопку
. Вы можете ввести символ, код которогоВозвращают крайние справа знаки
Excel 2013 и всех
9. Функция найти. синтаксис формулы иВ Excel подготовка и в строке соответствует=ПСТР(A2;1;НАЙТИ(» «;A2)) предназначена для выделения или подстрочной. Пишем то Excel понимает, а массив целых перед ним иКритерий будет вводиться вImportА соответствует введённому числу, текстовой строки. последующих версиях.ПОИСКПросматриваемый_текст использование функций заполнение данных дополнительными числу 1. ЕслиФункция НАЙТИ возвращает номер подстроки из строки маленькую букву «о». что нужно соединить чисел — соответствующих
после него как ячейку
(Импорт), затемв ячейку и опираясь на таблицу
ПОИСК, ПОИСКБФункциявсегда возвращает номер Обязательный. Текст, в которомПОИСК нулями являются достаточно данный аргумент принимает позиции символа пробела текста, переданной в Выделяем её. Нажимаем в ячейке два номеров строк. Для минимум 1 символ.
С2ОК сослаться на неё, символов Вашего компьютера.Ищут вхождения одного текстового
Синтаксис
знака, считая от
нужно найти значениеи
простым способом в дробное число из « » в
качестве первого аргумента, правой мышкой, выбираем текста. этого введите вДля создания списка, содержащегои выглядеть так:
и закройте меню или ввести букву (Для Windows — значения в другомASC начала
Замечание
аргументаПОИСКБ применении. Если, например, диапазона допустимых значений, просматриваемой строке, который и возвращает требуемое из контекстного менюЕсть видимые символы, Строке формул выражение найденные значения, воспользуемся «дрел?». Вопросительный знак
настроек.А это (без учета регистра).Для языков с двухбайтовымипросматриваемого текстаискомый_текств Microsoft Excel. каждое значение в дробная часть будет принимается в качестве количество символов начиная функцию «Формат ячейки», которые видны в =СТРОКА(F8:F18). Выделите формулу формулой массива: является подстановочным знаком.
Теперь введите любую буквув функцию вANSIПОДСТАВИТЬ
наборами знаков (например,, включая символы, которые.Функции
поле «ID клиента» усечена; аргумента число_знаков функции с заданной позиции. ставим галочку у ячейке. Но есть и нажмите=ИНДЕКС(Список;НАИМЕНЬШИЙ(
Для реализации этого варианта на листе Excel виде текстовой строки., а для MacintoshЗаменяет в текстовой строке катакана) преобразует полноширинные пропускаются, если значениеНачальная_позицияПОИСК должно иметь почисло_знаков – обязательный аргумент, ПСТР. В результатеОдин символ в языках функции «надстрочный». Нажимаем невидимые символы, ихF9ЕСЛИОШИБКА(ЕСЛИ(ПОИСК($G$2;Список);СТРОКА(Список)-СТРОКА($A$4);НД());»»); поиска требуется функция и используйте автозаполнение,=CODE(«A») или =CODE(B1) – кодировка старый текст новым. (двухбайтовые) знаки в аргумента Необязательный. Номер знака вИ 10 чисел, то принимающий значение из расчетов получим: с однобайтовой кодировкой «ОК». не видно в(см. файл примера).СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))) позволяющая использовать подстановочные чтобы завершить последовательность.=КОДСИМВ(«А») или =КОДСИМВ(B1)MacintoshТ полуширинные (однобайтовые).начальная_позиция
Примеры
аргументеПОИСКБ для реализации данной диапазона неотрицательных чисел,Для заполнения столбца «Марка» соответствует 1 байту.Или выделяем цифру. ячейках, но ониПолучим массив последовательных чисел) знаки: используем функциюВы можете создать справочнуюВ данном примере код
Как определить позицию символа в строке эксель


- Использование формулы 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 )) — Теперь это просто даст нам строку после последней косой черты.


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

- Выберите вариант Visual Basic. Это откроет редактор VB в бэкэнде.

- На панели Project Explorer в редакторе VB щелкните правой кнопкой мыши любой объект книги, в которую вы хотите вставить код. Если вы не видите Project Explorer, перейдите на вкладку View и нажмите Project Explorer.
- Перейдите во вкладку «Вставить» и нажмите «Модуль». Это вставит объект модуля для вашей книги.

- Скопируйте и вставьте код в окно модуля.

Поиск с конца строки, справа налево в Excel
Как найти первый символ с конца строки?
Примеры использования функции НАЙТИ в Excel формулах
Функции ЛЕВСИМВ, ПРАВСИМВ и ПСТР прекрасно применяются для разделения строк на слова или фрагменты текстов, но при условии, что вам заранее известны позиции символов с которых будет разделение. Что же делать если заранее вам не известно где в текстовой строке находится тот символ, начиная с которого нужно вырезать фрагмент текста?
Пример формулы НАЙТИ, ДЛСТР и ПРАВСИМВ в Excel
Допустим у нас имеется прайс-лист с кодами товаров, как получить часть символов после дефиса с каждого кода, если дефис каждый раз находиться на новой позиции символов?
- PTR-422
- CORPO-6755
- SVCCALL-56532
Функция ЛЕВСИМВ нам сразу не подходит, так как необходимо получить последнюю часть каждого кода. Функция ПРАВСИМВ так же не справиться с данной задачей, ведь в ее аргументах следует указать точное количество символов возвращаемого текста из всех разных кодов разной длины. Если в аргументе будет указано фиксированное числовое значение, то для некоторых кодов сработает, а для большинства будет слишком много или мало количество символов, возвращаемых функцией ПРАВСИМВ.
На практике очень часто приходится автоматически находить определенный символ, чтобы функция сама находила начальную позицию для отделения фрагмента текста из исходной строки.
Для реализации данной задачи следует использовать формулу с комбинацией функций ПРАВСИМВ, ДЛСТР и НАЙТИ:

Благодаря функции НАЙТИ можно автоматически определять позицию в текстовой строке для указанного символа в ее аргументах. А после использовать номер позиции в следующих операциях, например, при автоматической генерации значений для второго аргумента функции ПРАВСИМВ. Реализуется генерация путем определения необходимого числа при вычитании от длины строки, которую возвращает функция ДЛСТР номера позиции символа – «-».
Пример использования НАЙТИ и ПСТР в формуле Excel
В следующем примере, изображенном на рисунке, функция НАЙТИ используется в формуле вместе с функцией ПСТР для выборки средних чисел между дефисами из кода товаров прайс-листа.

Как видно на рисунке формула сначала ищет номер позиции для символа с помощь функции НАЙТИ. А после найденный номер позиции использует в своих аргументах функция ПСТР.
Функция НАЙТИ требует заполнить минимум 2 из 3-х аргументов:
- Искомый_текст – здесь необходимо указать текст, который следует найти и получить его порядковый номер (позицию) в исходной текстовой строке.
- Просматриваемый_текст – тут указываем ссылку на ячейку с исходной строкой, которая содержит искомый символ или текст.
- Нач_позиция – это не обязательный аргумент. Здесь можно указать номер позиции символа в строке, с которого следует начинать поиск. Если строка содержит более одного найденного искомого символа, то с помощью данного необязательного аргумента можно указать номер символа с которого будет просматриваться остальная часть строки. Если он не указан в этом аргументе, то по умолчанию он равен = 1, то есть с первого, а значит целая строка.
На пример, в примере функция находит первый дефис в строке «PWR-16-Small». В результате своего вычисления она по умолчанию возвращает число 4. Так как первый дефис в и сходной строке находится на четвертой позиции.
Динамические формулы с использованием функции НАЙТИ
Но если мы воспользуемся третьим необязательным аргументом и укажем в нем число 5. То есть просматривать первую не целиком, а начиная после первого дефиса, четвертого символа. Тогда функция будет возвращать нам порядковую позицию второго «-», то есть число – 7.

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

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

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