2014-02-19 24 views
2

我有一個Excel電子表格,有12列和200多行。在其中一列(ColB)中,有多個值與單行關聯。我想這樣的記錄轉換爲與列B.換句話說單值多行,我想轉換此:如何取出一列中的多個值以創建具有這些值的新行(重複來自原始行的所有其他信息)?


[可口可樂] [COLB] [COLC]

[藍色] [1,4,7] [開]
[紅色] [2,3] [閉]
[綠色] [5] [開]


這樣:


[可樂] [COLB] [COLC]

[藍色] [1] [開]
[藍色] [4] [開]
[藍色] [7] [打開]
[紅色] [2] [閉合]
[紅色] [3] [關閉]
[綠色] [5] [開]


任何建議?謝謝!

回答

0

我最喜歡在Excel中處理數據的方式是使用表示一行數據的Range對象(我稱之爲「遊標」)。您可以使用Offset方法將光標向下移動一行,並循環,直到光標中的特定單元格爲空。有許多方法可以識別Excel工作表中的「最後一行」,但它們都有缺陷 - 我只是希望確定一個在我的數據中永遠不應該爲空的列,並在到達空白單元格時終止循環。

Dim cursor As Range 
Dim x As Variant 
Dim i As Long 

Set cursor = Range("A2:C2") 

Do Until IsEmpty(cursor(1)) 
    x = Split(cursor(2), ",") 

    If UBound(x) > 0 Then 
     cursor(2) = x(0) 
     For i = 1 To UBound(x) 
      cursor.EntireRow.Insert 
      With cursor.Offset(-1) 
       cursor.Copy .Cells(1) 
       .Cells(2) = x(i) 
      End With 
     Next 
    End If 

    Set cursor = cursor.Offset(1) 
Loop 
+0

恐怕我是這樣的新手,這對我沒有多大意義!我會在哪裏輸入此代碼?如果我有12列數據,我是否抵消了其他11列的數據? (不熟悉OFFSET或範圍對象......「謝謝! – user3329706

+0

沒問題,這段代碼會在VBA項目的工作簿的Sub中出現,我在這裏找到了一個很好的VBA入門教程:http:// msdn.microsoft.com/en-us/library/ee814737(v=office.14).aspx – Tmdean

+0

爲了適應更多列,您需要更改Range(「A2:C2」)以引用全部列,並更改對遊標(2)和.Cells(2)的引用以引用包含多個值的單元格的索引。 – Tmdean

相關問題