[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『RemoveDuplicatesで重複した「列」を削除したい』(列)
シート2のセルC3からD3,E3,F3と横方向に並んだ日付、最終列までの範囲で重複セルを削除したいのですが下記コードの「Selection.RemoveDuplicates Columns:=a, Header:=xlNo」で実行時エラー'1004'アプリケーション定義またはオブジェクト定義のエラーでできません。解決策を教えてください。
Sub test1()
Dim a As Variant
a = Worksheets(2).Cells(3,Columns.Count).End(xlToLeft).Column
Selection.RemoveDuplicates Columns:=a, Header:=xlNo
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
どこか作業セルに行列入れ替えて張り付けてから重複削除後元に戻す?
(コメン) 2022/12/05(月) 00:39:08
365ならUNIQUE関数が使えると思います。 私は持っていないので、Dictionaryを使ってみました。
Sub test2()
Dim dic As Object
Dim rng As Range, r As Range
Set dic = CreateObject("scripting.dictionary")
With Worksheets(2)
Set rng = .Range("C3", .Cells(3, Columns.Count).End(xlToLeft))
End With
For Each r In rng
If Not dic.exists(r.Value) Then
dic.Add r.Value, ""
End If
Next
With rng
.ClearContents
.Cells(1).Resize(, dic.Count) = dic.keys
End With
End Sub
似たような質問がありますね。 こちらの続きだとするなら、最初に重複削除してから転記するとか? [[20221204184519]] (酢飯) 2022/12/05(月) 07:15:21
酢飯さんも提案されているUNIQUE関数を使ったコード例
Sub test3()
Dim rng As Range
With Worksheets(2)
Set rng = .Range("C3", .Cells(3, Columns.Count).End(xlToLeft))
End With
Dim a
a = WorksheetFunction.Unique(rng, True)
rng.ClearContents
rng.Resize(, UBound(a)).Value = a
End Sub
(hatena) 2022/12/05(月) 16:20:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.