请问如何去除一个数组中的重复项?谢谢
比如定义一个数组
Dim a(10) as Long
For i = 1 to 5
a (i) = 1
Next i
For i = 6 to 10
a (i) = 2
Next i
于是数组a的元素有五个1五个2,现在希望只保留两个元素,一个1一个2,请问如何实现?
问题点数:100、回复次数:7Top
1 楼crycoming(瞎编)回复于 2005-08-02 16:56:47 得分 30
Function Distinct(a() As String) As String()
Dim i As Long
Dim ii As Long
Dim b() As String
Dim bExist As Boolean
ReDim b(0) As String
For i = LBound(a) To UBound(a)
bExist = False
For ii = LBound(a) To UBound(a)
If b(ii) = a(i) Then bExist = True: Exit For
Next
If bExist = False Then
ReDim Preserve b(UBound(b) + 1) As String
b(UBound(b)) = a(i)
End If
Next
Distinct = b
End Function
Top
2 楼crycoming(瞎编)回复于 2005-08-02 16:58:35 得分 0
把string 该成Long 看错了Top
3 楼crycoming(瞎编)回复于 2005-08-02 17:01:23 得分 0
返回值中的数组(0)是无效的
Function Distinct(a() As Long) As Long()
Dim i As Long
Dim ii As Long
Dim b() As Long
Dim bExist As Boolean
ReDim b(0) As Long
For i = LBound(a) To UBound(a)
bExist = False
For ii = LBound(b) To UBound(b)
If b(ii) = a(i) Then bExist = True: Exit For
Next
If bExist = False Then
ReDim Preserve b(UBound(b) + 1) As Long
b(UBound(b)) = a(i)
End If
Next
Distinct = b
End FunctionTop
4 楼sdrcxzy(大向)回复于 2005-08-02 17:03:23 得分 10
for i =1 to k
for j =i+1 to k-1
if a(i)=a(j) then
for m=j+1 to k
a(m-1)=a(m)
next m
k=k-1
endif
next j
next i
a(1)……a(k)
没调试过,自己改改。不是很懂vb
Top
5 楼DooDu(杜霖:I want,I can(开关拉))回复于 2005-08-02 17:04:12 得分 30
再开辟一个数组,记录存在的项,如果重复,不记录Top
6 楼hot1kang1(网站制作,系统开发,记得-http://3q2008.Com)回复于 2005-08-02 17:21:33 得分 0
DooDu(杜霖:I want,I can.(MmMVP马甲)(准备闭关……)) ( ) 信誉:100
方法好Top
7 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2005-08-02 17:34:13 得分 30
创建一个collection,然后把数组中的数作为key往里面加,因为key不能重复。所以如果有重复的加入会出错,你用一个on error resume next继续,最后出来的collection里面就是不重复的全部数字了。Top




