|    | 
     >▼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 秒でした。 
 | 
     
    
   |