0 / 0 / 0
Регистрация: 03.03.2009
Сообщений: 10
|
|
1 | |
Как разбить строку символов используя один разделитель.30.03.2009, 18:21. Показов 11692. Ответов 8
Метки нет (Все метки)
Как разбить строку символов используя один разделитель.
Например: Dim strTest As string Dim strTest_1 As string Dim strTest_2 As string Dim strTest_3 As string strTest='1;2;3;4;5' Вопрос в том как используя разделитель ';' разложить строку strTest на элементы и присвоить их переменным: strTest_1 strTest_2 strTest_3 Хочется добиться вот такого результата: strTest_1='1' strTest_2='2' strTest_3='345'
0
|
30.03.2009, 18:21 | |
Ответы с готовыми решениями:
8
Как разбить строку символов используя один разделитель Разбить строку используя указанный разделитель Разбить строку на слова, используя разделитель - заглавную букву Произвольную строку разбить на группы по 5 следующих один за другим символов в каждой |
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
30.03.2009, 19:02 | 2 |
Не знаю, есть ли в VBA функция Split, если есть, то используй ее, потом работай с масивом. Если нет, попробуй достать ее через COM из VB или VBScript - что-то вроде CreateObject('VB...'), я так в акцес регулярные выражения из VBScript вытаскивал (CreateObject('VBScript.RegExp')).
0
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
30.03.2009, 19:25 | 3 |
Лучше напиши для этого дела свою функцию, передавая ей в качестве значения разделитель и номер вытаскиваемого элемента. Я такую писал, используя Instr
0
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
30.03.2009, 20:35 | 4 |
Я написал такую:
Function ExtractFrom(Str1, Razd, Int1) 'Str1 - строка для разбиения 'Razd - разделитель 'Int1 - номер запрашиваемого элемента teMp = Str1 Schet = 1 stArt = InStr(1, teMp, Razd) Dim Ext() While stArt > 0 ReDim Preserve Ext(Schet) Ext(Schet) = Left(teMp, stArt - 1) teMp = Right(teMp, Len(teMp) - stArt) Schet = Schet + 1 stArt = InStr(1, teMp, Razd) Wend ReDim Preserve Ext(Schet) Ext(Schet) = teMp 'проверяем не больше ли номер запрашиваемого элемента всего их количества If Int1 > UBound(Ext, 1) Then ExtractFrom = '' Else ExtractFrom = Ext(Int1) End Function Использование в твоем случае: strTest='1;2;3;4;5' strTest_1=ExtractFrom(strTest, ';', 1) strTest_2=ExtractFrom(strTest, ';', 2) strTest_3=ExtractFrom(strTest, ';', 3) & ExtractFrom(strTest, ';', 4) & ExtractFrom(strTest, ';', 5)
0
|
1 / 1 / 0
Регистрация: 27.08.2008
Сообщений: 154
|
|
31.03.2009, 17:23 | 5 |
strTest='1;2;3;4;5'
strTest_1 = Split(strTest,';')(0) (after this strTest_1 = '1') strTest_2 = Split(strTest,';')(1) (after this atrTest_2 = '2') and so on Function Split in VBA exists. Why to create bycycle?
0
|
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
|
|
31.03.2009, 21:24 | 6 |
Это тебе привиделось в 6-м VB
В 5-м VB и VBA никакого сплита нету... (((((((
0
|
1 / 1 / 0
Регистрация: 27.08.2008
Сообщений: 154
|
|
01.04.2009, 17:40 | 7 |
In VBA for Excel 2000 you have 'Split'. This is for sure, I use it.
I don't know about Excel 97. What do you use exactly?
0
|
0 / 0 / 0
Регистрация: 27.02.2016
Сообщений: 11
|
|
27.05.2009, 17:31 | 8 |
Фунцкция Split практически бесполезна. Возвращает она массив, который в явном виде нельзя присвоить переменной-массиву.
'Поубывав бы!'
0
|
0 / 0 / 0
Регистрация: 06.11.2007
Сообщений: 30
|
|
28.05.2009, 14:04 | 9 |
Функция Split прекрасно работает в VBA, как написала Королана, она абсолютно права. Вот только в 97-м Excel'е этой функции нет. В 2000-м и выше есть.
0
|
28.05.2009, 14:04 | |
28.05.2009, 14:04 | |
Помогаю со студенческими работами здесь
9
Разбить строку в массив через разделитель Разбить строку на подстроки по разделителю, сохраняя этот разделитель Как разбить строку на подстроки используя Regex Разделить строку на подстроки, используя символ-разделитель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |