返回列表 上一主題 發帖

想找出與前一列重複的數字

回復 1# f00l01

程式已更新如下,請測試看看,謝謝。

Sub test1()
Dim Arr, xD, xD2, Ar(), T, i&, C%
Set xD = CreateObject("Scripting.Dictionary")
Set xD2 = CreateObject("Scripting.Dictionary")
Arr = Range("a1").CurrentRegion
For i = 1 To UBound(Arr)
    ReDim Ar(1 To 1, 1 To UBound(Arr, 2))
    For j = 1 To UBound(Arr, 2)
        T = Arr(i, j)
        If i = 1 Then xD(T & "") = T: GoTo 99
        If C = 0 Then
            If xD.Exists(T & "") Then
                N = N + 1: xD2(T & "") = T: Ar(1, N) = xD(T & "")
            Else
                xD(T & "") = T: xD2(T & "") = T
            End If
        Else
            If xD2.Exists(T & "") Then
                N = N + 1: xD(T & "") = T: Ar(1, N) = xD2(T & "")
            Else
                xD(T & "") = T: xD2(T & "") = T
            End If
        End If
99: Next
    If i > 1 Then
        If C = 0 Then
            Cells(i, 15).Resize(1, N) = Ar
            C = 1: Erase Ar: Set xD = Nothing: N = 0
            Set xD = CreateObject("Scripting.Dictionary")
        Else
            Cells(i, 15).Resize(1, N) = Ar
            C = 0: Erase Ar: Set xD2 = Nothing: N = 0
            Set xD2 = CreateObject("Scripting.Dictionary")
        End If
    End If
Next
End Sub

TOP

回復 1# f00l01


不好意思#5樓程式有問題,比對後的值有問題,請不用測試,謝謝

TOP

回復 4# f00l01

請測試看看,謝謝
Sub test()
Dim Arr, xD, xD2, Ar(), T, i&, C%
Set xD = CreateObject("Scripting.Dictionary")
Set xD2 = CreateObject("Scripting.Dictionary")
Arr = Range("a1").CurrentRegion
For i = 1 To UBound(Arr)
    ReDim Ar(1 To 1, 1 To UBound(Arr, 2))
    For j = 1 To UBound(Arr, 2)
        T = Arr(i, j)
        If C = 0 Then
            If xD.Exists(T & "") Then
                N = N + 1: xD2(T & "") = T
                Ar(1, N) = xD(Arr(i, j) & "")
            Else
                xD(T & "") = T
                xD2(T & "") = T
            End If
        Else
            If xD2.Exists(T & "") Then
                N = N + 1: xD(T & "") = T
                Ar(1, N) = xD2(Arr(i, j) & "")
            Else
                xD(T & "") = T
                xD2(T & "") = T
            End If
        End If
    Next
    If i > 1 Then
        If C = 0 Then
            Cells(i, 15).Resize(1, N) = Ar
            C = 1: Erase Ar: Set xD = Nothing: N = 0
            Set xD = CreateObject("Scripting.Dictionary")
        Else
            Cells(i, 15).Resize(1, N) = Ar
            C = 0: Erase Ar: Set xD2 = Nothing: N = 0
            Set xD2 = CreateObject("Scripting.Dictionary")
        End If
    End If
Next
End Sub

TOP

回復 2# samwang


    範例檔案如上,看能不能從第二列之後都和前一列進行比對,謝謝大大提醒

Files (5).zip (6.89 KB)

檔案範例

TOP

想找出與前一列重複的數字.rar (6.28 KB)

是這樣嗎?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 1# f00l01

如果有範例會更容易理解,感謝。

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題