|
▼ponte さん:
おじゃまします。
>プログラムでA列の値が重複する行を削除したい(重複が有る場合は一番上の行のデータを残す)
一般機能の 「フィルタオプションの設定(Unique:=True)」を
使うのも手かと思います。
フィルタオプションの設定でやるときは、
表の一行目は項目見出しである必要があります。
いちどほんとに重複カットできるか、以下で確認してみましょう
Sub 確認()
Range("A1", Cells(Rows.Count, 1).End(xlUp)) _
.AdvancedFilter xlFilterInPlace, Unique:=True
MsgBox "OK?"
ActiveSheet.ShowAllData
End Sub
もし、うまく行ったなら、本番です
本番は 表全体を作業用一時シートにコピーしておいてから、
一時シートで抽出したものを 元のシートに戻す という手順をとります。
Sub 実行()
Dim Target As Range, Address1 As String
Dim oSheet As Worksheet '対象シート
Dim nSheet As Worksheet '作業用一時シート
'----準備 作業用シートに全データコピー
Set oSheet = ActiveSheet
With oSheet
Set Target = Range("A1", Cells(Rows.Count, 1).End(xlUp)) _
.Resize(, .UsedRange.Columns.Count)
Address1 = Target.Address
End With
Set nSheet = Worksheets.Add
Target.Copy nSheet.Range("A1")
Target.ClearContents
'--- 作業用シートで重複カット実行
With nSheet.Range(Address1)
'A列だけを対象に フィルタオプションでUniqueデータとする
.Columns(1).AdvancedFilter xlFilterInPlace, Unique:=True
.Copy
End With
'---元のシートに貼り付け直す
Target.Cells(1).PasteSpecial xlPasteValues
'--- 作業用シートの削除
Application.DisplayAlerts = False
nSheet.Delete
Application.DisplayAlerts = True
End Sub
|
|