Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2010, 15:31   #1
jestya
 
Регистрация: 27.09.2010
Сообщений: 4
По умолчанию Разделение данных одной ячейки

Excel 2003. Помогите с разложением, пожалуйста)
Есть строка, расположенная на Лист3!A1:
"§Фамилия§Имя§Отчество§Зарплата§Дол жность§"
Необходимо программно реализовать разбиение строки на: Фамилия, имя, отчество, зарплата и должность, причем помещая каждое из слов соответственно на Лист2!A1, Лист2!B1, Лист2!C1, Лист2!D1 и Лист2!E1.

Допустим, Cells(b + n - m, a) и есть строка "§Фамилия§Имя§Отчество§Зарплата§Дол жность§"

Попытка хотя бы первое слово перенести выглядит так:
txt = Cells(b + n - m, a):
Слово = Split(Application.Trim(txt), "§")(0)
ActiveWorkbook.Sheets("Лист2").Cell s(1, 1) = Слово
jestya вне форума Ответить с цитированием
Старый 28.09.2010, 16:59   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Sub test_split()

Dim str, x As Byte
'str = "Фамилия§Имя§Отчество§Зарплата§ Дол жность§"
str = Cells(1, 1).Text
arr = Split(str, "§")
x = UBound(arr)
Range(Cells(1, 4), Cells(1, 3 + x)) = arr

End Sub
вот так надо делать если на другой лист то
ActiveWorkbook.Sheets("Лист2").Rang e(Cells(1, 4), Cells(1, 3 + x)) = arr
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 28.09.2010, 17:10   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

То же самое, но чуть короче:
Код:
Sub test()
    [Лист2!A1].Resize(, 6).Value = Split([a1], "§")
End Sub
Или так:
Код:
Sub test()
    [Лист2!A1:F1] = Split([a1], "§")
End Sub
Если оставлять данные на том же листе, то есть ещё вариант (его можно применить сразу к диапазону ячеек)
Код:
Sub test()
    [a1].TextToColumns [a1], xlDelimited, , , , , , , True, "§"
End Sub

Последний раз редактировалось EducatedFool; 28.09.2010 в 17:15.
EducatedFool вне форума Ответить с цитированием
Старый 28.09.2010, 18:40   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

А можно просто воспользоваться стандартной функцией Ёксела:
Данные - текст по столбцам - с разделителями - другой - §
При этом можно выделить весь диапазон
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 29.09.2010, 14:54   #5
jestya
 
Регистрация: 27.09.2010
Сообщений: 4
По умолчанию

EducatedFool, то, что надо!
Всем спасибо!!
Единственное, получается надо бы удалять первый символ строки, чтобы все это работало...
jestya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разделение данных в ячейках Viper_FMX Microsoft Office Excel 2 27.09.2010 02:43
Разделение массива данных на части Евгений К. Microsoft Office Excel 2 03.06.2010 13:41
Замена данных одной ячейки qwerty1301 Microsoft Office Access 5 18.05.2010 16:58
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39