以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助状态栏 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158014) |
||||
-- 作者:piratesytu -- 发布时间:2020/11/5 9:48:00 -- 求助状态栏 ![]() ![]() 某列被选中后,自动统计此列中各个单元格内容的数量及占比,比如:学历列,高中、大专、本科数量、及占比,在状态栏显示。请版主指导 |
||||
-- 作者:有点蓝 -- 发布时间:2020/11/5 10:02:00 -- 参考:http://www.foxtable.com/webhelp/topics/0647.htm,占比留作业,自行补上
|
||||
-- 作者:piratesytu -- 发布时间:2020/11/5 11:47:00 -- 谢谢超版,另有两个问题,如何设置选定特定列才会在状态栏统计显示,比如选定学历、建制列才统计显示,其他列不统计显示,省得大量数据运算出现的类似死机问题。第二状态栏本有显示行数的状态栏,如何选定行的时候不统计列的情况呢?
[此贴子已经被作者于2020/11/5 11:47:49编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/5 11:54:00 -- 1、判断列参考:http://www.foxtable.com/webhelp/topics/0646.htm 2、没有办法判断。选中行肯定也就选中了列,反之亦然。 或者考虑显示到Message1或Message3
|
||||
-- 作者:piratesytu -- 发布时间:2020/11/5 14:33:00 -- 这个方法只是让列无法选中,不利于操作啊,比较有很多时候是要选中这些列的,能不能选中不统计呢 |
||||
-- 作者:有点蓝 -- 发布时间:2020/11/5 14:50:00 -- 不用那么死板咯,帮助是让列无法选中,那不就是可以判断是哪一个列了吗?不是让您照抄代码,学会帮助怎么判断是某一列的! |
||||
-- 作者:piratesytu -- 发布时间:2020/11/5 14:52:00 -- 新手不太会,代码请蓝版帮忙指导一下啊 |
||||
-- 作者:有点蓝 -- 发布时间:2020/11/5 14:56:00 -- \'获得机密列的位置,保存到变量c中 Dim c As integer = e.Table.Cols("学历").Index \'判断即将选定的区域是否包括机密列 If e.NewRange.LeftCol <= c And e.NewRange.RightCol >= c Then 说明包含学历列,把计算代码放到这里 End If |
||||
-- 作者:piratesytu -- 发布时间:2020/11/5 17:25:00 -- Dim c As Col = e.Table.Cols(e.NewRange.LeftCol) Dim dict As new Dictionary(of String,Integer) Dim r As Row For i As Integer = e.NewRange.TopRow To e.NewRange.BottomRow r = e.Table.Rows(i) If dict.ContainsKey(r(c.Name)) Then dict(r(c.Name)) += 1 Else dict.Add(r(c.Name),1) End If Next Dim f As Integer = e.Table.Cols("学历").Index If e.NewRange.LeftCol <= f And e.NewRange.RightCol >= f Then Dim s As String = "" For Each key As String In dict.Keys s = s & ";" & key & ":" & dict(key) StatusBar.Message2 = s Next End If 汗啊,这下不选中列状态栏也显示”学历“列的各种类型学历的比例,怎么解决呢
|
||||
-- 作者:有点蓝 -- 发布时间:2020/11/5 17:30:00 -- 要单独选中”学历“列才处理? If e.NewRange.LeftCol = f And e.NewRange.RightCol = f Then
|