十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
根据描述的要求是这样的吧:在每个文本框内抽一个数进行组合并从小到大排序,当一个组合出现重复数字时舍去,把无重复数字并且排好序的所有数字组合加入list1列表框。
创新互联专注于中大型企业的做网站、网站制作和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户成百上千,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!
为了实现筛选组合和排序最好增加一个函数:“排序并去重”目的是把抽出6个数字进行排序并检查是否有重复数字。如有重复返回false表示此组合舍去。因此上述代码可以如下调整:增加bb数组变量及“排序并去重”函数,bb保存抽出的6个数字,并作为函数的参数进行排序对比处理。
这是点击按钮的事件处理程序
这是增加的排序对比函数
Dim array1() As String
Dim array2() As Boolean
Dim i As Integer
Dim j As Integer
Dim str1 As String = "a,c,c,c,a,b,c,d,f,eee,eee"
array1 = Split(str1, ",")
str1 = ""
ReDim array2(UBound(array1))
For i = 0 To UBound(array1)
array2(i) = False
Next
For i = 0 To UBound(array1) - 1
If array2(i) = False Then
For j = i + 1 To UBound(array1)
If array1(i) = array1(j) And array2(j) = False Then
array2(j) = True
End If
Next j
End If
Next i
For i = 0 To UBound(array1)
If array2(i) = False Then
str1 = str1 array1(i) ","
End If
Next i
If str1 "" Then
str1 = Strings.Left(str1, Len(str1) - 1)
End If
比如数组a。里面有5个值,其中有3个是重复的?
如果这样的话,很好办哦。
新建一个数组b,然后遍历要去除的数组a,
从a中把每一个都取出来,和新建的b里面的去比,如果有相同的,则不放入b,
否则就放入数组b,直到循环结束。
具体思路:
实现2次循环,一个数组循环2次,外循环数组,得出一个值a,然后内循环,将a与自身所在的数组的值对比一次,计算出现次数或者设置为空,如果计算出现次数可以计算次数大于2时候,进行删除操作。如果设置为空,等于进行删除操作。
具体代码如下:
Option Explicit
Function Delete3(Arr As Variant) As Variant
Dim i As Integer
For i = LBound(Arr) To UBound(Arr)
If i UBound(Arr) Then Exit For //累计器大于数组长度,退出循环
If Arr(i) = 3 Then
Do
Dim j As Integer
For j = i To UBound(Arr) - 1 //数组从新赋值
Arr(j) = Arr(j + 1)
Next j
If LBound(Arr) = UBound(Arr) Then
Delete3 = Empty //删除相同元素
Exit Function
End If
ReDim Preserve Arr(LBound(Arr) To UBound(Arr) - 1)
//从新定义数组长度
If i UBound(Arr) Then Exit For //累计器大于数组长度,退出循环
Loop While Arr(i) = 3
End If
Next i
Delete3 = Arr
End Function
Sub Test()
Delete3 (Array(3, 3, 3, 3, 1, 3, 7, 3, 3, 3, 9, 3, 3))
End Sub
测试结果:验证方式通过计算删除元素后的数组长度确认实现功能,输入了Array(3, 3, 3, 3, 1, 3, 7, 3, 3, 3, 9, 3, 3),长度为13(从1开始算),删除后长度为3,而且只有3个元素是不重复的。说明功能正常。