假设你的数组为 x(100)n=100for i=1 to nfor j=i+1 to nif x(i)=x(j) then for k=j to n-1 x(j)=x(j+1) next k n=n-1end ifnext jnext i'以上代码是去除重复元素for i=1 to nif x(i)=8 then for j=i to n-1 x(j)=x(j+1) next j n=n-1end ifnext i'以上代码是去除大于等于8的数
成都创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元拜城做网站,已为上家服务,为拜城各地企业和个人服务,联系电话:028-86922220
比如数组a。里面有5个值,其中有3个是重复的?
如果这样的话,很好办哦。
新建一个数组b,然后遍历要去除的数组a,
从a中把每一个都取出来,和新建的b里面的去比,如果有相同的,则不放入b,
否则就放入数组b,直到循环结束。
下面是去重的,你要把text1的数组都去的话 需要分拆开来可以用split函数。
Private Sub Command1_Click()
Dim s As String, i As Integer, n
n = InputBox("输入要去重")
i = 1
Do While i Len(n)
n = Mid(n, 1, i) Replace(Right(n, Len(n) - i), Right(s, 1), "")
i = i + 1
Loop
Debug.Print n
End Sub
具体思路:
实现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个元素是不重复的。说明功能正常。
根据描述的要求是这样的吧:在每个文本框内抽一个数进行组合并从小到大排序,当一个组合出现重复数字时舍去,把无重复数字并且排好序的所有数字组合加入list1列表框。
为了实现筛选组合和排序最好增加一个函数:“排序并去重”目的是把抽出6个数字进行排序并检查是否有重复数字。如有重复返回false表示此组合舍去。因此上述代码可以如下调整:增加bb数组变量及“排序并去重”函数,bb保存抽出的6个数字,并作为函数的参数进行排序对比处理。
这是点击按钮的事件处理程序
这是增加的排序对比函数