大家好
现有一数组为(2,3,5,3,2,5,6,1)
现在我要筛选
即把数据唯一的提出来存入另一数组(即把有重复的数据略过重复,无重复的则保留)
结果应该是(2,3,5,6,1)
顺序无所谓
请问如何实现?

解决方案 »

  1.   

    我来试下
    Private Sub Command1_Click()
    Dim a(5) As Long
    a(0) = 1
    a(1) = 1
    a(3) = 5
    a(2) = 5
    a(4) = 2
    a(5) = 4
    Dim b() As String 
    ReDim b(UBound(a)) As String
    Dim c As Long '该变量用来判断总共存人b数组多少个变量
    Dim d As Longc = 0
    For z = 0 To UBound(a) '首先做个循环
        d = 0    For x = 0 To UBound(b) - 1
           If Val(b(x)) = a(z) Then
              d = 1 '只要b数组有任何一个数字于a数组的相同,判断值d就为1
           End If
        Next   If d = 0 Then
        
          b(c) = a(z)
          c = c + 1
       End If
       d = 0
    NextMsgBox b(0) & " " & b(1) & " " & b(2) & " " & b(3)
    End Sub
      

  2.   

    tk600158 的代码基本可以,但是如果数组元素中出现0的话,就会出现错误
    下面给出适合任何元素的代码.'在新建窗体中加command1控件.Private Sub Command1_Click()
    Dim A() As String '原数组
    Dim B() As String '筛选后的数组
    Dim i As Integer, j As Integer
    Dim count As Integer 'B数组的元素个数'初始化
    ReDim B(0)
    A() = Split("1 2 3 4 5 1 2 3 1 3 0 6")
    B(0) = A(0)'筛选
    For i = 1 To UBound(A)
      For j = 0 To UBound(B)
        If A(i) = B(j) Then Exit For '出现相同直接退出小循环.
        If j = UBound(B) Then
          count = count + 1
          ReDim Preserve B(count)
          B(count) = A(i)
        End If
      Next
    Next'输出到窗口
    Print "原数组"
    For i = 0 To UBound(A)
       Print A(i) & "--";
    Next
    Print
    Print "筛选后的数组"
    For i = 0 To UBound(B)
       Print B(i) & "--";
    NextEnd Sub
      

  3.   

    给你一个偏方:利用 ListBox .
    Private Declare Function SendMessagebyString Lib _
    "user32" Alias "SendMessageA" (ByVal hWND As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找
    Dim i As IntegerList1.Sorted = True
    For i = 0 To Ubound(a)
        If SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, CStr(a(i))) < 0 Then
             List1.AddItem CStr(a(i))
        End If
    Next i
    Redim b(List1.ListCount - 1)
    For i = 0 To List1.ListCount - 1
        b(i) = List1.List(i)
    Next i