蒸饭用的木桶:vba从一个数组中找出另一数组不同内容

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 14:56:28
怎样从一个数组中找出另一个数组不同内容(vba三法)

***************循环遍历法*******************************

Sub 怎样从一个数组中找出另一个数组不存在的内容()
Dim b(), c(), d()
b = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
c = Array(1, 2, 3, 4, 5, 6, 7, 8)
n = 1
K = 0
For I = LBound(b) To UBound(b)
   For j = LBound(c) To UBound(c)
      If c(j) = b(I) Then
       K = 0
        Exit For
       
      Else
        K = K + 1
         If K = UBound(c) + 1 Then
           ReDim Preserve d(1 To n)
           d(n) = b(I)
           n = n + 1
           K = 0
         End If
      End If
   Next
Next

MsgBox Join(d, ",")
End Sub

*************************************************Filter 方法****************************************

Sub 怎样从一个数组中找出另一个数组不存在的内容2()
Dim b(), c(), d()
b = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
c = Array(1, 2, 3, 4, 5, 6, 7, 8)
n = 1
   For j = LBound(b) To UBound(b)
       If UBound(VBA.Filter(c, b(j))) = -1 Then
         ReDim Preserve d(1 To n)
           d(n) = b(j)
           n = n + 1
       End If
   Next
MsgBox Join(d, ",")
End Sub

***********************excel home案例************************

现有两个字符串:“1,2,3,4,5”和“1,3,4,6”

我如何用vba知道这样的结果:第二个字符串比第一个字符串少了2和5,而多了6

谢谢帮忙!

不知道楼主怎么得到少了3,4的结果

如果全部是一位数字用Instr判断就可以,否则需要用下面的两次循环

Sub Check()
    a = "1,2,3,4,5"
    b = "1,3,4,6"
    c = Split(a, ",")
    d = Split(b, ",")
    e = "缺少:"
    f = "多:"
    For i = 0 To UBound(c)
        If UBound(VBA.Filter(d, c(i))) = -1 Then e = e & c(i) & "-"
    Next
    For i = 0 To UBound(d)
        If UBound(VBA.Filter(c, d(i))) = -1 Then f = f & d(i) & "-"
    Next
    MsgBox e & vbCrLf & f
End Sub