2015-12-02 38 views
3

我正在對路網中的數據進行線性迴歸分析。 我只能以下列不方便的格式獲取數據:如何在Excel中按類別分配「類型:值」格式的數據?

第1列中的數據包含用':'符號分隔的數據類型。例如:

Year:Storey:Area:Condition:Type:Name 

數據在2速列包含對應於第1列也由分離的數據類型的信息,「:」符號:

2015:3:170:Renovated:TypeB:John 

以我的Excel表格我有行具有上述格式的數據。 我想按照爲數據指定的類別對此數據進行分類。

爲了澄清,我提供原始數據fromat的圖片: enter image description here

我嘗試將此數據轉換爲以下格式: enter image description here


我試圖用這個數據拆分成多列分隔符,但問題是數據類型的數量會有所不同。 1行可能有5個類別。另一行可能只有2個類別(數據類型)。

是否有可能在Excel中對這種數據進行分類?

+0

每種類型的數據是分開還是混合在一起? – Annabelle

+0

你能告訴我們樓層和麪積的範圍嗎? - 例如如果層數從1到50,區域從1到1000,則不能區分它們。 –

+0

每種類型的數據由':'分隔,並根據類型進行排序。 – Chichi

回答

2

這應該做你想要什麼:

Sub Andrey() 
Dim catArr() As String 
Dim resArr() As String 
Dim lastrow As Long 
Dim ows As Worksheet 
Dim tws As Worksheet 
Dim i As Long 
Dim j As Long 
Dim startrow As Long 

Set ows = Sheets("Sheet9") ' change to where your data is 
Set tws = Sheets("Sheet10") ' change to where you want your data 

startrow = 3 ' Change to the first row with data 

With ows 
    lastrow = .Range("A" & .Rows.Count).End(xlUp).Row 
    For i = startrow To lastrow 
     tws.Cells(i, 1) = .Cells(i, 1) 
     tws.Range(tws.Cells(i, "B"), tws.Cells(i, "G")).Value = "NULL" 
     tws.Range(tws.Cells(i, "B"), tws.Cells(i, "G")).Font.Italic = True 
     tws.Range(tws.Cells(i, "B"), tws.Cells(i, "G")).Font.Bold = False 
     tws.Range(tws.Cells(i, "A"), tws.Cells(i, "G")).HorizontalAlignment = xlCenter 
     catArr = Split(.Cells(i, 2), ":") 
     resArr = Split(.Cells(i, 3), ":") 
     For j = LBound(catArr) To UBound(catArr) 
      tws.Cells(i, WorksheetFunction.Match(catArr(j), tws.Range("A1:G1"), 0)) = resArr(j) 
      tws.Cells(i, WorksheetFunction.Match(catArr(j), tws.Range("A1:G1"), 0)).Font.Bold = True 
      tws.Cells(i, WorksheetFunction.Match(catArr(j), tws.Range("A1:G1"), 0)).Font.Italic = False 
     Next j 
    Next i 
End With 

End Sub 

需要注意幾個問題。

1)您需要將數據類型作爲標題放入分割數據將放置的表格的第一行。

2)我用你的例子中的行和列。如果不同,那麼你將需要調整單元格引用。

編輯:我改變了上述添加「NULL」,並用粗體和斜體格式化單元以更好地匹配你想要的。

+1

@AndreyRadik很高興能幫到你。 –