以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=98463)

--  作者:34772849
--  发布时间:2017/3/30 11:48:00
--  [求助]

此主题相关图片如下:1.png
按此在新窗口浏览图片
表格数据如图所示,如何统计每个人的下站天数和夜巡天数

Dim dt As DataTable

Dim dtb As New DataTableBuilder("统计")

dtb.AddDef("检查人", Gettype(String), 16)

dtb.AddDef("下站天数", Gettype(Double))

dt = dtb.Build()

\'开始逐行累加统计

Dim lst As New Dictionary(of String ,DataRow) \'定义一个字典,用于检索每个员工在统计表中对应的行

For Each dr1 As DataRow In DataTables("sheet1").DataRows

    If dr1.IsNull("机关管理干部") = False Then 

        Dim nms() As String = dr1("机关管理干部").Split(",") 

        For Each nm As String In nms 

            Dim dr2 As DataRow

            If lst.ContainsKey(nm) 

                dr2= lst(nm) 

            Else

                dr2 = dt.AddNew() 

                dr2("检查人") = nm 

                lst.add(nm,dr2) 

            End If

            dr2("下站天数") = dr2("下站天数") + 1 

        Next

    End If

Next

 因为同一个检查地点发现两件违章需要录入两行,所以上面代码没法去除重复值

[此贴子已经被作者于2017/3/30 11:52:42编辑过]

--  作者:有点色
--  发布时间:2017/3/30 13:01:00
--  

Dim pdr As DataRow = Nothing

For Each dr1 As DataRow In DataTables("sheet1").DataRows

    If pdr Is Nothing orelse pdr("第一列") <> dr1("第一列") orelse pdr("第二列") <> dr1("第二列") Then

        msgbox("不重复")

 

    End If

 

 

    pdr = dr1

Next