這應該做你想要什麼:
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」,並用粗體和斜體格式化單元以更好地匹配你想要的。
每種類型的數據是分開還是混合在一起? – Annabelle
你能告訴我們樓層和麪積的範圍嗎? - 例如如果層數從1到50,區域從1到1000,則不能區分它們。 –
每種類型的數據由':'分隔,並根據類型進行排序。 – Chichi