如何使用其他列中的类别将Excel中的列拆分为多个列?

如何使用其他列中的类别将Excel中的列拆分为多个列?,excel,vbscript,excel-formula,excel-2010,vba,Excel,Vbscript,Excel Formula,Excel 2010,Vba,我有一个非常大的数据集,有几十万行。我成功地将其分为两列,如下所示: Name: | John Birth year: | 1982 Favorite sport: | Rugby Favorite color: | Blue | Name: | Mike Birth year: | 1977 | Name: | Shayla Favorite sport:

我有一个非常大的数据集,有几十万行。我成功地将其分为两列,如下所示:

Name:           | John
Birth year:     | 1982
Favorite sport: | Rugby
Favorite color: | Blue
                |
Name:           | Mike
Birth year:     | 1977
                |
Name:           | Shayla
Favorite sport: | Soccer
                |
Name:           | Kimberly
Birth year:     | 1983
Favorite sport: | Baseball
Favorite color: | Yellow
Favorite food:  | Pizza
但是,我想消除目前存在的重复类别。如何将每个数据“条目”拆分为单独的行或列,并使用“类别”以避免重复,如:

Name    | Birth year    |  Favorite sport  |  Favorite color  |  Favorite food
John    | 1982          |  Rugby           |  Blue            |
Mike    | 1977          |                  |                  |
Shayla  |               |  Soccer          |                  |
Kimberly| 1983          |  Baseball        |  Yellow          | Pizza

应该注意的是,现有数据集将包含名称加上一个或多个类别

Set fields = CreateObject("Scripting.Dictionary")
fields.Add "Name:"           , 1
fields.Add "Birth year:"     , 2
fields.Add "Favorite sport:" , 3
fields.Add "Favorite color:" , 4
fields.Add "Favorite food:"  , 5

Set xl = CreateObject("Excel.Application")
xl.Visible = True

Set wb = xl.Workbooks.Open("C:\path\to\your.xls")
Set src = wb.Sheets(1)
Set dst = wb.Sheets(2)

i = 0
For Each row In src.UsedRange.Rows
  key = row.Range("A1").Value
  val = row.Range("B1").Value

  If key = "Name:" Then i = i+1
  If key <> "" Then
    If fields.Exists(key) Then
      dst.Cells(i+1, fields(key)).Value = val
    Else
      WScript.Echo "Unknown key " & key
    End If
  End If
Next

wb.Save
wb.Close

xl.Quit
Set fields=CreateObject(“Scripting.Dictionary”)
字段。添加“名称:”,1
字段。添加“出生年份:”,2
字段。添加“最喜爱的运动:”,3
字段。添加“最喜欢的颜色:”,4
字段。添加“喜爱的食物:”,5
Set xl=CreateObject(“Excel.Application”)
xl.Visible=True
设置wb=xl.Workbooks.Open(“C:\path\to\your.xls”)
设置src=wb.Sheets(1)
设置dst=wb.Sheets(2)
i=0
对于src.UsedRange.Rows中的每一行
键=行范围(“A1”)值
val=行范围(“B1”).值
如果key=“Name:”则i=i+1
如果是“”键,则
如果字段.存在(键),则
dst.单元格(i+1,字段(键)).Value=val
其他的
Echo“未知密钥”&密钥
如果结束
如果结束
下一个
wb.保存
wb.关闭
xl.退出

大量的谷歌搜索和帮助文件读取,一些失败的“如果”公式。我真的不知道从哪里开始。名称是唯一的吗?是的,可以假设名称是唯一的,并且不会重复(在我的实际数据集中,它们是唯一的标识符编号)。谢谢,这看起来正是我需要的解决方案。你很擅长这个。