以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 交叉统计表 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=170897) |
|
-- 作者:水墨青花 -- 发布时间: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") 这个是默认生成的排序截屏: 希望按照如下排序: |
|
-- 作者:有点蓝 -- 发布时间:2021/8/10 20:23:00 -- 只能是生成统计表后再手工移动列:http://www.foxtable.com/webhelp/topics/1437.htm |
|
-- 作者:水墨青花 -- 发布时间:2021/8/11 12:19:00 -- 该表使用比较频繁,每次手工移动还是比较麻烦。 可否通过代码,在生成统计表后,找一下 列名的第三层,即RRt,按照从小到大的顺序,移动呢? 因为前7列是固定的,按RRt从小到大顺序,从8列开始移动?
|
|
-- 作者:有点蓝 -- 发布时间: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 |
|
-- 作者:水墨青花 -- 发布时间:2021/8/11 17:25:00 -- 谢谢老师,但是有个问题,SortedDictionary 是按照整数来排序的, c.caption.split("_")(2) 提取出来的是 双精度小数。 可有办法按照小数来排序呢?
|
|
-- 作者:有点蓝 -- 发布时间:2021/8/11 17:30:00 --
|
|
-- 作者:水墨青花 -- 发布时间: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 |
|
-- 作者:水墨青花 -- 发布时间: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 |
|
-- 作者:水墨青花 -- 发布时间:2021/8/11 19:16:00 -- 老师,解决了!不用回复了,谢谢! |