Как найти пробел справа

 

YGrigor18

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

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

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

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

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

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

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

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

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

instrrev
или
strreverse

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

 

БМВ

Модератор

Сообщений: 21638
Регистрация: 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

В смысле?

Например, есть список строк, и каждая ячейка содержит несколько слов, разделенных пробелами, есть ли у вас какие-либо методы, чтобы быстро найти положение первого пробела из этих строк, как показано ниже? В этой статье я расскажу, как легко найти положение n-го пространства в Excel.

Найдите положение n-го пространства по формуле

Удалить начальные / конечные / дополнительные / все пробелы из строкихорошая идея3


Найдите положение n-го пространства по формуле

Чтобы найти положение n-го пробела, вы можете применить эти формулы.

Найдите позицию первого пробела = НАЙТИ («»; A1)
Найдите положение второго пробела = НАЙТИ («»; A1; НАЙТИ («»; A1) +1)
Найдите положение третьего пробела = НАЙТИ («»; A1; НАЙТИ («»; A1; НАЙТИ («»; A1) +1) +1)
Найдите положение четвертого пространства = НАЙТИ («», A1, НАЙТИ («», A1, НАЙТИ («», A1, НАЙТИ («», A1) +1) + 1) +1)

Возьмем, к примеру, положение второго пробела в строках.

Выберите пустую ячейку C2, введите эту формулу = НАЙТИ («»; A2; НАЙТИ («»; A2) +1), затем перетащите дескриптор автозаполнения вниз к ячейке, для которой нужна эта формула. Смотрите скриншот:
док найти пробел, позиция 1


Удалить начальные / конечные / дополнительные / все пробелы из строки

Но в большинстве случаев вам может потребоваться удалить начальные, конечные, дополнительные или все пробелы из списка строк. В Excel нет встроенной функции, которая может ее решить, но с Kutools for Excel — удобный и мощный инструмент для добавления в Excel, его утилита Remove Spaces может быстро выполнять указанные выше операции по мере необходимости.

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

1. Выберите строки, в которых нужно удалить пробелы, и нажмите Кутулс > Текст > Удалить пробелы. Смотрите скриншот:
док найти пробел, позиция 2

2. в Удалить пробелы диалог, отметьте опцию в Тип пространства как вам нужно, и вы можете просмотреть удаленный результат в предварительный просмотр раздел. Смотрите скриншот:
док найти пробел, позиция 3

3. Нажмите Ok or Применить, теперь из выбранных строк удаляются пробелы.
док найти пробел, позиция 4


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

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)


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

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

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

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

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

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

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

Я
   Mafiozaa

14.09.21 — 10:34

Приветствую, или заработался или чего, не могу сообразить, суть в чем, есть список значений, в этом списке значений построчно идут, ФИО + Почта, мне нужно вырвать только почту (естественно кол-во символов неограниченно, фио разные) всякими обрезками типо Лев, Прав и тд не получится, но закономерность у них такая что почта идет после 3-его пробела, Фамилия * Имя * Отчество * Почта, нужно найти 3-ий пробел в каждой строке, и вырвать все что идет после него

   Bigbro

1 — 14.09.21 — 10:36

Найти(стр,» «) ?

   Mafiozaa

2 — 14.09.21 — 10:36

(1) Найдет, первый пробел

   Bigbro

3 — 14.09.21 — 10:37

отлично, начиная со след позиции делаешь сокрЛ и снова ищешь пробел?

   Bigbro

4 — 14.09.21 — 10:39

и учти что бывают люди у которых нет отчества. а также сложные имена с пробелами

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

прежде чем куда-то грузить будешь.

   Garykom

5 — 14.09.21 — 10:40

https://www.about1c.ru/v77/language-reference/system/string-functions/function-strreplace

https://www.about1c.ru/v77/language-reference/system/string-const/line-break-const

https://www.about1c.ru/v77/language-reference/system/string-functions/function-strlinecount

https://www.about1c.ru/v77/language-reference/system/string-functions/function-strgetline

   Guk

6 — 14.09.21 — 10:42

СтрокаСРазделителями = СтрЗаменить(МояСтрока, » «, РазделительСтрок)

твоя почта будет четвертой

СтрПолучитьСтроку(СтрокаСРазделителями, 4)…

   НЕА123

7 — 14.09.21 — 10:42

(0)

СтрЗаменить(),СтрЧислоСтрок()

в 77 есть такое?

   НЕА123

8 — 14.09.21 — 10:44

+(7)

опоздал.

(5)+1

   Mafiozaa

9 — 14.09.21 — 10:46

(6) Брат, ну это гениально

   Базис

10 — 14.09.21 — 10:46

RegExp средствами ОС — правильный способ.

Поблочно разбирать правыми подстроками — простой способ.

   Злопчинский

11 — 14.09.21 — 11:00

ДаразбиратьглРазложить в ГМ потом сз с конца проверять  на собаку

   mikecool

12 — 14.09.21 — 11:03

найти @ — от его позиции первый пробел слева и первый справа — между ними почта

  

1Сергей

13 — 14.09.21 — 11:20

(11) +1

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Q как найти физика электростатика
  • Волосы пушатся как исправить
  • Как составить смс для клиентов
  • Как найти облась значений функции
  • Как найти машинку на радиоуправлении

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии