请问如何去除一个数组中的重复项?谢谢

kwxx 2005-08-02 04:45:25
比如定义一个数组
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,请问如何实现?
...全文
397 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechnoFantasy 2005-08-02
  • 打赏
  • 举报
回复
创建一个collection,然后把数组中的数作为key往里面加,因为key不能重复。所以如果有重复的加入会出错,你用一个on error resume next继续,最后出来的collection里面就是不重复的全部数字了。
3q2008Com 2005-08-02
  • 打赏
  • 举报
回复
DooDu(杜霖:I want,I can.(MmMVP马甲)(准备闭关……)) ( ) 信誉:100

方法好
DooDu 2005-08-02
  • 打赏
  • 举报
回复
再开辟一个数组,记录存在的项,如果重复,不记录
sdrcxzy 2005-08-02
  • 打赏
  • 举报
回复
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
crycoming 2005-08-02
  • 打赏
  • 举报
回复
返回值中的数组(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 Function
crycoming 2005-08-02
  • 打赏
  • 举报
回复
把string 该成Long 看错了
crycoming 2005-08-02
  • 打赏
  • 举报
回复
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

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧