簡體   English   中英

VBA代碼在一致的數據上給出不一致的結果

[英]VBA code giving inconsistent results on consistent Data

我已經用盡我的知識/資源試圖弄清楚這一點。 我正在比較2列A和B。如果B中包含A中的值,那么我的代碼應僅從A中刪除該值。

A是完整的唯一列表,而B是已過濾的唯一列表。 B中的每個值都應出現在A中。在我當前的數據中,A中的值的最終計數始終為2390,B的最終數始終為2218。 進行數學運算,我希望A列中還有178條剩余行。

當我運行以下代碼時,每次都會得到不同的最終計數。 253、242、249、246。對於我的一生,我似乎無法理解問題的根源。 我哪里做錯了?

Sub RemoveDuplicateFromOneColumnComparingWithAnother()


Worksheets(2).Range("B:B").RemoveDuplicates Columns:=1

Application.ScreenUpdating = False
Dim rngCell As Range
Dim rngCheck As Range
For Each rngCell In Range("A1").CurrentRegion.Columns(2).Cells
    If Not IsEmpty(rngCell) Then
        Do
            Set rngCheck = Nothing
            On Error Resume Next
            Set rngCheck = Worksheets(2).Range("A1").CurrentRegion.Columns(1).Find("*" & rngCell.Value & "*")
            rngCheck.ClearContents
            Err.Clear: On Error GoTo -1: On Error GoTo 0
        Loop Until rngCheck Is Nothing

    End If
Next rngCell
Set rngCell = Nothing
Set rngCheck = Nothing

End Sub

此代碼將A列中的每個值寫入數組a()並將B列中的每個值寫入數組b() 然后,它遍歷a()每個值。 對於a()每個值,它將遍歷b()每個值。 如果找到該值,則將flg設置為TRUE ,並且不會將其寫入數組c() 如果flg保持為FALSE它將把值寫入數組c() 然后,我們回顧並將c()的值寫入c()列。您可以對其進行調整,以將唯一性( c() )輸出到您選擇的任何位置。

編輯:

Option Explicit


Sub test_array()
Dim a() As String, b() As String, c() As String
Dim flg As Boolean
Dim i As Long, j As Long, k As Long
Dim rng As Range
i = Range("a" & Rows.Count).End(xlUp).Row 'Edited to pull the row, not the cell
j = Range("b" & Rows.Count).End(xlUp).Row 'Edited to pull the row, not the cell
ReDim a(0 To i - 1)
ReDim b(0 To j - 1)
ReDim c(0 To i - 1)

For k = 0 To i - 1
    a(k) = Cells(k + 1, "a")
Next k

For k = 0 To j - 1
    b(k) = Cells(k + 1, "b")
Next k


k = 0
For i = 0 To UBound(a())
    flg = False
    For j = 0 To UBound(b())
        If a(i) = b(j) Then
            flg = True
            Exit For
        End If
    Next j
    If flg = False Then
        k = k + 1
        c(k - 1) = a(i)
    End If
Next i

For k = LBound(c()) To UBound(c())
    Cells(k + 1, "c") = c(k)
Next k


End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM