Как найти позицию второго пробела в excel

Например, есть список строк, и каждая ячейка содержит несколько слов, разделенных пробелами, есть ли у вас какие-либо методы, чтобы быстро найти положение первого пробела из этих строк, как показано ниже? В этой статье я расскажу, как легко найти положение 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)


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

Хитрости »

24 Июль 2013              95196 просмотров


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

Получить слово до первого пробела достаточно просто:
=ПСТР(A1;1;НАЙТИ(” “;A1)-1)
=MID(A1,1,FIND(” “,A1)-1)
Но куда чаще сложности возникают с получением слова(символа), находящегося на определенной позиции между пробелом. Я беру в качестве примера пробел, но на самом деле это может быть абсолютно любой символ. Например, для получения второго слова(т.е. между первым и вторым пробелом), можно составить такую формулу:
=ПСТР(A1;НАЙТИ(” “;A1)+1;НАЙТИ(” “;A1;НАЙТИ(” “;A1)+1)-НАЙТИ(” “;A1)-1)
=MID(A1,FIND(” “,A1)+1,FIND(” “,A1,FIND(” “,A1)+1)-FIND(” “,A1)-1)
На мой взгляд, выглядит несколько закручено, хотя все не так уж сложно:

  • НАЙТИ(” “;A1)+1 – ищем позицию первого пробела в ячейке A1
  • НАЙТИ(” “;A1;НАЙТИ(” “;A1)+1) – ищем позицию второго пробела и затем из этой позиции вычитаем позицию первого пробела(-НАЙТИ(” “;A1))

Но есть проблема – если второго пробела нет, то формула выдаст ошибку #ЗНАЧ!(#VALUE!). Тогда придется еще и проверку на ошибку делать, что явно не добавит формуле элегантности. А если надо не второе слово, а третье, пятое? Поэтому я предпочитаю использовать такую формулу:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));1;999*2);999);” “;””)
=SUBSTITUTE(RIGHT(MID(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),1,999*2),999),” “,””)
На первый взгляд куда кошмарнее, чем первая. Но у неё есть ряд преимуществ:
– она не нуждается в проверке на отсутствие пробелов
– изменением одного числа можно получить не второе, а 3-е, 4-е и т.д. слово.

Разберем основные моменты использования этой формулы. Во-первых: формула вытаскивает второе слово от начала строки. Во-вторых: чтобы получить первое слово от начала строки, нужно в блоке 999*2 заменить 2 на 1:

=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));1;999*1);999);” “;””)
=SUBSTITUTE(RIGHT(MID(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),1,999*1),999),” “,””)

Чтобы получить 5-е слово – меняем на 5:

=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));1;999*5);999);” “;””)
=SUBSTITUTE(RIGHT(MID(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),1,999*5),999),” “,””)

Т.е. число – это позиция слова(или слов) между пробелами. А что будет, если мы укажем число больше, чем есть пробелов в строке?

А это как раз ТО, К ЧЕМУ ШЛИ – СЛОВО ПОСЛЕ ПОСЛЕДНЕГО ПРОБЕЛА

Если вдруг число будет больше, чем есть пробелов в строке – то мы получим слово после последнего пробела (т.е. первое слово с конца строки). Это значит, что если указать, например, *999 – в большинстве случаев получим как раз последнее слово.

Как это работает:
для примера возьмем текст “мама мыла раму” и формулу по получению второго слова от начала:
=ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));1;999*2);999);” “;””)
=SUBSTITUTE(RIGHT(MID(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),1,999*2),999),” “,””)

  • Сначала при помощи функции ПОДСТАВИТЬ(SUBSTITUTE) мы заменяем все пробелы в тексте на 999 пробелов(999 получаем при помощи функции ПОВТОР(REPT). Число может быть и меньше 999, но не должно быть меньше длины исходной строки. В итоге мы получим очень длинную строку, в которой каждое слово будет отделено от другого 999 пробелами. Что-то вроде такого(пробелов я поставил меньше, конечно):
    “мама____________________________мыла____________________________раму”
  • Далее при помощи функции ПСТР(MID) мы берем все слова от начала строки, до символа на позиции 999*2. Т.е. из текста выше мы получим слова “мама” и “мыла” и по 999 символов после каждого:
    “мама____________________________мыла____________________________”
  • Затем при помощи функции ПРАВСИМВ(RIGHT) получаем 999 символов справа от строки. Т.е. только наше слово и куча пробелов после него
    “мыла____________________________”
  • И напоследок та же функция ПОДСТАВИТЬ(SUBSTITUTE) убирает более не нужные нам пробелы, заменяя их все на пустую строку – “”.

 
Вроде бы достигли того, что нам нужно было. Но вдруг необходимо получить второе слово с конца строки? А если у нас этих слов десятки? Можно использовать некую модификацию приведенной выше формулы, но которая как раз возвращает слово с конца строки:
=ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));999*1);1;999);” “;””)
=SUBSTITUTE(MID(RIGHT(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),999*1),1,999),” “,””)
Принцип тот же: если в блоке 999*1 заменить 1 на 5, то получим 5-е слово с конца строки.
Если необходимо выдергивать слова именно по пробелам, то лучше дополнить еще одной функцией – СЖПРОБЕЛЫ(TRIM), чтобы отсечь лишние пробелы в начале и в конце строки и оставить только одиночные пробелы между словами:

  • слова от начала строки:
    =ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(” “&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);” “;ПОВТОР(” “;999));1;999*1);999);” “;””)
    =SUBSTITUTE(RIGHT(MID(” “&SUBSTITUTE(TRIM(A1),” “,REPT(” “,999)),1,999*1),999),” “,””)
  • слова с конца строки:
    =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(” “&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);” “;ПОВТОР(” “;999));999*1);1;999);” “;””)
    =SUBSTITUTE(MID(RIGHT(” “&SUBSTITUTE(TRIM(A1),” “,REPT(” “,999)),999*1),1,999),” “,””)
  • “вытянуть” определенное количество слов:
    =СЖПРОБЕЛЫ(ПСТР(ПРАВСИМВ(” “&ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;999));999*3);1;999*2))
    =TRIM(MID(RIGHT(” “&SUBSTITUTE(A1,” “,REPT(” “,999)),999*3),1,999*2))
    3 — третье слово с конца строки.
    2 — количество слов.
  • Как видите – хоть формула и выглядит не так-то просто – она весьма универсальная: может и определенное слово вытащить, и к тому же еще и количество извлекаемых слов можно указать.

     
    Остается еще добавить, что вместо пробелов могут быть и другие символы. Например, очень часто встречается ситуация, когда надо из текста получить не одно слово в конкретной позиции, а конкретную строку из текста, разнесенного в одной ячейке на строки:
    Разбиение на строки
    Тогда для получения второй строки(

    ТЦ Таганка

    и

    ТЦ Опус

    ) можно применить такую формулу:

    =ПОДСТАВИТЬ(ПРАВСИМВ(ПСТР(СИМВОЛ(10)&ПОДСТАВИТЬ(C2;СИМВОЛ(10);ПОВТОР(СИМВОЛ(10);999));1;999*2);999);СИМВОЛ(10);””)
    СИМВОЛ(10) здесь означает перенос строки. Обычно эти переносы делаются с клавиатуры. Входим в режим редактирования ячейки, ставим курсор в нужное место строки и нажимаем Alt+Enter.

    я для получения месяцев(

    Август 2015 г.

    и

    Сентябрь 2015 г.

    ) – такую:

    =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(“/”&ПОДСТАВИТЬ(C2;”/”;ПОВТОР(“/”;999));999*1);1;999);”/”;””)

    В этой формуле в качестве разделителя используется слеш “/”.


    Разбор основных параметров формулы для применения в своих файлах

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

    =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(“/”&ПОДСТАВИТЬ(C2;”/”;ПОВТОР(“/”;999));999*1);1;999);”/”;””)

    1. C2 – ячейка с текстом, последнее слово из которого надо извлечь.
    2. “/” – разделитель слов. Если для разделения слов используется не слеш, а запятая или точка – то во всей формуле, где встречается этот символ надо заменить его на нужный.
      Если лень прописывать этот символ внутри формулы несколько раз, его можно записать в отдельную ячейку(скажем, G1) и в формуле указать ссылку уже на эту ячейку:
      =ПОДСТАВИТЬ(ПСТР(ПРАВСИМВ(G1&ПОДСТАВИТЬ(C2;G1;ПОВТОР(G1;999));999*1);1;999);G1;””)
      Теперь для изменения символа надо будет изменить его один раз в ячейке G1 и формула “вытащит” нужное слово/строку, опираясь именно на этот символ.
    3. *1 – число 1 – позиция слова с конца строки, которое необходимо “достать”. 1 – первое с конца(т.е. последнее), 2 – предпоследнее и т.д.

    Зная эти основные моменты достаточно будет в своем файле просто скопировать формулу выше и подставить в неё ссылку на нужную ячейку и указать требуемый разделитель.

    Скачать пример:

      Слово после последнего пробела.xls (29,5 KiB, 3 797 скачиваний)


    Статья помогла? Поделись ссылкой с друзьями!

      Плейлист   Видеоуроки


    Поиск по меткам

    

    Access
    apple watch
    Multex
    Power Query и Power BI
    VBA управление кодами
    Бесплатные надстройки
    Дата и время
    Записки
    ИП
    Надстройки
    Печать
    Политика Конфиденциальности
    Почта
    Программы
    Работа с приложениями
    Разработка приложений
    Росстат
    Тренинги и вебинары
    Финансовые
    Форматирование
    Функции Excel
    акции MulTEx
    ссылки
    статистика

    Содержание:

    • 1 Синтаксис функции
    • 2 Примеры
    • 3 Функция НАЙТИ() vs ПОИСК()
    • 4 Связь с функциями ЛЕВСИМВ() , ПРАВСИМВ() и ПСТР()
      • 4.1 Извлечение первого слова из строки
      • 4.2 Извлечение последнего слова строки
      • 4.3 Извлечение всего, кроме первого слова строки
    • 5 Синтаксис функции СЖПРОБЕЛЫ в Excel
    • 6 Пример использования функции СЖПРОБЕЛЫ
    • 7 СЖПРОБЕЛЫ с другими функциями
    • 8 Как еще можно удалить лишние пробелы в Excel?

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

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

    Искомый_текст — текст, который требуется найти.

    Просматриваемая_строка — текст, в которой ищется Искомый_текст.

    Нач_позиция — позиция знака в просматриваемой_строке, с которой должен начинаться поиск. Если аргумент нач_позиция опущен, то предполагается значение 1.

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

    Если искомый_текст не найден, возвращается значение ошибки #ЗНАЧ!

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

    Примеры

    Формула =ПОИСК(“к”;”Первый канал”) вернет 8, т.к. буква к находится на 8-й позиции слева.

    Пусть в ячейке А2 введена строка Первый канал — лучший. Формула =ПОИСК(СИМВОЛ(32);A2) вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.

    Формула =ПОИСК(“#. #”;”Артикул #123# ID”) будет искать в строке “Артикул #123# ID” последовательность из 5 символов, которая начинается и заканчивается на знак #.

    Чтобы найти позицию второго вхождения буквы “а” в строке “мама мыла раму” используйте формулу =ПОИСК(“а”;”мама мыла раму”;ПОИСК(“а”;”мама мыла раму”)+1). Чтобы определить есть ли третье вхождение буквы “м” в строке “мама мыла раму” используйте формулу =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(“мама мыла раму”;”м”;””;3))=ДЛСТР(“мама мыла раму”);”Нет третьего вхождения м”;”Есть третье вхождение м”)

    Формула =ПОИСК(“клад?”;”докладная”) вернет 3, т.е. в слове “докладная” содержится слово из 5 букв, первые 4 из которых клад (начиная с третьей буквы слова докладная).

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

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

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

    Функция ПОИСК() может быть использована совместно с функциями ЛЕВСИМВ() , ПРАВСИМВ() и ПСТР() .

    Например, в ячейке А2 содержится фамилия и имя “Иванов Иван”, то формула =ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1) извлечет фамилию, а =ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2)) — имя. Если между именем и фамилией содержится более одного пробела, то для работоспособности вышеупомянутых формул используйте функцию СЖПРОБЕЛЫ() .

    трюки • приёмы • решения

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

    Извлечение первого слова из строки

    Чтобы извлечь первое слово из строки, формула должна найти позицию первого символа пробела, а затем использовать эту информацию в качестве аргумента для функции ЛЕВСИМВ. Следующая формула делает это: =ЛЕВСИМВ(A1;НАЙТИ(” “;A1)-1) .

    Эта формула возвращает весь текст до первого пробела в ячейке A1. Однако у нее есть небольшой недостаток: она возвращает ошибку, если текст в ячейке А1 не содержит пробелов, потому что состоит из одного слова. Несколько более сложная формула решает проблему с помощью новой функции ЕСЛИОШИБКА, отображая все содержимое ячейки, если произошла ошибка:
    =ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(” “;A1)-1);A1) .

    Если вам нужно, чтобы формула была совместима с более ранними версиями Excel, вы не можете использовать ЕСЛИОШИБКА. В таком случае придется обойтись функцией ЕСЛИ и функцией ЕОШ для проверки на ошибку:
    =ЕСЛИ(ЕОШ(НАЙТИ(” “;A1));A1;ЛЕВСИМВ(A1;НАЙТИ(” “;A1)-1))

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

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

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

    Следующая формула совместима со всеми версиями Excel:
    =ЕСЛИ(ЕОШ(НАЙТИ(” “;A1));A1;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(“*”;ПОДСТАВИТЬ(A1;””;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))))))

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

    Следующая формула возвращает содержимое ячейки А1, за исключением первого слова:
    =ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(” “:A1;1)) .
    Если ячейка А1 содержит текст 2008 Operating Budget, то формула вернет Operating Budget.

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

    А эта версия совместима со всеми версиями Excel:
    =ЕСЛИ(ЕОШ(НАЙТИ(” “;A1));””;ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(” “;A1;1)))

    Лишние пробелы в тексте замечают не все. И не для всех это, в общем-то, важно. Но в Excel это может обернуться серьезной проблемой, потому что при выполнении команд программа просто не будет учитывать ячейки с дополнительными пробелами.

    Как удалить лишние пробелы в Excel в автоматическом режиме? Чтобы не испортить зрение, вглядываясь в каждую ячейку и убирая лишние доступы клавишей Backspace, можно воспользоваться специальной функцией – СЖПРОБЕЛЫ.

    Да, проговорить название команды может оказаться непросто. Но вот понять ее синтаксис и принцип работы очень легко. Если начать вводить команду, то подсветится следующее: =СЖПРОБЕЛЫ(текст). Т.е. в скобках нужно всего лишь задать ячейку (ячейки), в которых необходимо удалить пробелы.

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

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

    Пример использования функции СЖПРОБЕЛЫ

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

    Невооруженным глазом видно, что некоторые позиции написаны с явными лишними пробелами. Рассмотрим, к чему это может привести.

    Подсчитывать общее количество позиций по каждому виду игрушек будем через функцию СУММЕСЛИ. Вводим ее, протягиваем на остальные ячейки и смотрим результат. Программа выдала ответ по плюшевым зайцам: 3. Хотя мы видим, что их должно быть 3+2=5. В чем проблема? В лишних пробелах.

    Запишем функцию в ячейке D3. В качестве аргумента введем ячейку B3, в которой значится наименование игрушки.

    Теперь протянем функцию до 14 строки и увидим, что тексты действительно выровнялись, потому что пробелы удалились. Проверим это наверняка, изменив диапазон в команде СУММЕСЛИ. Вместо B3:B14 пропишем D3:D14 и посмотрим результат. Теперь плюшевых зайцев действительно 5, медведей – 6 и т.п. Получается, символы табуляции играют важную роль, и их нужно подчищать.

    СЖПРОБЕЛЫ с другими функциями

    Использование функции СЖПРОБЕЛЫ вместе с другими функциями расширяет возможности пользователя. Логично, что она будет использоваться вместе с теми функциями, которые исследуют массивы и возвращают данные. В частности, это функции НАЙТИ, ЛЕВСИМВ, ПРАВСИМВ и др. На практике оказывается, что чаще всего СЖПРОБЕЛЫ используется вместе с ВПР.

    Рассмотрим на примере той же таблицы. Задача: проставить цену напротив каждой позиции. Справа дана вспомогательная таблица, в которой прописана цена каждой игрушки. Теоретически мы можем вручную перепечатать нужные нам цифры, но раз мы в Excel, будем использовать ВПР.

    Если мы протянем формулу до конца таблицы, увидим следующее:

    Розовым цветом мы специально подсветили те позиции, которые написаны с лишними пробелами. Поэтому команда ВПР не выдала по ним результат. Чтобы исправить это, добавим к ВПР функцию СЖПРОБЕЛЫ и посмотрим, что получится.

    Т.к. пробелы нам нужно удалить в искомом значении, команду СЖПРОБЕЛЫ поставим на первое место в синтаксисе ВПР. Формула немного видоизменилась, и если теперь мы протянем ее до низа таблицы, функция проставит нам все значения. Теперь все правильно.

    Как еще можно удалить лишние пробелы в Excel?

    Избавиться от лишних пробелов можно и без использования функции СЖПРОБЕЛЫ. Воспользуемся старым проверенным способом, который нам знаком еще из WORD – команда НАЙТИ-ЗАМЕНИТЬ.

    Пример останется тот же самый. Выделяем столбец, в котором прописаны наименования игрушек и нажимаем CTRL+H. В появившемся окне напротив НАЙТИ проставляем пробел, а напротив ЗАМЕНИТЬ НА не пишем ничего.

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

    0 / 0 / 0

    Регистрация: 18.07.2018

    Сообщений: 29

    1

    Поиск второго пробела в строке, функции =ПОИСК или =НАЙТИ

    07.08.2018, 16:07. Показов 17790. Ответов 8


    Студворк — интернет-сервис помощи студентам

    Всем доброго времени суток. Есть строка

    ул. Северная д15

    и в ней необходимо определить позицию второго пробела, того, который после названия улицы. Функции =ПОИСК и =НАЙТИ почему-то находят только позицию первого пробела. Пробовал дописывать “+1” к начальной позиции поиска, всё равно не помогает.
    Заранее благодарю за помощь!



    0



    92 / 69 / 16

    Регистрация: 22.01.2010

    Сообщений: 311

    07.08.2018, 16:26

    2

    Цитата
    Сообщение от Testingtest
    Посмотреть сообщение

    … необходимо определить позицию второго пробела

    Цель какая – что? для чего? почему? А если (по правилам) пробелу будет предшествовать запятая?!.



    0



    772 / 615 / 294

    Регистрация: 05.01.2014

    Сообщений: 1,338

    07.08.2018, 16:31

    3

    Может так?

    Код

    =ПОИСК(" ";A1;ПОИСК(" ";A1)+1)



    0



    0 / 0 / 0

    Регистрация: 18.07.2018

    Сообщений: 29

    07.08.2018, 16:33

     [ТС]

    4

    AleksSid, да так, но я забыл добавить, что эта строка ул. Северная д.15 находится внутри другого текста. То есть на самом деле это не первый и не второй пробелы. Вот с этим не знаю как поступить.



    0



    772 / 615 / 294

    Регистрация: 05.01.2014

    Сообщений: 1,338

    07.08.2018, 16:44

    5

    Выложите пример строк 10-15 текста, что есть и что должно получиться.



    0



    0 / 0 / 0

    Регистрация: 18.07.2018

    Сообщений: 29

    07.08.2018, 16:45

     [ТС]

    6

    AleksSid, “Москва, НЗ – 556, ЛР – 0,4 кВ, Секция трансформатора №15, Отходящие линии ВЛ, Р.?, ул. Северная д.15, Учет на опоре правый”

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



    0



    772 / 615 / 294

    Регистрация: 05.01.2014

    Сообщений: 1,338

    07.08.2018, 17:21

    7

    Цитата
    Сообщение от Testingtest
    Посмотреть сообщение

    Вот такая строка.

    А при чем здесь второй пробел? Вообще не понятно что это вам дает? Можно еще так.

    Но не зная что вы хотите, трудно предугадать, потом появятся еще вопросы. Опишите что хотите и приложите файл-пример.



    0



    0 / 0 / 0

    Регистрация: 18.07.2018

    Сообщений: 29

    07.08.2018, 17:30

     [ТС]

    8

    AleksSid, вам вообще какая разница что это мне даёт? В общем понятно, если не можете помочь, то и не отвечайте больше.



    0



    92 / 69 / 16

    Регистрация: 22.01.2010

    Сообщений: 311

    07.08.2018, 17:38

    9

    Цитата
    Сообщение от Testingtest
    Посмотреть сообщение

    В общем понятно

    Не по теме:

    OFF Остыньте немного, спокойно подумайте и потрудитесь толково объяснить и на примере (файле) покажите – что, из чего, куда, как желательно вам получить. Когда известна цель, то и проще найти ЦЕЛЕСООБРАЗНЫЕ пути решения вопроса. Согласны?



    0



    Извлечение слов из текста в Excel

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

    Важное замечание!

    Перед применением описанных ниже функций убедитесь, что текст не содержит лишних пробелов (то есть пробелов в начале строки, в конце строки, двойных, тройных и т.д.). Убрать лишние пробелы можно формулой =СЖПРОБЕЛЫ(А1), где А1 – ячейка с текстом. Полученный результат можно скопировать и вставить значениями в исходную ячейку и в дальнейшем работать с “чистым” текстом.

    Задача 1. Подсчет количества слов в тексте

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

    Итак, слова в тексте отделены друг от друга пробелами. Пробелов всегда на 1 меньше, чем слов (действительно, между двумя словами – один пробел, между тремя – два и т.д.). Значит, достаточно подсчитать пробелы и прибавить к ним единицу, чтобы узнать число слов в ячейке.

    В Excel есть замечательные функции ДЛСТР() и ПОДСТАВИТЬ(). Первая подсчитывает количество символов в указанной ячейке, а вторая умеет заменять указанный символ на любой другой или на пусто (обозначается как двойные кавычки без пробела между ними “”).

    Функция ПОДСТАВИТЬ() имеет 4 аргумента:

    1) Ячейка с текстом

    2) То, что нужно заменить (указывается в кавычках)

    3) То, на что нужно заменить (указывается в кавычка)

    4) Необязательный аргумент – номер вхождения заменяемого текста. То есть, если в тексте 4 пробела, мы можем заменить только тот, номер которого укажем. Если аргумент опущен – заменяются все символы.

    Первой функцией мы можем узнать длину текста в ячейке. Второй функцией мы можем заменить все пробелы в тексте на “” (пусто), то есть удалить. Если после удаления мы подсчитаем длину текста еще раз, то она сократится ровно на число удаленных пробелов. Таким образом, чтобы подсчитать пробелы, нужна формула:

    =ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))

    Прибавим к ней единицу – и получим число слов в ячейке.

    =ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))+1

    Подсчет слов в ячейке
    Подсчет слов в ячейке

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

    Задача 2. Извлечение первого слова из текста

    Раз слова отделены пробелами, то первое слово от второго отделено первым в тексте пробелом. Значит для извлечения первого слова, нам нужно найти первый пробел и извлечь из текста всё, что идет до него.

    Найти символ в тексте поможет функция НАЙТИ(). У нее есть 3 аргумента:

    1) Искомый текст;

    2) Текст, в котором ищем;

    3) С какого символа начать поиск (необязательный, если опущен – функция ищет с самого начала).

    Результатом работы функции является позиция первого символа найденного текста в строке. Например, формула =НАЙТИ(“плюс”;”Один плюс один”) вернет в результате число 6 (именно с этой позиции начинается искомое слово “плюс”). Если в строке несколько раз содержится искомое слово, то вернется результат для первого вхождения.

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

    Теперь мы можем найти позицию первого пробела

    =НАЙТИ(” “;A1)

    Извлечь символы до пробела поможет функция ЛЕВСИМВ. Ей нужно указать текст, а также число символов, которое нужно извлечь начиная с первого. Если найденный пробел, например, 6-ой символ, то нам нужно извлечь 6-1=5.

    Формула для извлечения первого слова:

    =ЛЕВСИМВ(A1;НАЙТИ(” “;A1)-1)

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

    =ЕСЛИОШИБКА(ЛЕВСИМВ(A1;НАЙТИ(” “;A1)-1);A1)

    Теперь формула корректно сработает для любого числа слов в ячейке.

    Извлечение первого слова
    Извлечение первого слова

    Задача 3. Извлечение последнего слова из текста

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

    • подсчитаем, сколько в ячейке пробелов, воспользовавшись приемом из Задачи 1.

    =ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))

    • с помощью функции ПОДСТАВИТЬ заменим последний пробел в тексте на символ, которого там точно нет (например, “*” или “$”). Чтобы заменить именно последний пробел, добавим в качестве необязательного аргумента формулу из предыдущего пункта (то есть число пробелов, так как оно равно номеру последнего пробела)

    =ПОДСТАВИТЬ(A1;” “;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””)))

    • теперь, когда последний пробел заменен на “*”, мы можем узнать его позицию с помощью функции НАЙТИ(). В качестве текста, в котором ищем, укажем предыдущую формулу

    =НАЙТИ(“*”;ПОДСТАВИТЬ(A1;” “;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))))

    • если из общей длины текста мы вычтем найденную позицию звездочки, то получим число символов после звездочки (то есть длину последнего слова в ячейке)

    =ДЛСТР(A1)-НАЙТИ(“*”;ПОДСТАВИТЬ(A1;” “;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””))))

    • теперь, зная длину последнего слова, мы можем вытащить его из ячейки с помощью функции ПРАВСИМВ(). Она работает точно так же, как ЛЕВСИМВ(), но извлекает символы не с начала, а с конца строки. В качестве количества извлекаемых символов, укажем предыдущую формулу.

    Итоговая формула:

    =ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(“*”;ПОДСТАВИТЬ(A1;” “;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””)))))

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

    =ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(“*”;ПОДСТАВИТЬ(A1;” “;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;” “;””)))));A1)

    Извлечение последнего слова
    Извлечение последнего слова

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

    Function РЕВЕРС(str As String)

    РЕВЕРС = StrReverse(str)

    End Function

    Это макрофункция. Теперь, используя ее, можно отразить текст зеркально, извлечь первое слово, как в Задаче 2 и отразить его обратно. Формула:

    =ЕСЛИОШИБКА(РЕВЕРС(ЛЕВСИМВ(РЕВЕРС(A1);НАЙТИ(” “;РЕВЕРС(A1))));A1)

    Берите на вооружение, если любите макросы.

    Задача 4. Извлечение n-ного слова из текста

    Самый интересный пример. Для решения подобной задачи нужно применить фантазию. Разберем решение поэтапно.

    Помимо уже использовавшихся в статье функций, нам понадобятся еще 2:

    1) ПОВТОР(). Умеет повторять указанный текст указанное число раз.

    2) ПСТР(). Имеет 3 аргумента:

    • исходный текст;
    • позиция, с которой нужно начать извлечение;
    • число символов, которые нужно извлечь.

    Теперь мы вооружены всем нужным инструментарием. Приступаем:

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

    =ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;ДЛСТР(A1)))

    • Теперь каждое слово отделено друг от друга числом символов, равным общей длине строки. Чтобы извлечь слово под номером n, нам нужно узнать позицию какого-нибудь пробела между словом n и n-1 в обработанном удлиненном тексте. Это может сделать формула ниже (+1 в ней нужно для правильного поиска первого слова):

    =ДЛСТР(A1)*(n-1)+1

    Чтобы лучше понять, какую позицию относительно начала строки Вы найдете благодаря этой формуле, взгляните на рисунок ниже (делайте поправку на масштаб).

    Извлечение слов из текста в Excel
    • Теперь мы может извлечь из найденной позиции число символов ДЛСТР(A1) (на рисунке – m) и извлеченный текст всегда будет захватывать нужное нам слово целиком (с некоторым количеством предшествующих и последующих пробелов)

    =ПСТР(ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1))

    • Осталось избавиться от лишних пробелов функцией СЖПРОБЕЛЫ()

    =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;” “;ПОВТОР(” “;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1)))

    Извлечение n-ного слова из ячейки
    Извлечение n-ного слова из ячейки

    Не забудьте в формуле заменить n на номер извлекаемого слова или ссылку на ячейку с этим номером.

    Задача 5. Извлечение имя файла из полного пути к нему

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

    Как мы знаем, директории в ссылках отделены друг от друга символом “”. После последнего такого символа расположено нужное нам имя файла. Похоже на задачу с извлечением последнего слова? Только вместо пробелов теперь символ обратной косой черты.

    Берем формулу из задачи 3 и заменяем в ней пробелы на “”.

    Получим следующую формулу:

    =ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(“*”;ПОДСТАВИТЬ(A1;””;”*”;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;””;””)))));A1)

    Вставляем в ячейку и вуаля! Имя файла извлечено.

    Извлечение имени файла
    Извлечение имени файла

    Полученной информации Вам будет вполне достаточно, чтобы извлечь из ячейки, например, имя файла без расширения. Попробуйте составить такую формулу самостоятельно и сравните ее с формулой, предоставленной в файле-примере. Его можно скачать здесь. Там Вы найдете все формулы, предложенные в статье.

    Поддержать наш проект и его дальнейшее развитие можно вот здесь.

    Ваши вопросы по статье можете задавать через нашего бота обратной связи в Telegram: @ExEvFeedbackBot

    С уважением, команда tDots.ru

    Добавить комментарий