|
▼ponte さん:
>プログラムでA列の値が重複する行を削除したい(重複が有る場合は一番上の行のデータを残す)と思いますが
>どうコーディングすればいいですか.
>Excelは2003です.
>よろしくお願いいたします.
こんな感じのマクロを組んでみましたが、ご希望に添えていますか?
ちなみにこのマクロの制限事項としてxlDownを使用していますので、初期値の時点でA列の途中に空白がある場合、その空白部分までしかマクロが実行されません。
A列が何列あるのかわからないのでUntilを使用しましたが、何列かが毎回決まっているならForを使用してもいいと思います。
途中に空白がある場合は、Forを使用しないと難しいように思えます。。。
途中に空白があり、なおかつ何列かわからない場合、ちょっと複雑なマクロになるかもしれません。。。
マクロの説明としましては、A列の最終行一個下にEndという文字を入力することで、Untilの終了条件を定めています。
Untilの終了条件を空白としていないのは、重複した際に消す作業をしているので
消した事によって空白になった部分を終了部分と誤認識させないためです。
Dim HikakuA As Variant, HikakuB As Variant
Dim i As Integer, j As Integer
i = 1 '開始行数の指定
Cells(1, "A").End(xlDown).Offset(1, 0) = "End"
Do Until Cells(i, "A") = "End"
HikakuA = Cells(i, "A")
j = i + 1
1 'GoToポイント
HikakuB = Cells(j, "A")
If HikakuA = HikakuB Then '重複があった場合の条件式
Cells(j, "A") = "" 'セルに空白を代入
End If
j = j + 1
If j = 100 Then Exit Do '∞ループ回避策
If Cells(j, "A") <> "End" Then 'HikakuBがEndまで到達していない場合の条件式
GoTo 1 'ポイント1まで戻る
End If
i = i + 1
If i = 100 Then Exit Do '∞ループ回避策
Loop
End Sub
|
|