2013-04-22 41 views
0

我有一個CSV格式爲這樣:談到1列包含數據集爲多行

label1,data1 
label2,data2 
label3,data3 

label1,data4 
label2,data5 
label3,data6 

... etc ... 

我嘗試在Excel中變換它的格式如下:

label1,label2,label3 
data1,data2,data3 
data4,data5,data6 

我不不認爲這是可能的內置工具,所以我正在爲它寫一個宏,但我是一個PowerShell/C#人員而不是VB人員。任何援助或指導,將不勝感激!

回答

1

我要作一個假設,這是一個時間的事情,一個spreasheet公式會適合你。

您可以在OzGrid上使用mikerickson的此自定義電子表格函數將所有數據與公共標籤連接起來。

首先你需要讓所有的獨特的價值觀:

Example1

然後,你需要使用自定義函數具有共同的標籤來查找並串連值:

Function ConcatIf(ByVal compareRange As Range, ByVal xCriteria As Variant, _ 
    Optional ByVal stringsRange As Range, Optional Delimiter As String) As String 
    Dim i As Long, j As Long, criteriaMet As Boolean 

    Set compareRange = Application.Intersect(compareRange, _ 
    compareRange.Parent.UsedRange) 

    If compareRange Is Nothing Then Exit Function 
    If stringsRange Is Nothing Then Set stringsRange = compareRange 
    Set stringsRange = compareRange.Offset(stringsRange.Row - compareRange.Row, _ 
    stringsRange.Column - compareRange.Column) 

    For i = 1 To compareRange.Rows.Count 
     For j = 1 To compareRange.Columns.Count 
      If (Application.CountIf(compareRange.Cells(i, j), xCriteria) = 1) Then 
       ConcatIf = ConcatIf & Delimiter & CStr(stringsRange.Cells(i, j)) 
      End If 
     Next j 
    Next i 
    ConcatIf = Mid(ConcatIf, Len(Delimiter) + 1) 
End Function 

Example2

你可以做一個額外的級聯,如果你想你的標籤結合:

Example3

然後你就可以粘貼直接到文本編輯器,或者你可以把它當作是,將其保存爲csv格式,如果你想:

Example4

然後,你打開在Excel和調換,如果你想:

Example5

的圓一個回合的一種方式做到這一點,但在我看來,寫一個宏會更容易 - 至少略微。祝你好運。

0

最合適的技術可以在你需要多久做到這一點某種程度上取決於有多少數據塊,你有,但宏是沒有必要的:

導入到Excel和分分列以逗號作爲分隔符。
將三行分流並將「label1 label2 label3」的一組數據移動到「data」列的上方。
刪除'標籤'列和空白行。
列複製到Word作爲無格式文本。
插入>表格 - 表格,列數轉換爲文本到表格= 3。
複製回Excel並連續與昏迷分隔符連接(&","&