Excel宏操作绘制学生成绩曲线图

需求:

原始数据是多张表,
每张表中的内容为同一班级一次考试的各科成绩,
多张表意味着多次考试。
通过宏命令在菜单中建立一个命令按钮,
能够生成一个学生多次考试的单科/平均分等成绩曲线图。

Demo:

2010011516110815.jpg

没有网络可以查资料,所以搞了好几天晚上

今天终于弄完(还有好多情况没有考虑)

通过生成一个汇总页面方式做的图

(正常应该是引用多sheet页的单元格,不清楚是不是这样)

结果:

2010011516150280.jpg

基本功能:根据选定单元格所在行,生成成绩曲线图

宏代码,版本Office 2007

Sub 成绩曲线图()
'
' 成绩曲线图 Macro
'
'studentCode存放学号
    Dim studentCode As String
    studentCode = Selection.Value
    'MsgBox (studentCode)
   
    '单元格所在行
    Dim cellRow, cellColumn As Integer
    cellRow = ActiveCell.Row     '活动单元格所在的行数
    cellColumn = ActiveCell.Column '活动单元格所在的列数
    'MsgBox (cellRow)
    'MsgBox (cellColumn)

    '删除存在的个人汇总页
    Dim sheetsCount As Integer
    For sheetsCount = 1 To Sheets.Count
        If Sheets(sheetsCount).Name = "个人成绩汇总" Then
                '取消显示提示框
                Application.DisplayAlerts = False
                Sheets("个人成绩汇总").Select
                ActiveWindow.SelectedSheets.Delete
                '还原显示提示框
                Application.DisplayAlerts = True
                Exit For
            Else
        End If
    Next sheetsCount

    '新建个人成绩汇总页
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "个人成绩汇总"
   
    '构建行头
    Sheets(1).Select
    Rows("1:1").Select
    Selection.Copy
    Sheets("个人成绩汇总").Select
    Rows("1:1").Select
    ActiveSheet.Paste
   
    '复制成绩
    Dim term As Integer
    For term = 1 To Sheets.Count - 1
        Sheets(term).Select
        Rows(cellRow).Select
        Selection.Copy
        Sheets("个人成绩汇总").Select
        Rows(term + 1).Select
        ActiveSheet.Paste
    Next term
   
    '处理列头
    For sheetsCount = 1 To Sheets.Count - 1
        Cells(sheetsCount + 1, "A").Value = Sheets(sheetsCount).Name
    Next sheetsCount
   
    '设置A1单元格为学生名,并删除姓名列
    Range("A1").Value = Range("B2").Value
    Columns(2).Delete
   
    '计算每行各科考试平均分
    Dim rowCount, colCount As Integer
    rowCount = ActiveSheet.Range("A65535").End(xlUp).Row
    colCount = ActiveSheet.Range("IV1").End(xlToLeft).Column
    'MsgBox (rowCount)
    'MsgBox (colCount)
   
    '写平均分四个字
    Cells(1, colCount + 1).Value = "平均分"
    '逐行计算平均分
    Dim i, j As Integer
    Dim sum As Integer
    For i = 2 To rowCount
        For j = 2 To colCount
            sum = sum + Cells(i, j).Value
        Next j
        Cells(i, colCount + 1).Value = sum / (colCount - 1)
        sum = 0
    Next i
   
    '选择区域
    'Range(Cells(1, 1), Cells(rowCount, colCount + 1)).Select
    '制图
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range(Cells(1, 1), Cells(rowCount, colCount + 1))
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.PlotBy = xlColumns
'
End Sub

转载于:https://www.cnblogs.com/futao/archive/2010/01/15/1648676.html

1、Microsoft Excel平台 Microsoft Excel是最常用的电子表格软件。本系统以Microsoft Excel操作平台,只要装了EXCEL就可以用,符合大多数人的使用习惯。用户既可以通过系统界面提高工作效率,也可以通过Microsoft Excel界面直接操作。 2、结构紧凑 只有一个原始数据表,三个功能表(查询、统计、成绩单),一个设置和本说明。界面直观、简洁,没有豪华的装饰,没有繁琐的步骤。 3、操作方便 使用本成绩分析时,您只需要输入或粘贴“基础数据”就可,其它分析数据由系统自动生成。操作简单,一看便会。 4、适应面广 成绩录入与成绩分析一气呵成;不必整理试卷、非顺序登分;不受班级、每班人数、科目等数量限制。以人为本,对查询和统计结果,你可自由编辑排版以便输出,对查询条件方式、对统计项目、呈现方式等更可由您方便地重新设置,开放拓展性好。 ※※※※二、主要功能 1、查询:查询条件多样,可按姓名、按班级查询(分班);按某学科(含总分)某分数段查询;按班内名次(年级名次)段查询(如某班前XX名、年级前XX-XX名)等,各种查询条件还可自由组合。对查询结果,可按某关键字排序后显示。 2、统计:根据班级和科目(含总体)按统计范围自动实时生成各项指标(参考人数、平均分、及格人数、及格率、优生人数、优生率、差生人数、差生率等)、各分数段人数统计、年级前XX名在各班分布等。 3、成绩条:实时自动生成成绩条。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值