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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2014, 17:19   #1
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию Помоготи с макросом

Нашол такой макрос:

Sub Splitcellc()
Dim arrS() As String
Dim i&
For i = Cells(Rows.Count, "c").End(xlUp).Row To 1 Step -1
arrS = Split(Cells(i, "c").Value, "&" & vbLf)
If UBound(arrS) > 0 Then
Range(Rows(i + 1), Rows(i + UBound(arrS))).Insert
Cells(i, "c").Resize(UBound(arrS) + 1).Value = Application.Transpose(arrS)
End If
Next i
End Sub

Он переносит данные по строкам, но делает это по одному столбцу который указан в макросе, подскажите что там нужно дописать чтоб он одновременно работал по нескольким столбцам.
Kravets вне форума Ответить с цитированием
Старый 05.12.2014, 18:47   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

там нужно дописать код, который будет обрабатывать еще несколько столбцов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.12.2014, 08:48   #3
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию

Это понятно, что нужно дописать код который обробатывает ещё несколько столбцов, да что то не получается. С макросами раньше дела не имел.
Kravets вне форума Ответить с цитированием
Старый 08.12.2014, 09:55   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

С людми-то Вы имели дело раньше?

Вы полагаете что "несколько столбцов" - это все знают сколько и каких именно (на листе ексель2007 - 16 тыс.столбцов)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.12.2014, 10:17   #5
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
С людми-то Вы имели дело раньше?

Вы полагаете что "несколько столбцов" - это все знают сколько и каких именно (на листе ексель2007 - 16 тыс.столбцов)
Обычные столбцы с текстовыми данными, разделенные разделителем "&".
Вложения
Тип файла: rar Книга1.rar (6.7 Кб, 16 просмотров)
Kravets вне форума Ответить с цитированием
Старый 08.12.2014, 11:55   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

оказалось - дописать надо все:
Код:
Sub SplitCells()
  Dim c As Long, r As Long
  For c = 2 To 6
    Cells(2, c).Resize(UBound(Split(Cells(1, c), "&"), 1)).Value = WorksheetFunction.Transpose(Split(Cells(1, c), "&"))
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.12.2014, 12:20   #7
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
оказалось - дописать надо все:
Код:
Sub SplitCells()
  Dim c As Long, r As Long
  For c = 2 To 6
    Cells(2, c).Resize(UBound(Split(Cells(1, c), "&"), 1)).Value = WorksheetFunction.Transpose(Split(Cells(1, c), "&"))
  Next
End Sub
Получается не совсем то что нужно. Макрос который я приводил в примере, заменяет или удаляет не разделенные по строкам значения. В вашем варианете остаются два варианта значений.
Kravets вне форума Ответить с цитированием
Старый 08.12.2014, 12:21   #8
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию

Но все ранво спасибо за предложенный вариант.
Kravets вне форума Ответить с цитированием
Старый 08.12.2014, 12:49   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

перечитайте свои сообщения и найдите хоть слово о том, как должен отображаться результат.
а) строку с исходными - межете удалить ручками
б) в коде, который я написал, можете 1 раз заменить 2 на 1 и будет по-вашему (какую из 2-х присутствующих в макросе двоек заменить -решите экспериментальным путем))
удачи!

и все равно, пожалуйста!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.12.2014, 12:56   #10
Kravets
 
Регистрация: 05.12.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
перечитайте свои сообщения и найдите хоть слово о том, как должен отображаться результат.
а) строку с исходными - межете удалить ручками
б) в коде, который я написал, можете 1 раз заменить 2 на 1 и будет по-вашему (какую из 2-х присутствующих в макросе двоек заменить -решите экспериментальным путем))
удачи!

и все равно, пожалуйста!
Большое спасибо, все работает!
Kravets вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помоготи решить задачу на С! Черепков Валерий Общие вопросы C/C++ 1 01.02.2012 16:13
Помоготи сделать по простому!!!!!! Artyomka1989 Фриланс 6 25.07.2010 16:14
Помоготи решить задачи на C VHomer Помощь студентам 5 09.11.2008 17:59
Помоготи решить задачу на паскале! Dudar Помощь студентам 1 03.07.2008 09:22