Разделение данных из одного столбца в несколько столбцов

#excel #vba

#excel #vba

Вопрос:

У меня есть данные в одном столбце, как разные наборы:

Исходные данные

 Class: Country1
Object: State1
Description: DEsc1
Object: State2
Description: DEsc2
Object: State3
Description: DEsc3
Object: State4
Description: DEsc4

Class: Country2
Object: State1
Description: DEsc1
Object: State2
Description: DEsc2
Object: State3
Description: DEsc3
Object: State4
Description: DEsc4

Class: Country3
Object: State1
Description: DEsc1
Object: State2
Description: DEsc2
Object: State3
Description: DEsc3
Object: State4
Description: DEsc4

Class: Country4
Object: State1
Description: DEsc1
Object: State2
Description: DEsc2
Object: State3
Description: DEsc3
Object: State4
Description: DEsc4
 
 


I am looking for Excel VBA macro code , which will clean and organize my data.

**Expected Data**
 
 Class       Object    Description <br/>
----------------------------------
Country1    State1    DEsc1
Country1    State2    DEsc2
Country1    State3    DEsc3
Country1    State4    DEsc4
Country2    State1    DEsc1
Country2    State2    DEsc2
Country2    State3    DEsc3
Country2    State4    DEsc4
Country3    State1    DEsc1
Country3    State2    DEsc2
Country3    State3    DEsc3
Country3    State4    DEsc4
Country4    State1    DEsc1
Country4    State2    DEsc2
Country4    State3    DEsc3
Country4    State4    DEsc4
 
 
Thanks In Advance!!
KP

[Please find the attached image]

[1]: https://i.stack.imgur.com/otSV1.jpg


 

Комментарии:

1. Скриншот был бы полезен.

2. Что вы пробовали до сих пор? Это очень похоже на то, что вам просто нужно запустить цикл, проверить начало каждого значения и сохранить текст в переменных?

3. Спасибо за обновление Chronocidal !! Я новичок в Excel vba и макросах. Было бы здорово, если бы вы предоставили код макроса.

4. Похоже, вы хотите State , чтобы информация игнорировалась в выходных данных. Правильно ли это ??

Ответ №1:

Вы могли бы попробовать:

 Option Explicit

Sub test()

    Dim LastRowA As Long, LastRowC As Long, i As Long, y As Long
    Dim strCountry As String

    With ThisWorkbook.Worksheets("Sheet2")

        LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastRowA Step 10

            strCountry = Mid(.Range("A" amp; i).Value, InStr(1, .Range("A" amp; i).Value, ":")   2, Len(.Range("A" amp; i).Value) - (InStr(1, .Range("A" amp; i).Value, ":")   1))

            For y = 2 To LastRowA Step 2

                LastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row

                If .Range("A" amp; y).Value <> "" Then
                    .Range("C" amp; LastRowC   1).Value = strCountry
                    .Range("D" amp; LastRowC   1).Value = "Object" amp; Mid(.Range("A" amp; y).Value, InStr(1, .Range("A" amp; y).Value, "te")   2, Len(.Range("A" amp; y).Value) - (InStr(1, .Range("A" amp; y).Value, "te")   1))
                    .Range("E" amp; LastRowC   1).Value = Mid(.Range("A" amp; y   1).Value, InStr(1, .Range("A" amp; y   1).Value, ":")   2, Len(.Range("A" amp; y   1).Value) - (InStr(1, .Range("A" amp; y   1).Value, ":")   1))
                Else
                    Exit For
                End If

            Next y

        Next i

    End With

End Sub
 

Изображение:

введите описание изображения здесь