读书人

求excel使用

发布时间: 2013-02-04 10:50:22 作者: rapoo

求excel应用
姓名班级数学语文
张三29597
李四26677
王五19995



转换后变成

姓名班级课程分数
张三2数学95
张三2语文97
李四2数学66
李四2语文77
王五1数学99
王五1语文95

备注:
姓名很多,不固定
课程很多,不固定。
多谢

[解决办法]
Sheets(1)为原数据表格
Sheets(2)为转换出的新表格

Sub Score()
Dim TotalRow As Long, TotalCol As Integer
Dim CurRow1 As Long, CurRow2 As Long, CurCol1 As Integer
Dim S1 As Worksheet, S2 As Worksheet
TotalRow = [A65536].End(xlUp).Row
TotalCol = [IV1].End(xlToLeft).Column
Set S1 = Sheets(1)
Set S2 = Sheets(2)
S2.Cells(1, 1) = "姓名"
S2.Cells(1, 2) = "班级"
S2.Cells(1, 3) = "课程"
S2.Cells(1, 4) = "分数"
CurRow2 = 2
For CurRow1 = 2 To TotalRow
For CurCol1 = 3 To TotalCol
S2.Cells(CurRow2, 1) = S1.Cells(CurRow1, 1)
S2.Cells(CurRow2, 2) = S1.Cells(CurRow1, 2)
S2.Cells(CurRow2, 3) = S1.Cells(1, CurCol1)
S2.Cells(CurRow2, 4) = S1.Cells(CurRow1, CurCol1)
CurRow2 = CurRow2 + 1
Next CurCol1
Next CurRow1
End Sub

[解决办法]
第一步:添加一个辅助列(“姓名及班级”列),用公式=A2&" "&B2,把“姓名”、“ 班级”两列合并。(“姓名”和“ 班级”的内容之间加一个空格,是为了第三步 “分列”,容易将它们还原)

第二步:利用数据透视表,把二维表转换为一维列表,即:
1、“数据”-“数据透视表”-“多重合并计算数据区域”-“下一步”
2、选定区域:将二维表选中,包括第一行的数据名,第一列是“姓名及班级”列,-“下一步”,形成数据透视表
3、选中数据透视表最右下角的单元格,双击即可得到:
行列值
李四 2数学66
李四 2语文77
王五 1数学99
王五 1语文95
张三 2数学95
张三 2语文97

第三步:把“姓名及班级”分列,单击菜单“数据”-“分列”即可

[解决办法]
数据透视表试试
[解决办法]
使用excel的函数,不过还是得写函数方法
[解决办法]
数据透视表
[解决办法]
使用数据透视表可能会更快一点

读书人网 >VBA

热点推荐