Foxtable(狐表)用户栏目专家坐堂 → [求助]如何修改加权计算代码?


  共有2796人关注过本帖平板打印复制链接

主题:[求助]如何修改加权计算代码?

帅哥哟,离线,有人找我吗?
hrw68529
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1142 积分:8846 威望:0 精华:0 注册:2012/7/10 9:09:00
[求助]如何修改加权计算代码?  发帖心情 Post By:2016/1/25 13:47:00 [只看该作者]

问题
在加权计算中的“加权计算”代码中,需要按以下方法进行加权计算。
1、按“专业组名称”,如果专业组名称分布在2个以上面试室,就需要加权计算,如果专业组名称在一个面试室,不加权,
2、加权的计算方法:如果专业组名称分布在2个以上面试室,就按照“专业组名称”和“面试室”和“单位类型”进行加权计算。即先算出专业组名称所在每个面试室,按照单位类型(即01城市、02农村)算出每个面试室的平均成绩,然后将“专业组名称”分布的几个面试室平均成绩相加除权这几个面试室个数,得出这几个面试室平均成绩的平均成绩(即加权平均成绩),然后用加权平均成绩除以每个面试室的平均成绩,得出每个面试室的加权系数,然后用加权系数乘权每个人的原始成绩,得出最终成绩。
3、下面是按照“专业组名称”和“面试室”进行的加权计算 ,现在我想加上按“专业组名称”、面试室后,再按照单位类型(01城市和02农村)进行加权计算,如何修改代码,请老师指点。后附:加权计算代码和软件

Dim dt As DataTable = DataTables("职称评审成绩")
Dim dt_d As DataTable = DataTables("加权计算")
dt_d.DataRows.Clear
For Each zy As String In dt.GetValues("专业组名称")
    Dim ls As List(Of String) = dt.GetValues("面试室", "专业组名称 = '" & zy & "'")
    Dim zy_sum As Double = 0
    For Each s As String In ls
        Dim dr As DataRow = dt_d.AddNew
        dr("专业组名称") = zy
        dr("面试室") = s
        Dim sum As Double = dt.Compute("sum(原始成绩)", "专业组名称 = '" & zy & "' and 面试室 = '" & s & "'")
        Dim count As Double = dt.Compute("count(原始成绩)", "专业组名称 = '" & zy & "' and 面试室 = '" & s & "'")
        dr("面试室平均值") = sum / count
        zy_sum += dr("面试室平均值")
    Next
    If ls.Count > 1 Then
        dt_d.ReplaceFor("加权平均值", zy_sum / ls.Count, "专业组名称 = '" & zy & "'")
    End If
Next
For Each dr As DataRow In dt_d.DataRows
    If dr("加权平均值") <> 0 AndAlso dr("面试室平均值") <> 0 Then
        dr("加权系数") = dr("加权平均值") / dr("面试室平均值")
    End If
Next

 回到顶部
总数 11 1 2 下一页