web-dev-qa-db-ja.com

Excel VBAのセル範囲から重複を削除する

Excel 2013 VBAで重複を削除しようとしています。しかし、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーが表示されます。問題は、選択する静的な範囲がないことです。列heaader 'abcd'から重複を削除します。

Cells.Find(what:="abcd").Activate
ActiveCell.EntireColumn.Select
Set rng = Selection
ActiveSheet.rng.RemoveDuplicates
11
Hideandseek

Range.RemoveDuplicatesメソッド 使用する列を指定する必要があります。また、ヘッダー行があることを表明しているため、.RemoveDuplicatesメソッドにそれを伝える必要があります。

Sub dedupe_abcd()
    Dim icol As Long

    With Sheets("Sheet1")   '<-set this worksheet reference properly!
        icol = Application.Match("abcd", .Rows(1), 0)
        With .Cells(1, 1).CurrentRegion
            .RemoveDuplicates Columns:=icol, Header:=xlYes
        End With
    End With
End Sub

元のコードは、周囲のデータを無視しながら、単一の列から重複を削除したいようです。このシナリオは非定型であり、.RemoveDuplicatesプロセスがデータをスクランブルしないように、周囲のデータを含めました。 RemoveDuplicatesプロセスを単一の列に分離したい場合は、コメントを投稿してください。

14
user4039065

単一の列から重複を削除するには

_ Sub removeDuplicate()
 'removeDuplicate Macro
 Columns("A:A").Select
 ActiveSheet.Range("$A$1:$A$117").RemoveDuplicates Columns:=Array(1), _ 
 Header:=xlNo 
 Range("A1").Select
 End Sub
_

ヘッダーがある場合は、_Header:=xlYes_を使用します

要件に従って範囲を増やします。
次のように1000にすることができます。

ActiveSheet.Range("$A$1:$A$1000")

詳細はこちら こちら

5
mahi_0707