Страницы: 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.09.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.09.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.09.2018 10:29:25
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх