首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

求excel使用

2013-02-04 
求excel应用姓名班级数学语文张三29597李四26677王五19995转换后变成姓名班级课程分数张三2数学95张三2语

求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的函数,不过还是得写函数方法
[解决办法]
数据透视表
[解决办法]
使用数据透视表可能会更快一点

热点排行