Страницы: 1
RSS
Разделение текстовых блоков в ячейке по столбцам, Разделение информации в ячейке
 
Здравствуйте! Прошу помощи.
Необходимо распределить текст из каждой ячейки в столбце без разделения других строк. Возможно ли воспользоваться каким-то неизвестным мне методом для того, чтобы, к примеру , марка "Lada", в столбце "Марка", содержала несколько моделей построчно из столбца "Модель"? В таблице я оставил информацию: как есть и как должно быть.
Пожалуйста, поделитесь способами/знаниями/советами.  
 
А что должно быть в столбце 'Группа'?
Согласие есть продукт при полном непротивлении сторон
 
По плану хочу, приведённую в нужный вид таблицу, за_ВПР_ить  по модели и выцепить необходимую группу из другой таблицы.
 
Вариант макросом. Выделите ячейки, которые требуется разделить, в вашем случае это столбец C, запустите макрос SplitSelection.
Код
Option Explicit

Private Const CH = ";"

Sub SplitSelection()
    SplitRange Selection
End Sub

Private Sub SplitRange(rn As Range)
    Dim Application_Calculation  As XlCalculation
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual

    Set rn = Intersect(rn, rn.Parent.UsedRange)
    Dim arr As Variant
    Dim ya As Long
    Dim cl As Range
    For Each cl In rn.Cells
        If InStr(cl.Value, CH) > 0 Then
            arr = Split(cl.Value, CH)
            For ya = UBound(arr) To LBound(arr) + 1 Step -1
                cl.EntireRow.Copy
                cl.EntireRow.Rows(2).Insert
                cl.Cells(2, 1).Value = Trim(arr(ya))
            Next
            cl.Value = Trim(arr(ya))

        End If
    Next
    Application.CutCopyMode = False
    Application.Calculation = Application_Calculation
End Sub
 
Благодарю! Вы просто гений! Огромная благодарность, МатросНаЗебре!
 
Админ, закройте тему, пожалуйста.
 
Раз уж сделал, тоже выложу. Если приведете разделитель Марок в ячейке к чему-то одному (' ; '), то сработает для всех ячеек
Код
Sub PoPuP()
Dim arr(), arrNew(), iTmp
Dim I&, N&
Application.ScreenUpdating = False
With Worksheets("Sheet1")
  arr = .Range("B3:D" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
End With
ReDim arrNew(1 To UBound(arr, 1) * 10, 1 To UBound(arr, 2))
For I = LBound(arr, 1) To UBound(arr, 1)
  iTmp = Split(arr(I, 2), ";")
  For J = LBound(iTmp) To UBound(iTmp)
    N = N + 1
    arrNew(N, 1) = arr(I, 1)
    arrNew(N, 2) = iTmp(J)
    arrNew(N, 3) = arr(I, 3)
  Next
Next
Worksheets("Sheet1").Range("I3").Resize(N, 3) = arrNew
Application.ScreenUpdating = True
End Sub

А тему не закрою. Теперь уже она не Ваша)
Согласие есть продукт при полном непротивлении сторон
 
Благодарю, Sanja!
Страницы: 1
Наверх