トップページ(目次)

408.年齢を年代に置き換える(配列版)

年齢を年代に分けるとか、都道府県を◯◯地方に分けるなどは、 実務では定期的に処理が発生するかと思います。 通常VBAなら数万行ある場合、数分かかりますが、配列なら数秒です。

<実行前後>
 → 
Sub 年齢を年代に変換する_配列版_高速版()

    最終行 = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得する

    年齢 = Range("A2:A" & 最終行) '年齢情報を配列に格納する
    
        ReDim 年代(1 To 最終行 - 1, 1 To 1) '変換後の年代情報を格納する箱を作る
    
        For 行 = 1 To 最終行 - 1 '2行目~最終行を格納しているので1~最終行-1
    
            If 10 <= 年齢(行, 1) And 年齢(行, 1) < 20 Then '10~20の場合
    
                年代(行, 1) = "10代" '10代
    
            ElseIf 20 <= 年齢(行, 1) And 年齢(行, 1) < 30 Then '20~30の場合
    
                年代(行, 1) = "20代" '20代
    
            ElseIf 30 <= 年齢(行, 1) And 年齢(行, 1) < 40 Then '30~40の場合
    
                年代(行, 1) = "30代" '30代
            
            '40代50代などその他の追加はElseIfをコピペすればOK
            
            End If
            
        Next 行

    Range("A2:A" & 最終行) = 年代
    
End Sub
配列は難しいですが、以下のようにローカルウィンドウを表示させてみれば意外に簡単にできます。
クリックで拡大

一個一個F8を押して処理を進めながら、正常に動くか検証しながら作成すれば早いと思います。

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