Поиск справа налево в строке 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 помогут вам упростить их решение и сэкономят ваше время!

 

YGrigor18

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

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

Добрый день,
Как в Excel реализовать в строке поиск справа налево?

1). Как найти, между словами второй пробел справа в строке?
2). Как найти в строке определенный символ, например «*» и найти слева от него ближайший пробел?

Поиск слева направо в принципе понятно. И с помощью VBA тоже, а как сделать с помощью функций Excel?

Примеры:
1) яблоко вишня слива персик
Нужно найти справа второй пробел и слева первый и оставить слово «вишня».
Как слева найти все понятно.

2) яблоко вишня слива персик NN*25
где NN — это может быть число из одной или двух цифр.
И надо найти «x» и от него найти позицию первого пробела слева.

В интернете, к сожалению, видел идеи, но решения не нашел.
Спасибо за помощь!

сегодня, 18:00    [21602259]     Ответить | Цитировать Сообщить модератору
 

instrrev
или
strreverse

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

БМВ

Модератор

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

Excel 2013, 2016

какая разница в какую сторону искать.

общий принцип: например нужен предпоследний пробел
сперва считаются пробелы, потом заменяется пробел на символ невиданный например на CHAR(7)  но естественно не каждый, а только N-1 ю ну и ищется этот символ в полученной строке.
В случае со словом все и сложнее и проще. Только вот самое сложное для вас прочесть правила форума.

Изменено: БМВ25.07.2018 18:30:11

По вопросам из тем форума, личку не читаю.

 

1) Текст в А1
Число_пробелов:
=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))

Позиция_2_пробела_справа:
=ПОИСК(«|»;ПОДСТАВИТЬ($A$1;» «;»|»;Число_пробелов-2+1))

Позиция_1_пробела_слева:
=ПОИСК(«|»;ПОДСТАВИТЬ($A$1;» «;»|»;1))

Текст между вторым справа и первым слева пробелом:
=ПСТР(текст;Позиция 1 пробела слева+1;Позиция_2_пробела_справа-Позиция_1_пробела_слева-1)

2) сначала получаем позицию нужного символа при помощи ПОИСК или НАЙТИ, затем при помощи ПСТР получаем кусок текста до этого символа, затем используем этот текст как в первом примере.

 

YGrigor18

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

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

#5

26.07.2018 10:03:59

Цитата
БМВ написал:
В случае со словом все и сложнее и проще. Только вот самое сложное для вас прочесть правила форума.

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

 

YGrigor18,  ну если читали почему файл-пример не приложили — уже бы и решение получили возможно.

Не бойтесь совершенства. Вам его не достичь.

 

YGrigor18

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

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

Добрый день,  спасибо всем за помощь!

все получилось и реально работает :)
Хорошего дня !!!

 

YGrigor18

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

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

#8

26.07.2018 13:20:04

Цитата
a.i.mershik написал:
Примеры: 1) яблоко вишня слива персикНужно найти справа второй пробел и слева первый и оставить слово «вишня». Как слева найти все понятно.2) яблоко вишня слива персик NN*25где NN — это может быть число из одной или двух цифр.И надо найти «x» и от него найти позицию первого пробела слев

Согласен…, на будущее учту.
Просто написал, что есть текст 1: яблоко вишня слива персик

И есть текст2: яблоко вишня слива персик NN*25
где NN — это может быть число из одной или двух цифр.
И надо найти «x» и от него найти позицию первого пробела слева.

Т

екст 1 или 2

можно поместить в любую ячейку. Например в A1
С первым пунктом все получилось красиво.
Сейчас добиваю с Текстом2, там несколько другие условия …

 

vikttur

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

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

 

YGrigor18

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

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

#10

26.07.2018 15:36:37

В смысле?

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

Мурад

Дата: Среда, 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

 

Ответить

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

В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в 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 помогут вам упростить их решение и сэкономят ваше время!

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

Примените функцию обратного поиска, чтобы искать слово справа в текстовой строке с формулой


Примените функцию обратного поиска, чтобы искать слово справа в текстовой строке с формулой

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

Введите эту формулу: = ОБРЕЗАТЬ (ПРАВО (ПОДСТАВИТЬ (ОБРЕЗАТЬ (A2); «»; ПОВТОР («»; 99)); 99)) в пустую ячейку, а затем перетащите дескриптор заполнения вниз к ячейкам, из которых вы хотите извлечь последнее слово, и все последнее слово в текстовых строках было отображено сразу, см. снимок экрана:

Внимание: Формула может найти слово только справа на основе разделителя пробела.


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

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

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

вкладка kte 201905


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

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

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Like this post? Please share to your friends:
  • Поиск списка в списке excel
  • Поиск спецсимволов в word
  • Поиск сочетаний слов в word
  • Поиск соседней ячейки excel
  • Поиск соответствующего значения excel