Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11574 / 76734 ←次へ | 前へ→

【70693】Re:COUNTIF関数の処理スピードを高める方法について
発言  kanabun  - 11/12/16(金) 19:32 -

引用なし
パスワード
   >▼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 秒でした。

5 hits

【70689】COUNTIF関数の処理スピードを高める方法について kakinoki 11/12/16(金) 17:42 発言
【70691】Re:COUNTIF関数の処理スピードを高める方法... kanabun 11/12/16(金) 18:56 発言
【70693】Re:COUNTIF関数の処理スピードを高める方法... kanabun 11/12/16(金) 19:32 発言
【70694】Re:COUNTIF関数の処理スピードを高める方法... kanabun 11/12/16(金) 19:35 発言
【70696】Re:COUNTIF関数の処理スピードを高める方法... kakinoki 11/12/17(土) 1:03 質問
【70697】Re:COUNTIF関数の処理スピードを高める方法... kanabun 11/12/17(土) 8:52 発言
【70782】Re:COUNTIF関数の処理スピードを高める方法... kakinoki 11/12/30(金) 11:27 お礼
【70740】Re:COUNTIF関数の処理スピードを高める方法... Jaka 11/12/22(木) 10:00 発言

11574 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free