トップページ(目次)

410.配列でCOUNTIFを超高速処理する

COUNTIFは非常に重い関数なので、私は基本的にVBA(配列)で処理しています。 とにかくわかりやすくシンプルに書いてみました。

[実行前後]
 → 
Sub COUNTIFを超高速処理する_配列版_高速版()

    A列最終行 = Cells(Rows.Count, "A").End(xlUp).Row
    
    調査項目名 = Range("A1:A" & A列最終行) '調査対象を全部格納
    
    For 行 = 1 To 5
    
        For 配列内行 = 1 To A列最終行 '調査項目名を1周する
        
            If Cells(行, "C") = 調査項目名(配列内行, 1) Then
            
                個数 = 個数 + 1  'C列◯行 = 調査項目名 → +1
                
            End If
            
        Next 配列内行
        
        Cells(行, "D") = 個数 'D列に結果個数を出力
        
        個数 = 0 'この変数は再利用するのでリセット
    
    Next 行

End Sub
これはいろいろと応用できるので、自由自在に使えるようになるとVBAの処理速度が 飛躍的にアップします。ぜひとも習得しましょう。

Copyright © 2021 https://excel3000.web.fc2.com/ All Rights Reserved.
    inserted by FC2 system