如何用vb比较两组数字并找出他们互没有的数字?

2025年03月23日 00:59
有5个网友回答
网友(1):

dim cmp() as integer

Sub CompareNumber()
ReDim Preserve cmp(0)

dim arr1(3) as integer,arr2(3) as integer
dim i as integer,f as string

arr1(0) = 2:arr1(1) = 3:arr1(2) = 4:arr1(3) = 6
arr2(0) = 2:arr2(1) = 6:arr2(2) = 7:arr2(3) = 8

for i = 0 to ubound(arr2):f = f & trim(str(arr2(i))):next i

for i = 0 to ubound(arr1)
if len(replace(f,trim(str(arr1(i))),""))next i

for i = 0 to ubound(arr1):f = f & trim(str(arr1(i))):next i

for i = 0 to ubound(arr2)
if len(replace(f,trim(str(arr2(i))),""))next i

'输出
for i = 1 to ubound(cmp):list1.additem trim(str(cmp(i))):next i
end sub

function IsRepeat(n as integer)
isrepeat = false:dim i as integer
for i = 0 to ubound(cmp)
if cmp(i)=n then isRepeat = true:exit for
next i
end function
-------
主程序调用:comparenumber()

private sub command1_click()
comparenumber
end sub

cmp()为全局变量

没有测试 如有错误请指出

主要思路:先把数组归并在一起,然后从另一个数组中依次读出一个数字,并在原字符串中替换那个数字为空白。如果存在那个数字,那么就会被替换掉,则字符串总长减少;否则字符串总长不会减少;当然这里已经有了重复判断,用instr判断也行

网友(2):

'楼上的无法解决2,与22判断出错的问题。
'在窗体上加入控件list1,command1,复制下面代码,运行即可。

Option Explicit

Private Sub Command1_Click()
Dim S1 As String, S2 As String, i As Integer, a() As String
S1 = "2,3,4,6" '根据实际情况按此格式修改
S2 = "2,6,7,8" '根据实际情况按此格式修改
S1 = "," & S1 & ",": S2 = "," & S2 & ","
With List1
.Clear
a = Split(S1, ",")
For i = 1 To UBound(a) - 1
If InStr(S2, "," & a(i) & ",") = 0 Then .AddItem a(i)
Next
a = Split(S2, ",")
For i = 1 To UBound(a) - 1
If InStr(S1, "," & a(i) & ",") = 0 Then .AddItem a(i)
Next

End With
End Sub

网友(3):

On Error Resume Next
Dim myGroupA As String, myGroupB As String, myGroupAArr, myGroupBArr, i As Integer, j As Integer
myGroupA = "2,3,4,6" 'a组数据,各数间用英文逗号“,”分开
myGroupB = "2,6,7,8," 'b组数据,各数间用英文逗号“,”分开
myGroupAArr = Split(myGroupA, ",")
myGroupBArr = Split(myGroupB, ",")
If UBound(myGroupAArr) > UBound(myGroupBArr) Then j = UBound(myGroupAArr) Else j = UBound(myGroupBArr)
For i = 0 To j
If InStr(1, myGroupB, myGroupAArr(i)) = 0 Then List1.AddItem myGroupAArr(i)
If InStr(1, myGroupA, myGroupBArr(i)) = 0 Then List1.AddItem myGroupBArr(i)
Next

网友(4):

Private Sub Command_Click()
Dim a(4) As Integer
Dim b(4) As Integer
Dim c(8) As Integer
Dim i, k
a(0) = 2
a(1) = 3
a(2) = 4
a(3) = 6
b(0) = 2
b(1) = 6 '2,6,7,8
b(2) = 7
b(3) = 8
Dim s As String
k = 0
s = ""
For i = 0 To UBound(a)
If sYesOrNo(a(i), b()) = False Then
c(k) = a(i)
k = k + 1
End If
Next i
For i = 0 To UBound(b)
If sYesOrNo(b(i), a()) = False Then
c(k) = b(i)
k = k + 1
End If
Next i
For i = 0 To UBound(c)
If c(i) > 0 Then
s = s & c(i) & Chr(13) & Chr(10)
End If
Next i
MsgBox s
End Sub

Private Function sYesOrNo(ByVal s1 As Long, ByRef x() As Integer) As Boolean
Dim i As Long
sYesOrNo = False
For i = 0 To UBound(x)
If s1 = x(i) Then
sYesOrNo = True
End If
Next i
End Function

网友(5):

我来试试

a()
b()

dim i as integer ,j as integer
dim x as boolean
for i = 0 to ubound(a)
x=true
for j = 0 to ubound(b)
if a(i) = b (j) then
x=false
exit for

endif
next
if x then list1.additem a(i)
next

for i = 0 to ubound(b)
x=true
for j = 0 to ubound(a)
if b(i) = a (j) then
x=false
exit for

endif
next
if x then list1.additem b(i)
next