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


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

主题:交叉统计表

美女呀,离线,留言给我吧!
水墨青花
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
交叉统计表  发帖心情 Post By:2021/8/10 19:43:00 [只看该作者]

老师,您好:

在生成交叉统计表时,是否可以对于下述 红色的垂直分组列,进行排序要求呢?
【检测项】希望按照要求排序,而不是默认的首字母。
【RRt】希望按照数值大小,从小到大排序,而不是默认的从大到小排序。
谢谢!

Dim g As New CrossTableBuilder("统计表1", DataTables("检测数据"))
g.HGroups.AddDef("样品批号")
g.HGroups.AddDef("规格")
g.HGroups.AddDef("条件")
g.HGroups.AddDef("包装")
g.HGroups.AddDef("放置")
g.HGroups.AddDef("取样点")
g.HGroups.AddDef("修订")
g.VGroups.AddDef("检测项")
g.VGroups.AddDef("杂质归属")
g.VGroups.AddDef("RRt")
g.Totals.AddDef("百分比", "百分比")
g.OrderByTotal = True
g.Decimals = 2
g.Build()
MainTable = Tables("统计表1")

这个是默认生成的排序截屏:
图片点击可在新窗口打开查看

希望按照如下排序:
图片点击可在新窗口打开查看

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


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

只能是生成统计表后再手工移动列:http://www.foxtable.com/webhelp/topics/1437.htm

 回到顶部
美女呀,离线,留言给我吧!
水墨青花
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
  发帖心情 Post By:2021/8/11 12:19:00 [只看该作者]

该表使用比较频繁,每次手工移动还是比较麻烦。

可否通过代码,在生成统计表后,找一下 列名的第三层,即RRt,按照从小到大的顺序,移动呢?

因为前7列是固定的,按RRt从小到大顺序,从8列开始移动?

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/11 13:44:00 [只看该作者]

Dim dics As new SortedDictionary(Of Integer, string)
for each c as col in tabels("统计表").cols
if c.caption like "有关物质_" then
dics.add(cint(c.caption.split("_")(2)),c.name)
end if
next
For i As Integer = dics.keys.count - 1 to 0 step -1
tabels("统计表").cols(dics.keys(i)).move(7)
Next

 回到顶部
美女呀,离线,留言给我吧!
水墨青花
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
  发帖心情 Post By:2021/8/11 17:25:00 [只看该作者]

谢谢老师,但是有个问题,SortedDictionary 是按照整数来排序的, c.caption.split("_")(2) 提取出来的是 双精度小数。

可有办法按照小数来排序呢?

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/11 17:30:00 [只看该作者]

Dim dics As new SortedDictionary(Of double, string)

 回到顶部
美女呀,离线,留言给我吧!
水墨青花
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
  发帖心情 Post By:2021/8/11 18:18:00 [只看该作者]

老师,SortedDictionary(Of double, string) 如何反向排序呢?因为不能用Keys来索引字典内容了。

For i As Integer = dics.keys.count - 1 to 0 step -1
tabels("统计表").cols(dics.keys(i)).move(7)
Next

 回到顶部
美女呀,离线,留言给我吧!
水墨青花
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
  发帖心情 Post By:2021/8/11 18:39:00 [只看该作者]

另外,统计列是通过 g.Totals.AddDef("百分比", "百分比") 添加的,c.caption 默认为 “百分比_1”, "百分比_2",.....

通过如下方式建立的字典是空的。

if c.caption like "有关物质_" then
dics.add(cint(c.caption.split("_")(2)),c.name)
end if

 回到顶部
美女呀,离线,留言给我吧!
水墨青花
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:199 积分:1699 威望:0 精华:0 注册:2019/3/1 11:38:00
  发帖心情 Post By:2021/8/11 19:16:00 [只看该作者]

老师,解决了!不用回复了,谢谢!

 回到顶部