以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教实例  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=115810)

--  作者:hbhb
--  发布时间:2018/3/14 21:29:00
--  请教实例
大师:请问用代码实现如下结果
通过第一列的第五行及第六行的值(固定资产,物资采购)、结合第三列、第四列的数值,如果第四列的值与第三列的值最接近,那么就在第五列写入同第六列相同的值。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.rar


--  作者:有点甜
--  发布时间:2018/3/14 21:43:00
--  

Dim dt As DataTable = DataTables("表A")
For Each dr As DataRow In dt.Select("第四列 is not null")
    Dim dr1 As DataRow = dt.Find("第三列 >= " & dr("第四列"), "第三列")
    Dim dr2 As DataRow = dt.Find("第三列 <= " & dr("第四列"), "第三列 desc")
    Dim s As String = ""

    If dr1 IsNot Nothing AndAlso dr2 IsNot Nothing Then
        If dr1("第三列")-dr("第四列") <= dr("第四列") - dr2("第三列") Then
            s = dr1("第一列")
        Else
            s = dr2("第一列")
        End If
    ElseIf dr1 IsNot Nothing Then
        s = dr1("第一列")
    ElseIf dr2 IsNot Nothing Then
        s = dr2("第一列")
    End If
    dr("第五列") = s
Next


--  作者:hbhb
--  发布时间:2018/3/14 22:39:00
--  
谢谢!为何我想了很久没有出来?怎么个思路?
--  作者:有点甜
--  发布时间:2018/3/14 22:42:00
--  

方法一:计算和第三列每一行的差值,然后得到一个最小的,然后得到对应某一行;

 

方法二:利用find查找,先排序,到大于、小于的两行,然后比较两行的差值。