Excel 2013 VBAで重複を削除しようとしています。しかし、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーが表示されます。問題は、選択する静的な範囲がないことです。列heaader 'abcd'から重複を削除します。
Cells.Find(what:="abcd").Activate
ActiveCell.EntireColumn.Select
Set rng = Selection
ActiveSheet.rng.RemoveDuplicates
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プロセスを単一の列に分離したい場合は、コメントを投稿してください。
単一の列から重複を削除するには
_ 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")
詳細はこちら こちら