トップページ(目次)

409.重複データをカット削除する(配列版)

一見、連想配列Dictionaryと似ていますが、適切なケースで適切な手法で使用できるようになることが重要だと思います。

<実行前後>
 → 
Sub 重複データをカット削除する_配列版_高速版()
    
    '最終行を取得する
    最終行 = Cells(Rows.Count, "A").End(xlUp).Row
        
    '全データを箱に格納する
    全データ = Range("A1:B" & 最終行)
    
    '出力用の箱を作る(縦の大きさ, 横の大きさ)
    ReDim 処理後データ(1 To 最終行, 1 To 2)
    
    '1行目は項目名なので1行目はそのまま格納
    処理後データ(1, 1) = 全データ(1, 1)
    処理後データ(1, 2) = 全データ(1, 2)
    
    '1行目は飛ばして2行目から格納開始
    処理行 = 2
    
    '2行目から最終行まで処理する
    For 行 = 2 To 最終行
        
        '1行上と同じかチェックする
        If 全データ(行 - 1, 1) = 全データ(行, 1) And 全データ(行 - 1, 2) = 全データ(行, 2) Then
            'カットするので箱への格納をスキップする
        Else
            
            '違っているので処理後データの箱に格納する
            処理後データ(処理行, 1) = 全データ(行, 1)
            処理後データ(処理行, 2) = 全データ(行, 2)
            
            '次の行を指定する
            処理行 = 処理行 + 1
        End If
    
    Next 行
    
    '格納完了した箱のデータを戻す
    Range("C1:D" & 最終行) = 処理後データ
        
End Sub
連想配列とは、2列のデータを直接処理しているのが違います。 どちらも習得しましょう。

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