- ベストアンサー
VBAで重複した値を一つ残して削除する方法
- VBAを使用して、リスト内の重複した値を一つだけ残して削除する方法について教えてください。
- 現在、重複した値を削除する方法しかわからず、解決策に詰まっています。お手数ですが、アドバイスをいただけると幸いです。
- また、指定の範囲内でのみ重複をチェックし、他のデータには影響を与えないようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ここに質問をする前に、自分でいろいろ考えて、手段(ロジック)を考えること。 その後VBAコードでどう実現するか、自分のVBAの経験に照らしてやる。そのコードが判からなければ、したいロジックを文章で書いて質問するようにすべきだ。 === 下記は 「ある行の1セルの値が、その列全体の中に、2件以上あれば1件分だけ書き出す」というロジックでやってみた。これならだれでも思いつくだろう。 まずA列でソートー>コードは略 その次に Sub test01() i = 2 j = 2 lr = Worksheets("Sheet1").Range("A10000").End(xlUp).Row MsgBox lr p1: x = Worksheets("Sheet1").Cells(i, "A") c = WorksheetFunction.CountIf(Worksheets("Sheet1").Range("A2:A" & lr), x) MsgBox c If c >= 2 Then Worksheets("Sheet2").Cells(j, "A") = x j = j + 1 i = i + c Else i = i + 1 End If If i > lr Then Exit Sub GoTo p1 End Sub ーーー 例データ Sheet1のA1:A15 項目 a a b c d d d f g q q s s v ーー 結果 Sheet2のA1以下に a d q s
その他の回答 (1)
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは http://okwave.jp/qa/q9198825.html に回答したコードではダメなのですか? Sub test() Range("T3", Range("T" & Rows.Count).End(xlUp)).Sort _ Key1:=Range("T3"), Order1:=xlAscending, Header:=xlYes Range("T3", Range("T" & Rows.Count).End(xlUp)).RemoveDuplicates _ Columns:=1, Header:=xlYes End Sub