如何在Excel中按类别分配“types:值”格式的数据?

我正在对从站点parsing的数据进行线性回归分析。 我只能以下列不方便的格式获取数据:

第1列中的数据包含用':'符号分隔的数据types。 例如:

Year:Storey:Area:Condition:Type:Name 

第2列中的数据包含与第1列中的数据types相对应的信息,也用':'符号分隔:

 2015:3:170:Renovated:TypeB:John 

在我的Excel表格中,我有13000行以上述格式的数据。 我想按照为数据指定的类别对这些数据进行分类。

为了澄清,我提供了原始数据fromat的图片: 在这里输入图像描述

我尝试将这些数据转换为以下格式: 在这里输入图像说明


我试图通过使用分隔符将这些数据拆分成列,但问题是数据types的数量是不同的。 1行可能有5个类别。 另一行可能只有两个类别(数据types)。

有没有可能在Excel中分类这种数据?

这应该做你想要的:

 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)您需要将数据types作为标题放置在将要放置分割数据的工作表的第一行中。

2)我用你的例子中的行和列。 如果不同,那么你将需要调整单元格引用。

编辑:我改变了上面添加“NULL”和格式的单元格用粗体和斜体来更好地匹配你想要的。