|
▼kanabun さん:
重複チェックでも色々なやり方があるんですね。
下記のコードも今、試しましたが、
同様な結果になりました。
データ量が多いと、きっとこちらの方が早く処理される
のでしょうね。
kanabun さんの高度なマクロ知識に、感服しました。
色々と勉強になります。
本当に有難うございます^^
>参考までに 別法で、
>Dictionaryオブジェクトを使って重複チェックすることも
>できます。
>(たぶん、こちらのほうが速いと思います。)
>Sub CheckDup()
> Dim i As Long
> Dim v, du
> Dim ss As String
> Dim dic As Object
>
> Set dic = CreateObject("Scripting.Dictionary")
> With Range("D2", Cells(Rows.Count, "E").End(xlUp)).Resize(, 2)
> v = .Value 'D&E列用データ配列
> ReDim du(1 To UBound(v), 0 To 1) 'J列、K列出力用配列
> For i = 1 To UBound(v)
> ss = v(i, 1) & v(i, 2)
> du(i, 0) = ss
> If dic.Exists(ss) Then
> If dic(ss) > 0 Then
> du(dic(ss), 1) = "重複"
> dic(ss) = Empty
> End If
> du(i, 1) = "重複"
> Else
> dic(ss) = i
> End If
> Next
> .Offset(, 6).Value = du 'チェック結果を貼り付ける
> End With
> MsgBox "重複チェック終了"
>
>End Sub
>
>上のコードは、D列とE列の文字列を結合したものもJ列に出力していますけど、
>この列は作業用と考えると、 K列だけを出力する風に書き換えることもできます。
|
|