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