以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求算法!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=66258)

--  作者:Bin
--  发布时间:2015/4/2 8:55:00
--  
你至少得说一下排除依据啊, 你前后两个表,完全看不出依据来.
--  作者:Bin
--  发布时间:2015/4/2 9:15:00
--  
上例子,基本上思路是,  取得所有人的名字,然后利用Select 根据日期排序获取出来
  一行行遍历 判断.

--  作者:Bin
--  发布时间:2015/4/2 9:49:00
--  
有个问题,你例子中的王五,取那一条数据是合理的?

此例子是根据你1 2楼的图,取第一条

Tables("表A").sort="姓名,开始时间"
Dim et As Date
Dim name As String
Dim rr As Row
For Each r As Row In Tables("表A")
    If name = r("姓名") Then
        If r("开始时间") >= et Then
             rr = Tables("表D").AddNew
        rr("姓名")=r("姓名")
        rr("开始时间")=r("开始时间")
        rr("结束时间")=r("结束时间")
        et = r("结束时间")
            et = r("结束时间")
        End If
    Else
        rr = Tables("表D").AddNew
        rr("姓名")=r("姓名")
        rr("开始时间")=r("开始时间")
        rr("结束时间")=r("结束时间")
        et = r("结束时间")
    End If
    name= r("姓名") 
Next


--  作者:Bin
--  发布时间:2015/4/2 9:55:00
--  
看6楼.你仔细看看你5楼的例子. 

王五 2015/3/8 0:00:00 2015/3/11 0:00:00
王五 2015/3/8 0:00:00 2015/3/12 0:00:00
王五 2015/3/9 0:00:00 2015/3/16 0:00:00


王五取谁?  

--  作者:有点甜
--  发布时间:2015/4/2 10:07:00
--  

 

[此贴子已经被作者于2015/4/2 10:17:19编辑过]

--  作者:Bin
--  发布时间:2015/4/2 10:08:00
--  
提问一开始就直接说明白要怎么做.
--  作者:Bin
--  发布时间:2015/4/2 10:11:00
--  

Tables("表A").sort="姓名,开始时间"
Dim et As Date
Dim name As String
Dim rr As Row
For Each r As Row In Tables("表A")
    If name = r("姓名") Then
        If r("开始时间") >= et Then
            rr = Tables("表D").AddNew
            rr("姓名")=r("姓名")
            rr("开始时间")=r("开始时间")
            rr("结束时间")=r("结束时间")
            et = r("结束时间")
        Else If rr("结束时间")<r("结束时间") Then
            rr("结束时间")= r("结束时间")
        End If
    Else
        rr = Tables("表D").AddNew
        rr("姓名")=r("姓名")
        rr("开始时间")=r("开始时间")
        rr("结束时间")=r("结束时间")
        et = r("结束时间")
    End If
    name= r("姓名")
Next