以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现统计table中某一列的不同值的数量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60685)

--  作者:一笑
--  发布时间:2014/11/29 10:09:00
--  如何实现统计table中某一列的不同值的数量
我能想到:如是datatable,可用getvalues函数获得集合,然后count
但如何统计table中某一列的不同值的数量?谢谢
--  作者:Bin
--  发布时间:2014/11/29 10:43:00
--  
http://www.foxtable.com/help/topics/0393.htm
--  作者:一笑
--  发布时间:2014/11/29 10:52:00
--  
count能统计列中所有值的个数,而不能统计不同值的数量。谢谢
--  作者:Bin
--  发布时间:2014/11/29 11:09:00
--  
不明白你的意思,你想要交叉统计? 分组统计?
--  作者:一笑
--  发布时间:2014/11/29 11:26:00
--  
就是一个table表,不是datatable,比如说筛选后的table表,我想统计表中"机型"列中不同机型的数量。

图片点击可在新窗口打开查看此主题相关图片如下:统计列.jpg
图片点击可在新窗口打开查看

由于不是datatable,不能使用getvalues和GetComboListString函数,该如何统计。谢谢

--  作者:逛逛
--  发布时间:2014/11/29 11:33:00
--  

方法一、遍历table统计

 

方法二、转datatable  ,取集合 (table.daatable.GetValues(列名,table.Filter)),遍历统计

 

方法三、转datatable ,用GroupTableBuilder 统计 ,再遍历读取


--  作者:一笑
--  发布时间:2014/11/29 21:29:00
--  
用了第2种方法,成功;第一种还不会,新手,麻烦指点,谢谢
--  作者:有点甜
--  发布时间:2014/11/29 21:31:00
--  

dim cnt as integer

for each r as row in tables("aaa").rows

     if r("某列") = 某值 then

         cnt = cnt +1

     end if

next

 

 


--  作者:一笑
--  发布时间:2014/11/29 22:08:00
--  
这只能统计某一个值的数量,而不是该列所有不同值的数量。比如,机号列中数量是2(B8271,B8266)。我试着写了一下,报错,麻烦指点,谢谢
For Each r As Row In Tables("筛选").rows
    Dim acs As List(Of String) = r("机号")
    Dim cnt1 As Integer = acs.Count    
Next

--  作者:y2287958
--  发布时间:2014/11/29 22:09:00
--  
堆了半天楼
咋就不愿意上个例子呢