Страницы: 1
RSS
Как разбить данные из ячейки на несколько строк?
 
Доброго времени суток!  
 
Заранее прошу прощение за формулировку темы, никак не смогла придумать, как в нескольких словах описать вопрос.  
А вопрос такой.  
Есть таблица, например:  
NCT1   ABC   CC|OC|VC   HHH  
NCT2   DEF   BC|FTC     GGG  
Нужно привести ее в вид:  
NCT1   ABC   CC    HHH  
NCT1   ABC   OC    HHH  
NCT1   ABC   VC    HHH  
NCT2   DEF   BC    GGG  
NCT2   DEF   FTC   GGG  
 
(пример прилагается, в оригинале - 35000 строк)  
 
Как это сделать с помощью функций? Как разбить ячейку на столбцы понимаю, а с дальнейшими действиями нужна помощь!
 
ИМХО только макросом. И если у Вас этого добра 35000 строк, то в 2 колонки на лист результат никак не влезет. А еще из примера не совсем понятно, какой нужен результат. Покажите в примере на паре строк, что должно получиться.
Я сам - дурнее всякого примера! ...
 
Вот, в приложении пример того что нужно на паре строк, для понимания что из какой строки получилось выделила цветами.  
С макросами никогда не имела дела...
 
открываем файл из первого поста  
Alt+F11, добавить модуль, вставить в него код  
 
Sub t()  
 Dim i&, j&, k&, n&, a, b, x  
 a = [a1].CurrentRegion.Value
 For i = 1 To UBound(a)  
   n = n + Len(a(i, 2)) - Len(Replace(a(i, 2), "|", "")) + 1  
 Next  
 ReDim b(1 To n, 1 To UBound(a, 2)): n = 0  
 For i = 1 To UBound(a)  
   x = Split(a(i, 2), "|")  
   For j = 0 To UBound(x)  
     n = n + 1  
     For k = 1 To UBound(a, 2)  
       If k = 2 Then b(n, 2) = x(j) Else b(n, k) = a(i, k)  
     Next  
   Next  
 Next  
 Sheets(2).[a1].Resize(UBound(b), UBound(b, 2)).Value = b
End Sub  
 
вернуться в Excel, активировать Лист1, Alt+F8, выбрать макрос t, нажать "выполнить"  
результат - на втором листе.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Светлана, у Вас в первом примере 5 столбцов. Я написал для всех 5. Во втором три. Я вижу Вы очень цените свое время, но чихать Вам на время остальных. Кросс:  
http://forum.msexcel.ru/index.php/topic,8898.0.html  
До свидания.
Я сам - дурнее всякого примера! ...
 
http://www.excelworld.ru/forum/2-2997-1
 
ай, удалите мой пост.  
из солидарности :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Я прошу прощения, не совсем поняла, что не так. То, что на нескольких форумах написала? Так не знала, что одни и те же люди везде... И в правилах не видела "пишите только на одном форуме". Так что извините, кого обидела, честно, не хотела.
 
решение подошло?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=SDan}{date=09.12.2012 08:17}{thema=}{post}Я прошу прощения, не совсем поняла, что не так. То, что на нескольких форумах написала? {/post}{/quote}Никто не запрещает спрашивать на нескольких форумах. Просто Вам следовало бы указать на них ссылки на те форумы, где Вы ЕЩЁ разместили свой вопрос: глянет человек по этой ссылке - увидит, что решение уже есть - и не будет впустую делать ту же самую работу.
 
Почти.  
Как раз собиралась спросить, какие в коде внести изменения для большего количества столбцов (сейчас у меня 24, а вообще хотелось бы понять принцип - где в коде это прописано и как изменить).
 
Благодарю, дальше буду так делать.
 
{quote}{login=SDan}{date=09.12.2012 08:50}{thema=}{post}какие в коде внести изменения {/post}{/quote}  
никакие  
код обрабатывает столько столбцов, сколько есть (лишь бы у каждого столбца бали заголовки).  
 
а вообще-то любые изменения вносят при необходимости. вы проверили работу кода на таблицах с разным количеством столбцов и выявили такую необходимость?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Конечно же я первым делом попробовала как работает код. Косяк был в таблице, убрала,теперь все работает! Ура!  
Благодарю за помощь!
Страницы: 1
Читают тему
Loading...