问题
在加权计算中的“加权计算”代码中,需要按以下方法进行加权计算。
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