以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于筛选重复值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=89999)

--  作者:2900819580
--  发布时间:2016/9/2 21:11:00
--  [求助]关于筛选重复值
怎么样在在一个表中筛选出某列重复的值。。。是不同的数据但又有重复的。。。
--  作者:有点蓝
--  发布时间:2016/9/3 8:58:00
--  
即不同又重复吗,这有点拗口


--  作者:狐狸爸爸
--  发布时间:2016/9/3 9:50:00
--  

除了代码,还可以通过菜单完成:

http://www.foxtable.com/webhelp/scr/1478.htm

 


--  作者:2900819580
--  发布时间:2016/9/3 10:47:00
--  
有点蓝   基本是这个意思,但是这个只能筛选出重复值,,,

Tables("A").RepeatFilter("第一列"0)

我第三列有个逻辑列,要筛选逻辑为False的重复值,怎么处理

--  作者:有点蓝
--  发布时间:2016/9/3 11:04:00
--  
Tables("表A").Filter = "第三列 = false"
Tables("表A").RepeatFilter("第一列", 0)

--  作者:2900819580
--  发布时间:2016/9/3 14:11:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:8.png
图片点击可在新窗口打开查看
2.01.01.01.124 BM-12R-M接收板(已调试) 4000 4500 PO1609001 1.01.01.01.0004A|1.01.01.01.0002C 1.02.19.0012|1.02.110.0001|1.02.14.0026
2.01.01.01.125 REC-2R-AB接收板(已调试) 4000 4500 PO1609001 1.01.01.01.0004A|1.01.01.01.0002C 1.02.19.0012|1.02.110.0001|1.02.14.0026
2.01.01.01.124 BM-12R-M接收板(已调试) 2500 2500 PO1609002 1.01.01.01.0004A|1.01.01.01.0002D 1.02.19.0012|1.02.110.0001|1.02.14.0026D
2.01.01.01.125 REC-2R-AB接收板(已调试) 2500 2500 PO1609002 1.01.01.01.0004A|1.01.01.01.0002C 1.02.19.0012|1.02.110.0001|1.02.14.0026

如上数据,,,如何 将相同料号的数量加总,另外如果订单号不相同,也要汇总,成品代码和产品代码,不想的也需要汇总。。。。怎么样处理。

成品代码和产品代码用 符号 “|” 分开,最终想得到的效果如下。 有变动的用红色字体表示出来了。。。。
2.01.01.01.124 BM-12R-M接收板(已调试) 6500 7000 PO1609001|PO1609002 1.01.01.01.0004A|1.01.01.01.0002C|1.01.01.01.0002D 1.02.19.0012|1.02.110.0001|1.02.14.0026|1.02.14.0026D
2.01.01.01.125 REC-2R-AB接收板(已调试) 6500 7000 PO1609001|PO1609002 1.01.01.01.0004A|1.01.01.01.0002C 1.02.19.0012|1.02.110.0001|1.02.14.0026

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

[此贴子已经被作者于2016/9/3 14:17:06编辑过]

--  作者:有点蓝
--  发布时间:2016/9/3 14:17:00
--  
按物料代码排序,然后顺序循环所有行,相同的进行汇总。

具体上例子说明

--  作者:2900819580
--  发布时间:2016/9/3 14:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table


有点蓝老师,请看附档。。。。

--  作者:有点蓝
--  发布时间:2016/9/3 15:17:00
--  
Dim sum As Double
Dim dr As Row = Tables("排期表").Rows(Tables("排期表").Rows.Count - 1)
If dr.IsNull("成品代码") =False Then
    code.AddRange(dr("成品代码").split("|"))
    sum = dr("排产数量")
End If
For i As Integer = Tables("排期表").Rows.Count - 2 To 0 Step -1
    Dim r As Row = Tables("排期表").Rows(i)
    If dr("物料代码") = r("物料代码") Then
        sum += r("排产数量")
        If r.IsNull("成品代码") =False Then
            For Each s As String In r("成品代码").split("|")
                If Not code.Contains(s) Then code.Add(s)
            Next
        End If
        r.Delete
    Else
        dr("排产数量") = sum
        dr("成品代码") = String.Join("|",code.ToArray)
        dr = r
        code.Clear
        If r.IsNull("成品代码") =False Then
            code.AddRange(r("成品代码").split("|"))
            sum = r("排产数量")
        End If
    End If
Next
dr("排产数量") = sum
dr("成品代码") = String.Join("|",code.ToArray)

--  作者:2900819580
--  发布时间:2016/9/3 16:42:00
--  
有点蓝老师,代码试运行没有效果。。。。
问题点应该在这里。。。但没有想有效的方法 。(每当比对物料代码不相同时dr就会重新赋值,这样dr就没办法在循环的过程中是表示最后一行了)

 Else
        dr("排产数量") = sum
        dr("成品代码") = String.Join("|",code.ToArray)
        dr = r
        code.Clear
        If r.IsNull("成品代码") =False Then
            code.AddRange(r("成品代码").split("|"))
            sum = r("排产数量")
        End If
    End If