VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2803|回复: 3

数值排序与重组 请求帮助!!

[复制链接]
发表于 2021-8-22 18:32:45 | 显示全部楼层 |阅读模式
本帖最后由 libo349 于 2021-8-22 18:34 编辑

比如一下数据
要求一: 每行 按照 最小到最大 排序  
要求二:每个数值 只能出现一次 比如 第一行有 01 那么其他行 就不能出现01 有就删除
请问这么实现!
02 03 06 08 11 12 14 15 18 19 23 28
01 02 03 04 07 08 09 13 15 19 21 23
02 05 06 07 11 12 13 15 19 25 31 32
01 02 04 07 12 13 17 20 23 24 27 28
01 06 08 11 12 14 17 21 29 30 32 33
01 02 05 09 14 16 17 19 24 29 31 33
04 06 08 09 10 15 19 21 24 27 29 32
01 02 07 13 14 15 20 26 27 31 32 33
04 05 07 08 10 12 17 23 24 26 31 32
02 03 04 05 06 12 19 23 25 26 28 32
01 07 11 15 18 20 24 25 26 27 29 30
02 05 06 07 09 10 12 16 20 25 26 33
02 06 07 08 13 15 17 19 21 22 26 30
01 05 07 10 14 15 21 22 23 27 30 32
01 06 12 14 15 16 19 21 22 23 27 29
03 04 05 14 15 16 17 18 20 26 30 31
01 02 03 05 10 15 18 20 23 26 27 31
发表于 2021-8-23 11:02:56 | 显示全部楼层
本帖最后由 admin6677 于 2021-8-23 11:20 编辑

用循环,定义一个数组,循环过滤之后就所剩无几了。排序我没弄,你自己排吧


  1. Private Sub Form_Load()
  2.   arrText = ""
  3.   arrText = arrText & "02 03 06 08 11 12 14 15 18 19 23 28" & vbCrLf
  4.   arrText = arrText & "01 02 03 04 07 08 09 13 15 19 21 23" & vbCrLf
  5.   arrText = arrText & "02 05 06 07 11 12 13 15 19 25 31 32" & vbCrLf
  6.   arrText = arrText & "01 02 04 07 12 13 17 20 23 24 27 28" & vbCrLf
  7.   arrText = arrText & "01 06 08 11 12 14 17 21 29 30 32 33" & vbCrLf
  8.   arrText = arrText & "01 02 05 09 14 16 17 19 24 29 31 33" & vbCrLf
  9.   arrText = arrText & "04 06 08 09 10 15 19 21 24 27 29 32" & vbCrLf
  10.   arrText = arrText & "01 02 07 13 14 15 20 26 27 31 32 33" & vbCrLf
  11.   arrText = arrText & "04 05 07 08 10 12 17 23 24 26 31 32" & vbCrLf
  12.   arrText = arrText & "02 03 04 05 06 12 19 23 25 26 28 32" & vbCrLf
  13.   arrText = arrText & "01 07 11 15 18 20 24 25 26 27 29 30" & vbCrLf
  14.   arrText = arrText & "02 05 06 07 09 10 12 16 20 25 26 33" & vbCrLf
  15.   arrText = arrText & "02 06 07 08 13 15 17 19 21 22 26 30" & vbCrLf
  16.   arrText = arrText & "01 05 07 10 14 15 21 22 23 27 30 32" & vbCrLf
  17.   arrText = arrText & "01 06 12 14 15 16 19 21 22 23 27 29" & vbCrLf
  18.   arrText = arrText & "03 04 05 14 15 16 17 18 20 26 30 31" & vbCrLf
  19.   arrText = arrText & "01 02 03 05 10 15 18 20 23 26 27 31" & vbCrLf

  20.     Dim i As Integer, k As Integer
  21.     Dim linetxt() As String, itemtxt() As String, fixTxt As String
  22.     linetxt = Split(arrText, vbCrLf)
  23.    
  24.     fixTxt = ""
  25.     For i = 0 To UBound(linetxt)
  26.       itemtxt() = Split(linetxt(i), " ")
  27.       For k = 0 To UBound(itemtxt)
  28.         If InStr(1, fixTxt, itemtxt(k)) Then
  29.           Debug.Print "重复:" & itemtxt(k) & vbCrLf;
  30.         Else
  31.           Debug.Print itemtxt(k) & vbCrLf;
  32.           fixTxt = fixTxt & itemtxt(k) & " "
  33.         End If
  34.       Next
  35.           fixTxt = fixTxt & vbCrLf
  36.     Next
  37.     Debug.Print fixTxt & vbCrLf;
  38. End Sub
复制代码

  1. 02 03 06 08 11 12 14 15 18 19 23 28
  2. 01 04 07 09 13 21
  3. 05 25 31 32
  4. 17 20 24 27
  5. 29 30 33
  6. 16
  7. 10
  8. 26




  9. 22







复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-23 20:18:18 | 显示全部楼层
admin6677 发表于 2021-8-23 11:02
用循环,定义一个数组,循环过滤之后就所剩无几了。排序我没弄,你自己排吧

我算是见识了 ,像您这样的思维可以算的上 顶尖的了  我自学20年 都没这思维逻辑,本来打算1个1个循环判断,发现你这方法 效率高的多! 我看过后说实话 我都差点跪了!
回复 支持 反对

使用道具 举报

发表于 2021-9-17 17:16:36 | 显示全部楼层
libo349 发表于 2021-8-23 20:18
我算是见识了 ,像您这样的思维可以算的上 顶尖的了  我自学20年 都没这思维逻辑,本来打算1个1个循环判 ...

还有一个高级一点的,用数组和下标、累计个数,大于0就是已经存在的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2023-4-2 07:26

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表