Foxtable(狐表)用户栏目专家坐堂 → 相同数据合并


  共有3142人关注过本帖树形打印复制链接

主题:相同数据合并

帅哥哟,离线,有人找我吗?
狐表(小白)
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4023 威望:0 精华:0 注册:2019/9/17 10:06:00
相同数据合并  发帖心情 Post By:2020/9/18 23:24:00 [只看该作者]

老师。以下功能如何实现?

表A

列一      列二     列三
A          1,2          15
B           3            12
A           2,3,4       6
C           1,4          9
A           7,8          3
C           5            17

以列一的名称和列三的数值为条件,筛选出列一相同名字的所有行,按照列三最大的值和最小的值进行两行两行的相加合并,同时合并列二的字符串。完成后删除合并前的行。结果如下:
列一      列二         列三
A          1,2,7,8        18               等于第1行加第5行
A           2,3,4           6                没有行与其相加等于原来的行
B           3                12               没有行与其相加等于原来的行
C           1,4,5          26               等于第4行加第6行


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111422 积分:567186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/19 9:03:00 [只看该作者]

A为什么是第1行加第5行?而不是第1行加第3行?

 回到顶部
帅哥,在线噢!
linyunu1
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:163 积分:1100 威望:0 精华:0 注册:2020/1/16 11:58:00
  发帖心情 Post By:2020/9/19 12:14:00 [只看该作者]

Dim s As New List(Of String)
Dim drs As List(Of DataRow) = DataTables("表A").Select("","第一列,第三列")
For Each dr As DataRow  In drs
    Dim dr1 As DataRow = DataTables("表A").Find("第一列 = '" & dr("第一列") & "'","第三列 desc",1)
    If dr1 IsNot Nothing And s.Contains(dr("第一列")) = False Then
        s.Add(dr("第一列"))
        dr("第二列") = dr("第二列") & "," & dr1("第二列")
        dr("第三列") = dr("第三列") + dr1("第三列")
        dr1.delete()
        dr.Save()
    End If
Next
[此贴子已经被作者于2020/9/19 12:18:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4023 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/9/19 12:25:00 [只看该作者]

因为当第一列相同名字的有多行时,用第三列最大值加最小值得出的值总体来说分配的最合理!

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111422 积分:567186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/19 13:55:00 [只看该作者]

Dim ss As List(Of String) = DataTables("表C").GetValues("第一列")
Dim dr,dr1 As DataRow
For Each s As String  In ss
    Dim drs As List(Of DataRow) = DataTables("表C").Select("第一列 = '" & s & "'","第三列")
    Do While drs.Count > 1
        dr = drs(0)
        dr1 = drs(drs.Count - 1)
        dr("第二列") = dr("第二列") & "," & dr1("第二列")
        dr("第三列") = dr("第三列") + dr1("第三列")
        drs.Remove(dr)
        drs.Remove(dr1)
        dr1.Delete
    Loop
Next

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4023 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/9/19 14:24:00 [只看该作者]

多谢蓝老师。结果很完美!图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4023 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/9/20 17:44:00 [只看该作者]

蓝老师,如果按照之前的功能要求,增加一个第四列同第一列一起做区分,如何实现以下目的?谢谢!
表A
列一      列二     列三       列四
A          1,2          15             赵
A           2,3,4        6             赵
A           7,8          3              李
A           7             3              张
B           3            12             赵
B            4            8              李
C           1,4          9              赵
C           5            17             赵

达到目的:
列一      列二         列三        列四
A          1,2,3,4       21             赵
A           7,8             3             李 
A           7               3              张
B           3               12            赵
B           4               8              李
C          1,4,5          26            赵


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111422 积分:567186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/20 21:07:00 [只看该作者]

Dim ss As List(Of String()) = DataTables("表C").GetValues("第一列|")
Dim dr,dr1 As DataRow
For Each s As String()  In ss
    Dim drs As List(Of DataRow) = DataTables("表C").Select("第一列 = '" & s(0) & "' and  = '" & s(1) & "'","第三列")
    Do While drs.Count > 1
        dr = drs(0)
        dr1 = drs(drs.Count - 1)
        dr("第二列") = dr("第二列") & "," & dr1("第二列")
        dr("第三列") = dr("第三列") + dr1("第三列")
        drs.Remove(dr)
        drs.Remove(dr1)
        dr1.Delete
    Loop
Next

 回到顶部
帅哥哟,离线,有人找我吗?
狐表(小白)
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:371 积分:4023 威望:0 精华:0 注册:2019/9/17 10:06:00
  发帖心情 Post By:2020/9/20 21:57:00 [只看该作者]

谢谢

 回到顶部