Foxtable(狐表)用户栏目专家坐堂 → [求助]交叉统计垂直占比


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

主题:[求助]交叉统计垂直占比

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


加好友 发短信
等级:七尾狐 帖子:1691 积分:16460 威望:0 精华:0 注册:2013/7/31 13:03:00
[求助]交叉统计垂直占比  发帖心情 Post By:2015/9/8 15:17:00 [只看该作者]

使用交叉统计分析垂直占比,水平分组列不能大于一列吗?

 


图片点击可在新窗口打开查看此主题相关图片如下:交叉统计垂直占比.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:交叉统计疑问.foxdb


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/8 15:41:00 [只看该作者]

是有点问题,要用代码处理一下。

 

Dim g As New CrossTableBuilder("统计表1", DataTables("交叉统计测试"))
g.HGroups.AddDef("商品")
g.HGroups.AddDef("品名")
g.VGroups.AddDef("尺寸名")
g.Totals.AddDef("数量", "数量")
g.VerticalTotal = True
g.VerticalProportion = True
g.Build()

For Each c As Col In Tables("统计表1").Cols
    If c.Caption Like "*占比" Then
        Dim name As String = c.name.Replace("vp", "")
        Dim sum As Double = Tables("统计表1").Compute("sum(" & name & ")", "商品 <> '合计'")
        For Each r As Row In Tables("统计表1").Rows
            r(c.name) = r(name) / sum
        Next
    End If
   
Next
MainTable = Tables("统计表1")


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


加好友 发短信
等级:七尾狐 帖子:1691 积分:16460 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2015/9/11 10:42:00 [只看该作者]

谢谢。

二楼代码Dim name As String = c.name.Replace("vp", "")中的作用不太明白,尤其那个vp,怎么来的?

 

处理统计结果的表很有用。如果想生成水平份额代码该如何写?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/11 11:00:00 [只看该作者]

 水平份额直接写


Dim g As New CrossTableBuilder("统计表1", DataTables("交叉统计测试"))
g.HGroups.AddDef("商品")
g.HGroups.AddDef("品名")
g.VGroups.AddDef("尺寸名")
g.Totals.AddDef("数量", "数量")
g.VerticalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
g.Build()

For Each c As Col In Tables("统计表1").Cols
    If c.Caption Like "*占比" Then
        Dim name As String = c.name.Replace("vp", "")
        Dim sum As Double = Tables("统计表1").Compute("sum(" & name & ")", "商品 <> '合计'")
        For Each r As Row In Tables("统计表1").Rows
            r(c.name) = r(name) / sum
        Next
    End If
   
Next
MainTable = Tables("统计表1")


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


加好友 发短信
等级:七尾狐 帖子:1691 积分:16460 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2015/9/11 11:40:00 [只看该作者]

这个g.HorizontalProportion = True我知道。

之所以求水平份额代码,是为了进一步学习增长处理统计结果表的知识。

另外,垂直占比代码中的“vp”是怎么回事?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/11 11:46:00 [只看该作者]

 你查看一下生成表的表结构就知道了

 

 水平份额,就是先循环每一列,合计总额,然后再逐列计算。

 

http://www.foxtable.com/help/topics/0193.htm

 


 回到顶部