[ create a new paste ] login | about

Link: http://codepad.org/ZCepBnhf    [ raw code | fork ]

Plain Text, pasted on Jan 20:
Sub special_matching()
    Dim X() As Variant  '作業用
    Dim AA() As Long, BB() As Long
    Dim maxA As Long, maxB As Long
    Dim i As Long
    Dim A As Long, B As Long, D As Long, E As Long, F As Long

    ' A列データ取得
    X = Range(Range("A1"), Range("A1").End(xlDown))
    maxA = UBound(X): ReDim AA(maxA + 1)
    For i = 1 To maxA: AA(i) = X(i, 1): Next

    ' B列データ取得
    X = Range(Range("B1"), Range("B1").End(xlDown))
    maxB = UBound(X): ReDim BB(maxB + 1)
    For i = 1 To maxB: BB(i) = X(i, 1): Next

    A = 1: B = 1: D = 1: E = 1: F = 1  '各列のインデックス

    While A <= maxA And B <= maxB
        If AA(A) = BB(B) Then
            Cells(F, 6) = AA(A)
            F = F + 1
            While A < maxA And AA(A) = AA(A + 1)
                A = A + 1
            Wend
            A = A + 1
            While B < maxB And BB(B) = BB(B + 1)
                B = B + 1
            Wend
            B = B + 1
        ElseIf AA(A) < BB(B) Then
            Cells(D, 4) = AA(A)
            D = D + 1
            While A < maxA And AA(A) = AA(A + 1)
                A = A + 1
            Wend
            A = A + 1
        Else  ' If AA(A) > BB(B) Then
            Cells(E, 5) = BB(B)
            E = E + 1
            While B < maxB And BB(B) = BB(B + 1)
                B = B + 1
            Wend
            B = B + 1
        End If
    Wend

    While A <= maxA
    Cells(D, 4) = AA(A)
        A = A + 1
    Wend
    While B <= maxB
    Cells(E, 5) = BB(B)
        B = B + 1
    Wend
End Sub



Create a new paste based on this one


Comments: