Excel удалить текст с конца

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

Удаление текста справа или слеваФункции, которая отрезает лишнее количество символов в ячейке, найти не удается, но существует система из двух функций, которые можно применить. Это система из функции ЛЕВСИМВ (или ПРАВСИМВ) и функции ДЛСТР (длина строки).

Рассмотрим их применение.

    Вначале находим количество символов в тексте при помощи функции ДЛСТР. Для этого запускаем менеджер функций, выбираем ДЛСТР, указываем ячейку с текстом. Функция ДЛСТР посчитает количество символов.

    Зная длину лишнего текста — 6 знаков в индексе, вычитаем их из общего числа символов посчитанных функцией ДЛСТР и получаем то количество символов, которое должно остаться в тексте, когда удалим индекс.

    Полученное значение – количество оставляемых в тексте знаков, вписываем в функцию ЛЕВСИМВ или ПРАВСИМВ. Если нужно удалить знаки справа, то используем ЛЕВСИМВ, если слева, то ПРАВСИМВ. Нажимаем «Enter». Функция ЛЕВСИМВ или ПРАВСИМВ присваивает ячейке нужное нам количество символов из текста в новую ячейку, исключая ненужный нам индекс.

    Для уменьшения количества ячеек с расчетами эти функции можно записать в систему следующего вида:

    ПРАВСИМВ(…*¹;(ДЛСТР(…*¹)-6)).

    Где …*¹- адрес ячейки, из которой берем текст.

    • Формулы удаления N символов в начале и конце строк
    • Удалить символы в начале ячейки (слева): функция надстройки !SEMTools
    • Удалить символы в конце ячейки (справа): функция надстройки !SEMTools
    • Удалить слова и символы по другим условиям

    Как удалить первый/последний символ или несколько первых/последних символов в ячейке Excel? Узнайте ответ из этой статьи.

    Примечание автора: речь пойдет о ситуациях, когда количество символов определено конкретным числом — один, два, три и т.д. Тому, как удалить текст до определенного символа, посвящена отдельная статья.

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

    Чтобы удалить из ячейки N символов слева, можно взять справа количество символов, равное разнице длины строки в символах (ДЛСТР) и N:

    =ПРАВСИМВ(A1;ДЛСТР(A1)-N)
    

    А чтобы удалить из ячейки N символов справа, наоборот, извлекаем слева длину строки минус N:

    Удалить символы в начале ячейки (слева): функция надстройки !SEMTools

    Формулы выше требуют создания дополнительного столбца. Чтобы сэкономить время, если исходные данные не нужны, я разработал функции !SEMTools, удаляющие символы прямо на месте.

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

    отрезать символы слева

    «Отрезаем» несколько символов слева в ячейках столбца

    Удалить символы в конце ячейки (справа): функция надстройки !SEMTools

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

    Выделите диапазон, затем на панели !SEMTools в меню «Удалить» выберите «Символы -> обрезать -> с конца ячейки». В появившемся диалоговом окошке вбейте количество символов, которое хотите удалить, и нажмите «ОК».

    отрезать символы справа

    «Отрезаем» символы справа в ячейках столбца

    Удалить слова и символы по другим условиям

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

    Вас наверняка могут заинтересовать похожие операции, смотрите подробнее:

    • Взять первые N символов ячейки в Excel;
    • Удалить лишние пробелы в Excel;
    • Удалить латиницу;
    • Удалить все символы, кроме цифр в Excel;
    • Удалить все символы, кроме букв и цифр;
    • Удалить первое слово или первые N слов в ячейках;
    • Регулярные выражения в Excel.

    Хотите так же быстро удалять символы в Excel без использования формул?
    В надстройке !SemTools есть этот и ещё более 500 похожих полезных инструментов по обработке текста. Сделайте апгрейд вашего Excel!

     

    Atman

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

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

    Доброго времени суток!
    Нашел тему, где описывается как удалять первое слово или оставлять первое слово:

    http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=19977

    Но я из неё не понял, как удалять только последнее слово в фразе.
    Помогите, пожалуйста, с формулой.
    Также интересует, как удалять 2, 3…n — количества последних слов в ячейке.
    Благодарю заранее за помощь!

     

    Юрий М

    Модератор

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

    Контакты см. в профиле

    А

    так

    не пробовали спросить?

     

    Atman

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

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

    Да искал, спасибо!
    Просто здесь есть как удалять 2 последних слова, но нет как одно удалять…

     

    sv2013

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

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

    #4

    22.02.2016 15:00:31

    добрый день, попробуйте функцию yyy в C1

    Код
    Function yyy$(t$)
        Dim x: x = Split(t): x(UBound(x)) = ""
         yyy = Join(x)
    End Function

    Прикрепленные файлы

    • example_22_02_2016_last_word.xlsx (7.54 КБ)

    Изменено: sv201322.02.2016 15:00:49

     

    Atman

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

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

    Нашел формулу :)
    =ЛЕВСИМВ(A2;ПОИСК(«/»;ПОДСТАВИТЬ(A2;» «;»/»;ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;» «;))))-1)

     

    sv2013

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

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

    #6

    22.02.2016 15:18:50

    Atman,для удаления k последних слов функция yyy1 в файл примере

    Код
    Function yyy1$(t$, k As Byte)
      Dim x, i&: x = Split(t)
     For i = UBound(x) To UBound(x) - k + 1 Step -1: x(i) = "": Next
      yyy1 = Join(x)
    End Function

    Прикрепленные файлы

    • example_22_02_2016_last_word1.xls (32.5 КБ)

    Изменено: sv201322.02.2016 15:19:07

     

    Sanja

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

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

    Удалить последнее слово
    =ЛЕВСИМВ(СЖПРОБЕЛЫ(A2);ПОИСК(«`»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A2);» «;»`»;ДЛСТР(СЖПРОБЕЛЫ(A2))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A2);» «;»»))))-1)
    В файле варианты для удаления N последних

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

     

    Апострофф

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

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

    #8

    22.02.2016 15:36:43

    Цитата
    sv2013 написал:
    yyy1 = Join(x)

    Может так лучше —

    Код
    yyy1 = TRIM$(Join(x)) 'зачем лишних n пробелов в конце?
    
     

    Sanja

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

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

    #9

    22.02.2016 15:39:20

    Цитата
    Atman написал: Нашел формулу

    СЖПРОБЕЛЫ() в формуле не помешают. Вдруг между словами окажется больше одного пробела? Тогда результат будет не верный

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

     

    vikttur

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

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

    =ЛЕВСИМВ(A2;ПОИСК(«|»;ПОДСТАВИТЬ(A2;» «;»|»;$B$1)))
    =СЖПРОБЕЛЫ(ЛЕВСИМВ(ПОДСТАВИТЬ(» «&A2;» «;ПОВТОР(» «;50));50*$B$1+50))

    В В1 — количество слов с начала текста (сколько оставить).
    Вторая формула не выдаст ошибку, если в В1 число больше, чем количество пробелов в слове, или В1=0

    =ЛЕВСИМВ(A2;ПОИСК(«|»;ПОДСТАВИТЬ(A2&» «;» «;»|»;МАКС(1;1-$B$1+ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;» «;))))))
    В В1 — количество слов с конца текста (сколько удалить)

     

    Atman

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

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

    #11

    22.02.2016 16:21:41

    Огромное всем спасибо!

    На чтение 5 мин Просмотров 11к. Опубликовано 16.05.2022

    Люди, которые только начинают работать в Excel часто встречаются с таким вопросом.

    Допустим, у нас есть такая табличка:

    Примерно так выглядит удаление всех символов после «,».

    Это можно сделать разными способами. Мы рассмотрим несколько.

    Итак, начнём!

    Содержание

    1. С помощью функции «Найти и заменить»
    2. С помощью формул
    3. С помощью функции «Заполнить»
    4. С помощью Visual Basic

    С помощью функции «Найти и заменить»

    Это, наверное, самый быстрый и удобный способ.

    Допустим, у нас та же табличка и задача:

    Пошаговая инструкция:

    • Копируем и вставляем столбик А в В;

    • Выделите столбик и щелкните «Главная»;

    • Далее — «Найти и выделить» -> «Заменить…»;

    • В первом параметре укажите «,*»;

    • Второй параметр не меняйте;

    • Щелкните «Заменить все».

    Готово! Вот результат:

    Как это работает?

    Символ * означает неопределенное количество символов.

    Так как мы используем «,*», то это значит, что программе нужно заменить запятую и все символы после неё на пустое место.

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

    С помощью формул

    Также, мы можем выполнить нашу задачу и с помощью формул.

    Допустим, у нас есть такая табличка:

    Формула принимает такой вид:

    =ЛЕВСИМВ(A2;НАЙТИ(",";A2)-1)

    Функция НАЙТИ возвращает порядковый номер запятой.

    Это простой пример, давайте рассмотрим кое-что посложнее.

    Теперь у нас такая табличка:

    Формула, для этого примера, принимает такой вид:

    =ЛЕВСИМВ(A2;НАЙТИ("!";ПОДСТАВИТЬ(A2;",";"!";2))-1)

    Итак, также как в прошлый раз — не получится. Так как НАЙТИ будет возвращать порядковый номер первой запятой, а нам надо найти его для второй.

    Мы используем небольшую хитрость, а если конкретнее, то заменяем вторую запятую на восклицательный знак, а затем с ним уже проводим операции.

    И все бы хорошо, только в этом примере в каждой строке у нас ровно 2 запятые. А что делать если их неопределенное количество? Ведь в больших данных вы не будете выверять сколько запятой в каждой строке.

    Вот пример:

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

    Для этого примера, формула принимает такой вид:

    =ЛЕВСИМВ(A2;НАЙТИ("!";ПОДСТАВИТЬ(A2;",";"!";ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;",";","))))-1)

    Итак, функция ДЛСТР сначала находит количество символов в строчке с запятыми, а потом без них.

    А после вычитает из первого — второе. Таким образом мы получаем количество запятых в строчке.

    А затем мы заменяем последнюю на восклицательный знак.

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

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

    С помощью функции «Заполнить»

    Функция «Заполнить», это довольно давний инструмент. Он может помочь нам и в этом случае.

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

    Очень просто — вы просто делаете что угодно и после используете функцию. Она пытается понять логику ваших действий и продолжить её.

    Давайте рассмотрим пример.

    Допустим, у нас есть та же табличка:

    Пошаговая инструкция:

    • В первую ячейку столбика В введите то, что должно получиться после обработки;

    • В следующую ячейку, то же самое;

    • А теперь выделите столбик;

    • И щелкните на «Главная» -> «Заполнить» -> «Мгновенное заполнение»;

    Готово! Вот результат:

    Эту функцию, естественно, можно использовать не только для удаления текста после символа. Она работает там, где есть логика.

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

    С помощью Visual Basic

    И, как обычно, разберем вариант с помощью Visual Basic.

    Мы создадим свою собственную функцию и будем использовать её для обработки данных.

    Это крайне удобно, если вы делаете что-либо очень часто. Например, как в нашем случае, удаляете данные после символа.

    Код Visual Basic:

    Function LastPosition(rCell As Range, rChar As String) 
    'This function gives the last position of the specified character 
    'This code has been developed by Sumit Bansal (https://trumpexcel.com) 
    Dim rLen As Integer 
    rLen = Len(rCell)   
    
    For i = rLen To 1 Step -1   
    If Mid(rCell, i - 1, 1) = rChar Then 
    LastPosition = i - 1 
    Exit Function 
    End If   
    
    Next i   E
    
    nd Function

    Код, чтобы он работал, нужно вставить в Visual Basic -> «Insert» -> «Module».

    Давайте рассмотрим пример её использования.

    Допустим, у нас есть такая табличка. Формула принимает такой вид:

    =ЛЕВСИМВ(A2;LastPosition(A2;",")-1)

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

    С помощью Visual Basic все проще.

    Вот и все! Если вам нужно сделать что-то подобное 1-2 раза, то лучше всего использовать функцию «Найти и заменить…», а если вы делаете это постоянно, то используйте Visual Basic.

    Надеюсь, эта статья оказалась полезна для вас!

    убрать текст по кол. пробелов с конца строки

    shirna

    Дата: Вторник, 08.10.2013, 18:08 |
    Сообщение № 1

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    Уважаемые знатоки, прошу помочь решением.

    Есть текстовая и числовая информация в строке. Например: Мама 2 (мыла) раму 40

    Можно ли формулой убрать «раму 40» указав границу удаления как второй пробел с конца строки, чтобы осталось: Мама 2 (мыла) ? И наоборот, убрать все чтобы осталось только «раму 40» но опять же указав границу удаления по какой либо пробел в строке именно с конца?

    Надеюсь не запутал ).

    Благодарю, если кто откликнется…


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    Serge_007

    Дата: Вторник, 08.10.2013, 18:15 |
    Сообщение № 2

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

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

    Сообщений: 15888


    Репутация:

    2623

    ±

    Замечаний:
    ±


    Excel 2016

    Можно
    Примеров на форуме сотни


    ЮMoney:41001419691823 | WMR:126292472390

     

    Ответить

    shirna

    Дата: Вторник, 08.10.2013, 18:23 |
    Сообщение № 3

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    Спасибо, ёмко!

    Зато теперь точно знаю, что можно!!! ))

    Не примите за лентяя, честно «отсидел» на форуме больше часа ) Научился удалять по количеству символов — тоже полезно, но не то.


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    Pelena

    Дата: Вторник, 08.10.2013, 18:31 |
    Сообщение № 4

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

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

    Сообщений: 18797


    Репутация:

    4284

    ±

    Замечаний:
    ±


    Excel 2016 & Mac Excel


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

     

    Ответить

    Serge_007

    Дата: Вторник, 08.10.2013, 18:34 |
    Сообщение № 5

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

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

    Сообщений: 15888


    Репутация:

    2623

    ±

    Замечаний:
    ±


    Excel 2016

    См. вложение

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

    shirna.xls
    (25.0 Kb)


    ЮMoney:41001419691823 | WMR:126292472390

     

    Ответить

    shirna

    Дата: Вторник, 08.10.2013, 18:37 |
    Сообщение № 6

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    Да, точно.

    Если кому надо, то вот:

    Код

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

    это 2 пробела с конца строки убирает )


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    shirna

    Дата: Вторник, 08.10.2013, 18:52 |
    Сообщение № 7

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    Serge_007 Отдельное спасибо за файл! Это точно то, что нужно! Буду хранить на флешке в сейфе )

    А можно Ваш файл выложить в мой вопрос на planetaexcel.ru ?(без разрешения не буду)

    Еще раз СПАСИБО!


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    Serge_007

    Дата: Вторник, 08.10.2013, 18:55 |
    Сообщение № 8

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

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

    Сообщений: 15888


    Репутация:

    2623

    ±

    Замечаний:
    ±


    Excel 2016

    можно Ваш файл выложить в мой вопрос на planetaexcel.ru ?

    Конечно можно :)
    Планета — это наш дружественный сайт
    3Ы Автора только укажите ;)


    ЮMoney:41001419691823 | WMR:126292472390

     

    Ответить

    shirna

    Дата: Вторник, 08.10.2013, 19:09 |
    Сообщение № 9

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    Serge_007 Исправился yes


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    vikttur

    Дата: Вторник, 08.10.2013, 21:49 |
    Сообщение № 10

    Группа: Друзья

    Ранг: Участник клуба

    Сообщений: 2941

    Держите «сороковую раму»:

    Код

    =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;99));99*2+50;999))

     

    Ответить

    AlexM

    Дата: Среда, 09.10.2013, 08:44 |
    Сообщение № 11

    Группа: Друзья

    Ранг: Участник клуба

    Сообщений: 4257


    Репутация:

    1046

    ±

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


    Excel 2003

    Виктор, в задании отмечено

    указав границу удаления по какой либо пробел в строке именно с конца

    Поэтому формула должна быть чуть другой

    Код

    =СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;99));99*2))

    Двоечка в конце формулы указывает номер проделя с конца строки, по которому делится текст.



    Номер мобильного модема (без голосовой связи)
    9269171249 МегаФон, Московский регион.

     

    Ответить

    shirna

    Дата: Среда, 09.10.2013, 09:13 |
    Сообщение № 12

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    И еще раз спасибо! Все формулы себе в отдельный файл записываю respect


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    shirna

    Дата: Среда, 09.10.2013, 09:22 |
    Сообщение № 13

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    для AlexM

    Код

    =TRIM(RIGHTB(SUBSTITUTE(A1,» «,REPT(» «,99)),99*2))

    Почему то не работает, может делаю что не так… %)

    данные вставляю в ячейку А1


    Спасибо, что потратили время на ответ новичку )

    Сообщение отредактировал shirnaСреда, 09.10.2013, 09:23

     

    Ответить

    китин

    Дата: Среда, 09.10.2013, 09:28 |
    Сообщение № 14

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

    Ранг: Экселист

    Сообщений: 6973


    Репутация:

    1063

    ±

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


    Excel 2007;2010;2016

    shirna, а вы перевести формулу попробуйте(кнопочка там есть с флажком.нажмите ее)


    Не судите очень строго:я пытаюсь научиться
    ЯД 41001877306852

    Сообщение отредактировал китинСреда, 09.10.2013, 09:28

     

    Ответить

    shirna

    Дата: Среда, 09.10.2013, 09:42 |
    Сообщение № 15

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

    Ранг: Прохожий

    Сообщений: 8


    Репутация:

    0

    ±

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


    Excel 2013

    для КИТИН

    Вот теперь я знаю, что это кнопка )) Все получилось.

    Спасибо!


    Спасибо, что потратили время на ответ новичку )

     

    Ответить

    Понравилась статья? Поделить с друзьями:
  • Excel удалить текст после запятой
  • Excel удалить текст начиная с текста
  • Excel удалить текст до первой цифры
  • Excel удалить текст в ячейке после пробела
  • Excel удалить текст в ячейках после символа