деление переменной

Программирование на Visual Basic for Applications
Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

деление переменной

Сообщение Djars » 25.08.2005 (Чт) 15:20

как разбить текстовую переменную в формате V=" a b c " на три разных переменных "a" "b" "c"? количество пробелов в переменной V может быть различное, но всегда там три значения. a, b и с - неизвестны заранее, это какие-то значения, каждый раз разные

Заранее спасибо)

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.08.2005 (Чт) 15:24

Вопрос на миллион долларов: КАК ОПРЕДЕЛИТЬ, где у тебя кончается "a" и начинается "b"?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 25.08.2005 (Чт) 15:38

предлагаю собрать консилиум и посоветоваться с товарищами :roll:
для решения столь сложного вопроса времени потребуется где то 1 год :lol:
кто будет ответственным за написание докторской по столь важному вопросу ?

а если серьезно: split и trim те поможет
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.08.2005 (Чт) 15:39

Вот если там разное число пробелов, то сплит может не помочь. Я потому и спросил... :roll:

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 25.08.2005 (Чт) 16:03

Странно, никто не отвечает. Тогда можно я с ноги пробью?
Код: Выделить всё

Dim V As String
Dim arr() As String

V = "      a          b               c         "

V = Trim$(V)
Do While (InStr(1, V, "  "))
    V = Replace(V, "  ", " ")
Loop

arr = Split(V)

Debug.Print "_"; arr(0); "_"
Debug.Print "_"; arr(1); "_"
Debug.Print "_"; arr(2); "_"

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.08.2005 (Чт) 16:13

Я понимаю фразу "количество пробелов в переменной V может быть различное" в более широком смысле: а вдруг там " а а b c c c c c c"?
Хотя, скорее всего, ты прав, чел имел в виду именно это.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 25.08.2005 (Чт) 16:36

можно так:

Код: Выделить всё

Dim f(2)
b = -1
v = " a          b        c "
a = Split(v, " ")

For x = 0 To UBound(a)
If a(x) <> "" Then
b = b + 1
f(b) = a(x)
End If
Next x

наприсано на каленке, поэтому не знаю работает или нет
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 25.08.2005 (Чт) 16:43

skiperski писал(а):Странно, никто не отвечает. Тогда можно я с ноги пробью?
Код: Выделить всё
Dim V As String
Dim arr() As String

V = "      a          b               c         "

V = Trim$(V)
Do While (InStr(1, V, "  "))
    V = Replace(V, "  ", " ")
Loop

arr = Split(V)

Debug.Print "_"; arr(0); "_"
Debug.Print "_"; arr(1); "_"
Debug.Print "_"; arr(2); "_"


в Excel не работает((
мне эта функция нужна для следующего:
есть значение в ячейке вида: "количество_____цена_____сумма" "_" - это я так тут пробел обозначил, а хотелось бы с помощью функции разделить на три разных переменных "количество", "цена", "сумма".


на вот этом месте "arr = Split(V)" выдает ошибку, что неправильный формат параметра(

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 25.08.2005 (Чт) 16:50

Djars писал(а):в Excel не работает((

Странно, только что проверил - всё работает. Excel 2000

Попробуй заменить
Код: Выделить всё
Dim arr() As String

на
Код: Выделить всё
Dim arr As Variant


Или вызывать Split с явным параметром
Код: Выделить всё
arr = Split(V, " ")

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 25.08.2005 (Чт) 16:57

skiperski писал(а):
Djars писал(а):в Excel не работает((

Странно, только что проверил - всё работает. Excel 2000

Попробуй заменить
Код: Выделить всё
Dim arr() As String

на
Код: Выделить всё
Dim arr As Variant


Или вызывать Split с явным параметром
Код: Выделить всё
arr = Split(V, " ")


у меня excel 2003, ругается на синтаксис Split, даже при явном прописании параметра, говорит, что либо неправильное число аргументов, либо параметр задан неверно.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 25.08.2005 (Чт) 17:04

Ну прочитай в хелпе, чего ему там надо. У меня 2003 нет.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList