[[20161130135605]] 『重複してるデータだけのこしたい』(丸かぶり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重複してるデータだけのこしたい』(丸かぶり)

ご教示ください。

A列に

A1111
A1111
A1111
B2222
C3333
C3333
とあったら重複していないB2222の行を削除したいのですが、
VBAでどのように記述すれば、分かりません。
教えていただけますと幸いです。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


マクロを書かずとも、B列等に =COUNTIF(A:A,A1) とか式を入れて、オートフィルタを設定して、カウントが1の行だけ選択。行削除すれば実現できるのですが、それでは駄目ですか?

どうしてもマクロで書きたい場合、同じように(同じ命令でなく、ForループでもOK)重複数を調べて、重複が無い場合に削除しましょう。このとき、上の行から処理すると、削除によって行が変わってしまうので、下の行から上にループすると良いでしょう。
(???) 2016/11/30(水) 14:21


Sub main() '一例
    Dim c As Range
    Range("B1").FormulaR1C1 = "=IF(COUNTIF(C[-1],RC[-1])=1,"""",RC[-1])"
    Set c = Intersect(Range("A:A"), ActiveSheet.UsedRange).Offset(, 1)
    Range("B1").AutoFill Destination:=c
    c.Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues
    c.ClearContents
    Range("A:A").TextToColumns
    Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
(mm) 2016/11/30(水) 18:30

 VBA処理一例です。(でも、???さん指摘のように 関数と操作でいいのでは?)

 Sub Sample()
    With Range("A1", Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
        .Formula = "=IF(COUNTIF(A:A,A1)=1,1,"""")"
        On Error Resume Next
        .SpecialCells(xlCellTypeFormulas, xlNumbers).EntireRow.Delete
        On Error GoTo 0
    End With
    Columns("B").Clear
 End Sub

(β) 2016/11/30(水) 23:49


皆様ありがとうございました。

???様の方法で記述できました。

こういう発想がでてこないんですよね。

尊敬します。

(丸かぶり) 2016/12/01(木) 06:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.