Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обрезать строку после n символа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обрезать строку после n символа (Макросы/Sub)
Обрезать строку после n символа
NorthPole Дата: Воскресенье, 06.10.2019, 09:30 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всем привет,

Есть поле поиска на форме куда пользователь вводит строку.
Необходимо обрезать введенную строку, вернув пользователю первые 5 "символов" (разделение через пробелы).

Пока делаю это через массив, но почему-то не покидает чувство что есть способ проще.
[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ")
t = ""
For i = 0 To UBound(v)
    If i < 5 Then t = t & " " & v(i)
Next
t = Trim(t)
Debug.Print t
'A,B,C D E 04 05
[/vba]


Сообщение отредактировал NorthPole - Воскресенье, 06.10.2019, 09:31
 
Ответить
СообщениеВсем привет,

Есть поле поиска на форме куда пользователь вводит строку.
Необходимо обрезать введенную строку, вернув пользователю первые 5 "символов" (разделение через пробелы).

Пока делаю это через массив, но почему-то не покидает чувство что есть способ проще.
[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ")
t = ""
For i = 0 To UBound(v)
    If i < 5 Then t = t & " " & v(i)
Next
t = Trim(t)
Debug.Print t
'A,B,C D E 04 05
[/vba]

Автор - NorthPole
Дата добавления - 06.10.2019 в 09:30
Kuzmich Дата: Воскресенье, 06.10.2019, 11:18 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ", 6)
t = Trim(Replace(t, v(5), ""))
[/vba]
 
Ответить
Сообщение[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ", 6)
t = Trim(Replace(t, v(5), ""))
[/vba]

Автор - Kuzmich
Дата добавления - 06.10.2019 в 11:18
bmv98rus Дата: Воскресенье, 06.10.2019, 11:27 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Kuzmich, Коротко, эффективно, но очень опасно, при повторении текста в строке. Так корректнее будет
[vba]
Код
t = Left(t, Len(t) - Len(v(5)) - 1)
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеKuzmich, Коротко, эффективно, но очень опасно, при повторении текста в строке. Так корректнее будет
[vba]
Код
t = Left(t, Len(t) - Len(v(5)) - 1)
[/vba]

Автор - bmv98rus
Дата добавления - 06.10.2019 в 11:27
Kuzmich Дата: Воскресенье, 06.10.2019, 11:39 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Михаил, согласен с вашим замечанием, еще бы надо проверить: есть ли такое количество разделителей в строке?
 
Ответить
СообщениеМихаил, согласен с вашим замечанием, еще бы надо проверить: есть ли такое количество разделителей в строке?

Автор - Kuzmich
Дата добавления - 06.10.2019 в 11:39
nilem Дата: Воскресенье, 06.10.2019, 11:53 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Еще вариант (не самый лучший)
[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t)
ReDim Preserve v(4)
t = Join(v)
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеЕще вариант (не самый лучший)
[vba]
Код
t = "A,B,C D E 04 05 06 07"
v = Split(t)
ReDim Preserve v(4)
t = Join(v)
[/vba]

Автор - nilem
Дата добавления - 06.10.2019 в 11:53
RAN Дата: Воскресенье, 06.10.2019, 11:55 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Еще пара вариантов
[vba]
Код
Sub qq()
    Dim spl
    t = "A,B,C D E 04 05 06 07"
    
    v = Split(t, " ", 6)
    v(5) = ""
    tt = Trim(Join(v))
    
    spl = Split(t, " ", 6)
    ReDim Preserve spl(4)
    ttt = Trim(Join(spl))
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЕще пара вариантов
[vba]
Код
Sub qq()
    Dim spl
    t = "A,B,C D E 04 05 06 07"
    
    v = Split(t, " ", 6)
    v(5) = ""
    tt = Trim(Join(v))
    
    spl = Split(t, " ", 6)
    ReDim Preserve spl(4)
    ttt = Trim(Join(spl))
End Sub
[/vba]

Автор - RAN
Дата добавления - 06.10.2019 в 11:55
bmv98rus Дата: Воскресенье, 06.10.2019, 11:58 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
не самый лучший

и не самый рабочий :-) помнится есть проблема с возможностью ReDim Preserve v(4) без определения
[vba]
Код
Dim v
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ")
ReDim Preserve v(4)
t = Join(v)
Debug.Print t
[/vba]
Собственно RAN уже накидал, только там или лишнее для записи или расчет на большой объем ибо ограничивать SPLIT до 6 смысл очень мал.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 06.10.2019, 12:07
 
Ответить
Сообщение
не самый лучший

и не самый рабочий :-) помнится есть проблема с возможностью ReDim Preserve v(4) без определения
[vba]
Код
Dim v
t = "A,B,C D E 04 05 06 07"
v = Split(t, " ")
ReDim Preserve v(4)
t = Join(v)
Debug.Print t
[/vba]
Собственно RAN уже накидал, только там или лишнее для записи или расчет на большой объем ибо ограничивать SPLIT до 6 смысл очень мал.

Автор - bmv98rus
Дата добавления - 06.10.2019 в 11:58
RAN Дата: Воскресенье, 06.10.2019, 12:03 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Миш, какая проблема?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМиш, какая проблема?

Автор - RAN
Дата добавления - 06.10.2019 в 12:03
bmv98rus Дата: Воскресенье, 06.10.2019, 12:09 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
RAN, Андрей, я дописал. Без Dim Не пройдет. а его нет у nilem.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеRAN, Андрей, я дописал. Без Dim Не пройдет. а его нет у nilem.

Автор - bmv98rus
Дата добавления - 06.10.2019 в 12:09
nilem Дата: Воскресенье, 06.10.2019, 12:19 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
[offtop]у nilem и Sub нет )[/offtop]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение[offtop]у nilem и Sub нет )[/offtop]

Автор - nilem
Дата добавления - 06.10.2019 в 12:19
NorthPole Дата: Воскресенье, 06.10.2019, 16:03 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ок, спасибо за примеры, попробую прикручить что-нить.
 
Ответить
СообщениеОк, спасибо за примеры, попробую прикручить что-нить.

Автор - NorthPole
Дата добавления - 06.10.2019 в 16:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обрезать строку после n символа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!