2015-09-29 59 views
0

我有一個CSV與密鑰文件:在柱的側向承載力一個值的數據:分手了關鍵:值數據成列在Excel

id|name|age|data 
1|steve|5 |a:5,b:1,e:7 
2|john |10|c:3,b:2,e:4 
3|jack |12|e:4,c:2,d:7,b:9 

我想這一切如下分割:

id|name |age|a|b|c|d|e 
1 |steve|5 |5|1| | |7 
2 |john |10 | |2|3| |4 
3 |jack |12 | |9|2|7|4 

回答

1

這應該足以讓你開始。

Sub split_and_sort() 
    Dim rw As Long, v As Long, vKEYs As Variant, vPAIR As Variant 

    With Worksheets("Sheet5") '<~~ set this wroksheet reference properly! 
     With .Cells(1, 1).CurrentRegion 
      .Cells(1, .Columns.Count).Resize(1, 5) = Array("a", "b", "c", "d", "e") 
      With .Resize(.Rows.Count, .Columns.Count + 4) 
       For rw = 2 To .Rows.Count 
        vKEYs = Split(.Cells(rw, 4).Value2, Chr(44)) 
        .Cells(rw, 4).Clear 
        For v = LBound(vKEYs) To UBound(vKEYs) 
         vPAIR = Split(vKEYs(v), Chr(58)) 
         If CBool(UBound(vPAIR)) Then 
          If IsError(Application.Match(vPAIR(0), .Rows(1), 0)) Then _ 
           .Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) = vPAIR(0) 
          .Cells(rw, Application.Match(vPAIR(0), .Rows(1), 0)) = vPAIR(1) 
         End If 
        Next v 
       Next rw 
      End With 
     End With 
    End With 
End Sub 

如果您在列d細胞無值或非法值不會再先被分割上一個逗號,然後在一個冒號,你可能需要添加一些錯誤控制

Split and Sort