Foxtable(狐表)用户栏目专家坐堂 → 交叉查询分组统计


  共有2381人关注过本帖树形打印复制链接

主题:交叉查询分组统计

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


加好友 发短信
等级:婴狐 帖子:6 积分:100 威望:0 精华:0 注册:2017/1/23 9:15:00
交叉查询分组统计  发帖心情 Post By:2017/1/23 9:34:00 [只看该作者]

现有各个班的成绩总表,我想按班统计各个分数段的人数。请各位高手指点。如下图:
  
班级 姓名 总分 语文 数学
1班 a 601 108 120
2班 b 589 112 133
3班 C 551 98 145
2班 D 502 80 124
1班 E 508 90 85
3班 F 561 97 135


















 
   
班级 1班 2班 3班
总分600分以上 1    
总分550-600分   1 2
总分550以下 1 1  
                           
                              
                              

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/1/23 9:40:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
hec_wangzheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:100 威望:0 精华:0 注册:2017/1/23 9:15:00
  发帖心情 Post By:2017/1/23 9:52:00 [只看该作者]

版主大哥,我是小白,能不能帮小兄弟码一下,谢谢你。提前祝你新年快乐。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/1/23 10:30:00 [只看该作者]

上传实例

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/23 10:46:00 [只看该作者]

做个按钮执行代码

 

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("等级", Gettype(String), 32)
For Each v As String In DataTables("学生成绩").GetValues("班级")
    dtb.AddDef(v, Gettype(Double))
Next
dtb.Build()
Dim dt As Table = Tables("统计")
Dim dtsource As DataTable =  DataTables("学生成绩")
Dim ary1() As String = {"550分以上", "500-550"}
Dim ary2() As String = {750, 550}
Dim ary3() As String = {550, 500}
For i As Integer = 0 To ary1.length - 1
    Dim nr As Row = dt.AddNew
    nr("等级") = ary1(i)
    For j As Integer = 1 To dt.Cols.count-1
        nr(dt.Cols(j).name) = dtsource.Compute("count(班级)", "班级 = '" & dt.Cols(j).name & "' And 总分 > " & ary3(i) & " And 总分 <= " & ary2(i) & "")
    Next
Next
MainTable = dt


 回到顶部
帅哥哟,离线,有人找我吗?
hec_wangzheng
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:100 威望:0 精华:0 注册:2017/1/23 9:15:00
  发帖心情 Post By:2017/1/23 12:00:00 [只看该作者]

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("等级", Gettype(String), 32)
For Each v As String In DataTables("学生成绩1").GetValues("班级")
    dtb.AddDef(v, Gettype(Double))
Next
dtb.Build()
Dim dt As Table = Tables("统计")
Dim dtsource As DataTable =  DataTables("学生成绩1")
Dim ary1() As String = {"550分以上", "500-550","500分以下"}
Dim ary2() As String = {750, 550}
Dim ary3() As String = {550, 500}
Dim ary4() As String = {500, 0}
For i As Integer = 0 To ary1.length - 1
    Dim nr As Row = dt.AddNew
    nr("等级") = ary1(i)
    For j As Integer = 1 To dt.Cols.count-1
        nr(dt.Cols(j).name) = dtsource.Compute("count(班级)", "班级 = '" & dt.Cols(j).name & "' And 总分 > " & ary3(i) & " And 总分 <= " & ary2(i) & "")
    Next
Next
MainTable = dt



多加一个等级之后,运行出错



 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/23 12:17:00 [只看该作者]

这样写

 

Dim ary2() As String = {750, 550, 500}
Dim ary3() As String = {550, 500, 0}


 回到顶部
帅哥哟,离线,有人找我吗?
hec_wangzheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:100 威望:0 精华:0 注册:2017/1/23 9:15:00
  发帖心情 Post By:2017/1/23 12:58:00 [只看该作者]

谢谢大神。


但是运行这个的时候,还是出错,麻烦你了


班级  姓名  总分  语文  数学
1班   a     601   108   120
2班   b     589   112   133
3班   C     551   98    145
2班   D     502   80    124
1班   E     508   90    85
3班   F     561   97    135



得不到结果 

 回到顶部
帅哥哟,离线,有人找我吗?
hec_wangzheng
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:100 威望:0 精华:0 注册:2017/1/23 9:15:00
  发帖心情 Post By:2017/1/23 13:34:00 [只看该作者]

已经解决了  谢谢

 回到顶部