2015-07-12 5 views
-1

Я имею данных как видно here.Преобразование данных из одной колонки в две колонки

Данные расположены только в одной колонке. Каждый уникальный идентификатор в основном имеет два набора данных (один или оба набора данных могут отсутствовать), и каждая запись разделяется символом тильды (например, ~). На листе также показан желаемый результат.

Есть ли код VB или формула листа, которая может использоваться для получения желаемого результата? Основной документ содержит около 132 300 строк. Я не придумал логики.

ответ

0

Это должно обрабатывать ваши данные довольно быстро.

Sub foo_on_doo_too() 
    Dim v As Long, vDOOs As Variant, vRSLTs As Variant 

    With ActiveSheet '<- set this worksheet reference properly! 
     vDOOs = .Range(.Cells(4, 1), .Cells(Rows.Count, 1).End(xlUp)).Value2 
     ReDim vRSLTs(1 To 2, 1 To Int(UBound(vDOOs, 1)/4)) 

     For v = LBound(vDOOs, 1) To UBound(vDOOs, 1) Step 4 
      vRSLTs(1, Int(v/4) + 1) = vDOOs(v, 1) 
      vRSLTs(2, Int(v/4) + 1) = vDOOs(v + 2, 1) 
     Next v 

     .Cells(4, 3).Resize(UBound(vRSLTs, 2), 2) = _ 
      Application.Transpose(vRSLTs) 
    End With 
End Sub 

Предлагаем Вам установить ActiveSheet ссылку на что-то явно, как Sheets("Sheet1").

Смежные вопросы