以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 找出每行3个以上的重复数字 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192947) |
-- 作者:sloyy -- 发布时间:2024/8/4 23:56:00 -- 找出每行3个以上的重复数字 如图:有18行数据,用什么办法能够迅速找出每行3个以上的重复数字?
|
-- 作者:y2287958 -- 发布时间:2024/8/5 8:02:00 -- 没看明白 |
-- 作者:有点蓝 -- 发布时间:2024/8/5 8:51:00 -- 6选3的不重复组合个数是120种。33选3的不重复组合个数是5456种。没有快速的方法,只能所有组合都逐一搜索一遍 |
-- 作者:sloyy -- 发布时间:2024/8/5 9:27:00 -- 我以为有特殊的算法可以缩减工作量 |
-- 作者:y2287958 -- 发布时间:2024/8/5 9:32:00 -- 说说规则,还是看不明白 |
-- 作者:sloyy -- 发布时间:2024/8/5 16:23:00 -- 就是在一行6个数字里面选3到4个数字,与其他行对比,看是否有重复,如果有重复就标出这3个数字 |
-- 作者:y2287958 -- 发布时间:2024/8/5 16:31:00 -- 与其他行对比,是怎样的对比 |
-- 作者:sloyy -- 发布时间:2024/8/5 21:53:00 -- 看其他行,是否有这3个数字 |
-- 作者:y2287958 -- 发布时间:2024/8/5 23:27:00 -- 也就是其他行所有列,不包括当前行呗。明天上班看看,有办法。 |
-- 作者:y2287958 -- 发布时间:2024/8/6 7:54:00 -- Dim 列名集 As New List(Of String)({"第一列", "第二列", "第三列", "第四列", "第五列"}) Dim 集合 As New List(Of Integer)(Tables("表A10").rows.Select(Function(行) CInt(行("第一列")))) For Each 列名 As String In 列名集.skip(1) 集合.AddRange(Tables("表A10").rows.Select(Function(行) CInt(行(列名)))) Next 集合 = 集合.GroupBy(Function(元素) 元素).where(Function(元素) 元素.count > 3).Select(Function(元素) 元素.key).tolist For Each 行 As Row In Tables("表A10").rows 行("第六列") = String.Join(" ", 集合.Intersect(列名集.select(Function(列名) CInt(行(列名))))) Output.Show(String.Join(" ", 集合.Intersect(列名集.select(Function(列名) CInt(行(列名)))))) Next
|