大家好
现有一数组为(2,3,5,3,2,5,6,1)
现在我要筛选
即把数据唯一的提出来存入另一数组(即把有重复的数据略过重复,无重复的则保留)
结果应该是(2,3,5,6,1)
顺序无所谓
请问如何实现?
现有一数组为(2,3,5,3,2,5,6,1)
现在我要筛选
即把数据唯一的提出来存入另一数组(即把有重复的数据略过重复,无重复的则保留)
结果应该是(2,3,5,6,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
下面给出适合任何元素的代码.'在新建窗体中加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
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