|
kanabunさん 早速のご指導ありがとうございました
おかげさまで抜群の早出処理できるようになりました
ただ、生年月日が空白のデータが相当数あり、この時には
「名前」と「名前+生年月日」が同じになり、2とカウント
してしまいます。ご指導いただいた内容をA列(名前)だけの
重複数、とC列(名前+生年月日)だけの重複数カウントに
なるような変更を工夫してみましたが、出来ませんでした
ご指導いただけたらと思います。よろしくお願いいたします。
▼kanabun さん:
>>▼kakinoki さん:
>>他の方法 (Dictionaryオブジェクト)を使って重複をカウント
>
>こんな感じです
>
>'--------------------------------- 標準モジュール
>Option Explicit
>
>Sub Try1()
> Dim r As Range
> Dim v, i As Long, n As Long
> Dim u, ss As String
> Dim dic As Object
> Dim t! '時間計測用
> t = Timer()
>
> Set dic = CreateObject("Scripting.Dictionary")
> Set r = Range("A2", Cells(Rows.Count, 1).End(xlUp))
> v = r.Resize(, 2).Value
> n = UBound(v)
> ReDim u(1 To n, 1 To 3)
> For i = 1 To n
> If Len(v(i, 1)) > 0 Then
> dic(v(i, 1)) = dic(v(i, 1)) + 1
> ss = v(i, 1) & v(i, 2)
> u(i, 1) = ss
> dic(ss) = dic(ss) + 1
> End If
> Next
> ReDim rev(1 To n, 1 To 2)
> For i = 1 To n
> If Len(v(i, 1)) > 0 Then
> u(i, 2) = dic(v(i, 1))
> u(i, 3) = dic(u(i, 1))
> End If
> Next
> r.Offset(, 2).Resize(, 3).Value = u
>
> Debug.Print Timer() - t
>End Sub
>
>30,000行のデータに対し実行した結果は 0.46 秒でした。
|
|