Foxtable(狐表)用户栏目专家坐堂 → 关于系统命令排除重复值的扩展?


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

主题:关于系统命令排除重复值的扩展?

帅哥哟,离线,有人找我吗?
wh420
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
关于系统命令排除重复值的扩展?  发帖心情 Post By:2016/7/20 14:11:00 [只看该作者]

日常工作----排序与筛选---高级---重复筛选----排除重复值,此系统命令Syscmd.Filter.HideSameValues()如何拓展一下,让他对有空格的也排重?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 14:17:00 [只看该作者]

 本来,对于空值的列,就有区分的功能。如果要自己做,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=83243&skin=0

 


 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/7/20 14:21:00 [只看该作者]

我要排重的就是单列,是对空格也有排重效果,不是空值的列。


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

其实这四行都是重复的,只是有的中间有空格,有的前面有空格,有的后面有空格。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 14:29:00 [只看该作者]

方法一:直接把空格替换掉

 

For Each dr As DataRow In DataTables("表A").datarows
    dr("第一列") = dr("第一列").replace(" ", "")
Next


 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/7/20 14:31:00 [只看该作者]

上传文件,请老师帮忙看看,点窗口中的“排重”按钮实现排重
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目33.rar



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


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/7/20 14:32:00 [只看该作者]

不能用替换的方法,如果是中文还好,如果是英文的,把单词之间的空格都替换掉,那排重后的英语句子都粘在一起了。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 14:33:00 [只看该作者]

方法二:编写代码处理筛选

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列"
For Each dr As DataRow In DataTables("表A").Select("", cs)
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c).replace(" ","") <> dr(c).replace(" ", "") Then
                flag = True
                Exit For
            End If
        Next
        If flag Then
            If count > 1 Then
                idx &= idx_temp
            End If
            count = 1
            idx_temp = ""
        Else
            count += 1
            idx_temp &= dr("_Identify") & ","
        End If
    Else
        count += 1
    End If
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("表A").filter = "_Identify not In (" & idx.trim(",") & ")"


 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/7/20 14:39:00 [只看该作者]

好使,不过代码有点看不太懂。老师能给说一下大概原理吗?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/20 14:44:00 [只看该作者]

 对表格进行排序,循环每一行,如果当前一行数据跟上一行数据不一样,就记录当前行的_Identify,最后得到的就是每种不同数据的第一行。

 

 或者这样这样理解, 对表格进行排序,循环每一行,如果当前一行数据跟上一行数据不一样,如果是第一行,就不记录,接下来的,全部记录,最后就得到全部多余重复的数据。


 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10586 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/7/20 15:02:00 [只看该作者]

明白了。多谢老师。

 回到顶部
总数 14 1 2 下一页