Привет Форумчане! Подкинули мне задачку, привести табличку в Excele под нужную структуру. В VBA я слаб, а в строке задать цикл не получается. Имеется табличка, в которой первые три столбца уникальные, а вот четвёртый может содержать от одного до неизвестного количества значений, разделённых точкой с запятой. Как программист, я понимаю, нужен цикл от 1 до (количества точек с запятой в тексте)+1, вырезать текст кроме первого вхождения ";", добавлять строку ниже, вставлять текст, и повторять пока цикл. Но реализовать такое опыта не хватает. Спасибо.
Привет Форумчане! Подкинули мне задачку, привести табличку в Excele под нужную структуру. В VBA я слаб, а в строке задать цикл не получается. Имеется табличка, в которой первые три столбца уникальные, а вот четвёртый может содержать от одного до неизвестного количества значений, разделённых точкой с запятой. Как программист, я понимаю, нужен цикл от 1 до (количества точек с запятой в тексте)+1, вырезать текст кроме первого вхождения ";", добавлять строку ниже, вставлять текст, и повторять пока цикл. Но реализовать такое опыта не хватает. Спасибо.Akum
Public Sub ToColumn() Dim x, s, i&, j&, irow& x = Range("A4", Cells(Rows.Count, 4).End(xlUp)).Value Application.ScreenUpdating = False irow = 4 For i = 1 To UBound(x) s = Split(x(i, 4), ";") For j = 0 To UBound(s) Cells(irow, 1) = x(i, 1) Cells(irow, 2) = x(i, 2) Cells(irow, 3) = x(i, 3) Cells(irow, 4) = Trim$(s(j)) irow = irow + 1 Next j Next i Application.ScreenUpdating = True End Sub
[/vba]
Здравствуйте. Как вариант можно так [vba]
Код
Public Sub ToColumn() Dim x, s, i&, j&, irow& x = Range("A4", Cells(Rows.Count, 4).End(xlUp)).Value Application.ScreenUpdating = False irow = 4 For i = 1 To UBound(x) s = Split(x(i, 4), ";") For j = 0 To UBound(s) Cells(irow, 1) = x(i, 1) Cells(irow, 2) = x(i, 2) Cells(irow, 3) = x(i, 3) Cells(irow, 4) = Trim$(s(j)) irow = irow + 1 Next j Next i Application.ScreenUpdating = True End Sub