Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Обрезать по словам, а не по кол-ву символов, Помогите, пожалуйста.
 
Добрый день. Помогите обрезать текст из столбца "А" по количеству слов - первые 5
При этом слова имеют разное количество символов, поэтому обрезка нужна именно по количеству слов. (слово = всё, что написано между пробелами)
 
Добрый день! приложите небольшой файл с примером. "что есть" -> "как надо"
 
Код
public function iSplit(byval val$,byval iCount%) as string
   dim m,i%
   on error resume next
   m=vba.split(val$," ")
   for i%=lbound(m) to iCount%-1
      iSplit=iSplit & vba.trim(m(i%)) & " "
   next
end sub
добавить код в модуль и использовать как формулу
Код
=iSplit(A1;5)
Изменено: ivanok_v2 - 18 Сен 2018 16:43:04
 
Цитата
Archiek написал:
(слово = всё, что написано между пробелами)
то есть например в этом
Цитата
Archiek написал:
Добрый день. Помогите обрезать текст
добрый за слово не считается? :-)

=TRIM(LEFT(SUBSTITUTE(A1;" ";REPT(" ";LEN(A1));5);LEN(A1)))
 
БМВ, вы как всегда показываете мастер клас формулами ;)
 
ivanok_v2, Просто VBA скучно
Код
Function iSplit1(ByVal val$, ByVal iCount%) As String
   Dim m, i%
   On Error Resume Next
   m = VBA.Split(val$, " ")
   ReDim Preserve m(iCount - 1)
   iSplit1 = Join(m, " ")
End Function
 
Цитата
БМВ написал:
Просто VBA скучно
Эй!
 
БМВ, тоже вариант)))
 
Цитата
Юрий М написал:
Эй!
Исключительно в данном конретном случае :-)
Изменено: БМВ - 18 Сен 2018 17:56:17
 
Отмазка засчитана.
 
Сегодня какой то день обрезания, тут обрезать, там срезать. Пила уже затупилась.
 
БМВ, вся суть Ексель сводится к: резать, допиливать, скрыть  
 
Тоже решение, но с формулой БМВ не сравнится.
Код
=ЛЕВСИМВ(A1;ПОИСК(" ";A1;ПОИСК(" ";A1;ПОИСК(" ";A1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)+1)+1)+1)-1)
 
Да и не написал =TRIM(LEFT(SUBSTITUTE(A1;" ";REPT(" ";LEN(A1));5);LEN(A1))) можно упростить  до
=TRIM(LEFT(SUBSTITUTE(A1;" ";REPT(" ";99);5);99)), если длинна строки или первых 5 слов не превысит 99. первый вариант универсальней.
 
Насколько мне кажется, что все вышеприведённые примеры на VBA выдадут не совсем правильный вариант если между словами будет более одного пробела. Поэтому сначала исходный текст нужно обработать функцией листа СЖПРОБЕЛЫ()
Не стреляйте в тапера - он играет как может.
 
Ts.Soft, это не противоречит условию, слово то что между пробелами. То есть. Если там ничего, то это просто такое слово короткое. :-). Ну в принципе и в формульном варианте будет аналогично. Но тогда надо еще и про неразрывный пробел вспоминать и его менять на обычный.

=TRIM(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(A1;CHAR(160);" "));" ";REPT(" ";LEN(A1));5);LEN(A1)))
Изменено: БМВ - 19 Сен 2018 10:29:25
Страницы: 1
Читают тему (гостей: 1)
Наверх