以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  计算同一行数据的最高分、最低分和平均值,计算名次  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99548)

--  作者:wu725
--  发布时间:2017/4/21 10:44:00
--  计算同一行数据的最高分、最低分和平均值,计算名次

请大家帮一下忙,我设计了一个记分软件需要统计最高分、最低分,去掉最高分和最低分的平均值。共7个裁判 去掉一个最高、去掉一个最低,计算五个裁判的平均分,另根据平均分计算名称

      A裁判  B裁判  C裁判  D裁判  E裁判  F裁判  G裁判  去掉最高分  去掉最低分   平均分  排名

1行  98.5    99.5    90.1   85       89     92.6    98.4

2行   93.2    92.6    99.1   89.4    67.5   88.8    83.3


图片点击可在新窗口打开查看此主题相关图片如下:图片.png
图片点击可在新窗口打开查看


--  作者:有点色
--  发布时间:2017/4/21 11:00:00
--  

 做个按钮

 

Dim dt As DataTable = DataTables("表A")
For Each dr As DataRow In dt.Select("")
    Dim ary() As Double = {dr("A裁判"), dr("B裁判"), dr("C裁判"), dr("D裁判")}
    array.sort(ary)
    dr("最低分") = ary(0)
    dr("最高分") = ary(ary.length-1)
    dr("平均分") = (ary(1) + ary(2)) / 2
Next
Dim drs As List(Of DataRow) = dt.Select("", "平均分 desc")
For n As Integer = 0 To drs.Count - 1 \'遍历所有行
    If n > 0 AndAlso drs(n)("平均分") = drs(n-1)("平均分") Then \'如果总分和上一行相同
        drs(n)("排名") = drs(n-1)("排名") \'则排名等于上一行
    Else
        drs(n)("排名") = n + 1 \'设置排名
    End If
Next