Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как оставить только первые три слова в ячейке?
 
Всем привет.  Друзья и гении exel подскажите как удалить все слова после первых трех в ячейке?

Пример       - Лера любит бабушку но дедушку больше
Результат   - Лера любит бабушку

Подскажите пожалуйста я уже третий день ищу в поиске, чето сразу не допер на форум обратиться. Всем заранее огромное спасибо, за советы. Хорошего дня!
 
А текст по столбцам не подойдет?
 
Нет, есть просто большое количество ключевых слов в столбце, из них в ячейке по 4-7 слов, необходимо оставить только 3
 
Цитата
kit336015 написал:
только 3
3 Первых слова
 
=СЖПРОБЕЛЫ(ПРАВСИМВ(ПСТР(" "&ПОДСТАВИТЬ(A1;" ";ПОВТОР(" ";999));1;999*3);999*3))
999*3. 3 отвечает за количество выдергиваемых слов.

Еще вариант, покороче и, может попонятнее:
=ПСТР(A1;1;ПОИСК("%";ПОДСТАВИТЬ(A1;" ";"%";3))-1)
главное, чтобы в тексте не попадались знаки процента. Единственная тройка в формуле отвечает за количество слов. Если слов меньше 3-х - будет ошибка. Первая формула просто вернет весь текст, если даже слов там меньше трех.
Изменено: The_Prist - 21 Фев 2017 15:43:04
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ЛЕВСИМВ()+ПОИСК()+ПОДСТАВИТЬ()+ДЛСТР() = ищем третий пробел забираем все что слева от него
Лень двигатель прогресса, доказано!!!
 
Цитата
Лера любит бабушку
Задача вкорне неправильная! Это что же получается? Вырвали из контекста - и теперь бабушку любят больше. А дедушка после этого валидол глотает :)
 
Цитата
vikttur написал:
Вырвали из контекста
дык это принцЫп работы всей современной журналистики  8-0
не пинайте очень сильно,я пытаюсь научиться
 
Цитата
The_Prist написал:
=СЖПРОБЕЛЫ(ПРАВСИМВ(ПСТР(" "&ПОДСТАВИТЬ(A1;" ";ПОВТОР(" ";999));1;999*3);999*3))
Подскажите или напишите на примере, для особенных ЧАЙНИКОВ))) как это сделать, я вставляю формулу потом кляцаю по слову СЖПРОБЕЛЫ и выбираю текст, затем выделяю ячейку нажимаю энтер и ничего не получается, что я не так делаю?
 
вставляете формулу в любую пустую ячейку и меняете в формуле А1 на вашу ячейку с текстом
Изменено: V - 21 Фев 2017 16:03:26
 
The_Prist, Всем огромнейшее спасибо за советы!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Искренне счастья, любви и удачи вам в жизни! ООООООООчень помогли.
 
Еще вопрос, а есть формула которая удаляет остатки слов?

Пример -  Бабушку через дорогу переводил внук  ( я срезаю формулой ЛЕВСИМ 30 знаков(примерно))  - Остается - Бабушку через дорогу - ПЕРЕ

Вопрос - есть такая формула которая удаляет остатки незаконченных или таких полуслов?

И оставляет только - бабушку через дорогу?
 
есть конечно.
Код
=ПСТР(ЛЕВСИМВ(A1;30);1;ПРОСМОТР(999;ПОИСК(" ";ЛЕВСИМВ(A1;30);СТРОКА(1:999)))-1)
 
ВЫ ПРОСТО ГЕНИЙ! ЭТО  ОТВАЛ БАШКИ супер, скажите почему дальше получилось вот так?
 
Не могу вставить ПРИНТСКРИН в общем формула отредактировала 30 строк, затем начала выдавать такое -  
#Н/Д
#Н/Д
#Н/Д
 
V,Скажите пожалуйста почему так?
 
как вариант ячейка пустая или в тексте нет пробела. Избавится можно для 2007 и выше конструкцией =ЕСЛИОШИБКА(формула;"")
 
Может у вас есть еще Формула такого плана?
 
добрый день вариант функции uuu для#1 в ячейке C1 и функция yyy для #12,преимущество таких функций-простота
Код
Function yyyy$(t$)
   Dim i%, s%, i1%, t1$
   With CreateObject("VBScript.RegExp"): .Global = True: .IgnoreCase = True
    .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
       For i = 0 To .Execute(t).Count - 1
           s = s + Len(Trim(.Execute(t)(i)))
        If s + i > 20 Then i1 = i: Exit For
       Next
      t1 = .Execute(t)(i1): .Pattern = "^.+(?=" & t1 & ")"
      yyyy = Trim(.Execute(t)(0))
  End With
End Function
Код
Function vvv$(t$, i%)
Dim j%
   With CreateObject("VBScript.RegExp"): .Global = True: .IgnoreCase = True
    .Pattern = "(?:[^а-яё]|^)[а-яё]+(?=[^а-яё]|$)"
    For j = 0 To i - 1
            vvv = vvv + Chr(32) + .Execute(t)(j)
            vvv = Trim(vvv)
            Next
  End With
End Function

Изменено: sv2013 - 21 Фев 2017 17:28:40
 
ого, это для вас простота))) для меня это отвал башки, куда эту функцию вставлять и что делать дальше, расскажите пожалуйста детальнее, огромное спасибо за совет
 
добавлю,что функцию надо скопировать в стандартный модуль VBA(где у Вас макросы,предварительно сохранив файл,как Excel 97-2003.
Если макросов нет запишите: сервис макрос,остановить запись...Далее копируете функцию рядом с макросом.
Затем в любой ячейке набираете клавиатурно  =uuu(),а в скобках адрес ячейки(клавиатурно или мышью),далее точка с запятой и 3,- адрес ,где данные( в нашем случае A1(английская)),можно также сохранить как -мой файл- пример с другим именем на Вашем компьютере и ничего больше копировать не надо,сразу набирайте в любой ячейке=uuu() выскочит контекстное меню,выберите функцию uuu в меню,далее,как вышеуказано...
Изменено: sv2013 - 21 Фев 2017 18:20:11
Страницы: 1
Читают тему (гостей: 1)