Страницы: 1
RSS
Обрезать текст в ячейке до целого слова
 
Имеется задача:
Есть список слов через запятую. Надо ограничить его 100 символами, заканчивая целым словом, не разрезая.
У меня почти получилось, но не могу избавиться от запятой в конце слова. Глаз замылился уже, не могу сообразить как убрать.
Пример во вложении - поможете?
 
банально проверить последний символ Если запятая - вывести все кроме последнего (используя ЛЕВСИМВ+ДЛСТР)... в придачу к вашей идее... но будет длинно  :sceptic:
P.S.
может идеи здесь найдутся: 38 символов
Изменено: JeyCi - 25.03.2016 17:15:08
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
=ЕСЛИ(ПРОСМОТР(2;1/(ПСТР(D2;СТРОКА(1:100);1)=",");СТРОКА(1:100))=100;ПСТР(D2;1;99);ПСТР(D2;1;ПРОСМОТР(2;1/(ПСТР(D2;СТРОКА(1:100);1)=",");СТРОКА(1:100))-1))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
замените все 100 в формуле на 102 и -2 перед последней скобкой.
так как в вашем варианте если 100 левых символов образают как раз по конец слова - последнее слово отбрасывается (см пример)
Изменено: Dima S - 25.03.2016 17:41:47
 
Александр Иванов, может UDF без промежуточных ячеек?
Код
Function Ivanov(r As Range, Optional L = 100) As String
  If r.Rows.Count > r.Columns.Count Then
    Ivanov = Join(WorksheetFunction.Transpose(r.Columns(1).Value), ", ")
  Else
    Ivanov = Join(WorksheetFunction.Index(r.Rows(1).Value, 1, 0), ", ")
  End If
  If Len(Ivanov) > L Then Ivanov = Left$(Ivanov, InStrRev(Ivanov, ",", L) - 1)
End Function
Использовать как =Ivanov(A1:A15) или например =Ivanov(A18:C18;70) , можно указать другое ограничение длины строки.
Изменено: Казанский - 25.03.2016 17:38:07
 
Огромное спасибо, друзья! Сходу помогло -2 перед последней скобкой.
Вариант Dima S тоже хорош. Остальные сейчас рассмотрю!
Еще раз благодарю за помощь!
 
=СЖПРОБЕЛЫ(ЕСЛИ(ДЛСТР(D2)>100;ЛЕВБ(D2;ПОИСК("ї";ПОДСТАВИТЬ(D2;",";"ї";101-ДЛСТР(ПОДСТАВИТЬ(ЛЕВБ(D2;101);" ";))))-1);D2))
 
Тупо
=ЗАМЕНИТЬ(ПСТР(ПСТР($D$2;1;100);1;ПОИСК("/";ПОДСТАВИТЬ(ПСТР($D$2;1;100);" ";"/";ДЛСТР(ПСТР($D$2;1;100))-ДЛСТР(ПОДСТАВИТЬ(ПСТР($D$2;1;100);" ";"")))));ДЛСТР(ПСТР(ПСТР($D$2;1;100);1;ПОИСК("/";ПОДСТАВИТЬ(ПСТР($D$2;1;100);" ";"/";ДЛСТР(ПСТР($D$2;1;100))-ДЛСТР(ПОДСТАВИТЬ(ПСТР($D$2;1;100);" ";""))))))-1;1;"")

Если часть формулы поименовать, то так

ЗПТ: =ПСТР(ПСТР(Лист1!$D$2;1;100);1;ПОИСК("/";ПОДСТАВИТЬ(ПСТР(Лист1!$D$2;1;100);" ";"/";ДЛСТР(ПСТР(Лист1!$D$2;1;100))-ДЛСТР(ПОДСТАВИТЬ(ПСТР(Лист1!$D$2;1;100);" ";"")))))

=ЗАМЕНИТЬ(ЗПТ;ДЛСТР(ЗПТ)-1;1;"")
Согласие есть продукт при полном непротивлении сторон
 
Как-то так
Код
Function trimtext(text As String, length As Integer) As String
    Dim obj As Object
    With CreateObject("VBScript.regexp")
        .Pattern = "(.{1," & length - 1 & "}[^ |\.|,|!|\?|$])(?: |\.|,|!|\?|$)"
        Set obj = .Execute(text)
        If obj.Count > 0 Then trimtext = obj(0).submatches(0)
    End With
End Function

 
Помогите пожалуйста! Задача подобная, но никак не могу применить ваши методы, описанные выше.
Задача заключается в следующем:
Надо обрезать текст в столбце во всех ячейках.
- Ограничение по количеству символов = 33; Остальное удалить;
- Последнее слово должно оставаться целым;

hard level (если получится) ... удалено

К примеру:  Хрустальные люстры интернет магазин распродажа!  (47 символов), после обработки получаем: Хрустальные люстры интернет! (28 символов).
 
Миллионы гребете на контекстной рекламе? :)
Формула в сообщении №7.
Заменить 100 на 33, 101 на 34, искомую запятую на пробел

Доп. вопросы удалил (см. правила форума)
 
если бы миллионы.... пытаюсь познавать азы контекста.. Столкнулся вот с такой проблемой. Если не трудно, дайте ссылку где про это уже говорили.
 
Формула в сообщении №7.
Заменить 100 на 33, 101 на 34, искомую запятую на пробел
 
Возможно ли (с помощью сообщения №7) делить текст (так же на фиксированное количество символов + так же обрезая последние символы до пробела) на несколько ячеек так, что бы  во вторую ячейку заходил оставшийся от обрезки текст (сохраняя первое условие), ну и далее на последующие ячейки?
Изменено: serj-ua - 10.10.2019 07:57:29
 
serj-ua, сделайте файл-пример с ячейками "до" и "после"
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Уже не нужно)

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=121542&TITLE_SEO=121542-razbivka-teksta-s-tselymi-slovami-na-neskolko-yacheek&MID=1005802&buf_fid=8&result=edit#message1005802

Страницы: 1
Наверх