[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『重複データ最初の行削除』(チロル)
いつもお世話になっております。 現在自分が作っている重複行削除のコードがありまして 今は重複行を上方向に探して最初のデータを行ごと削除 してるのですが、今度は上から探して最初のデータを削除 させたいのですが、足踏みしてしまいました。
>For i = Cells(65536, 2).End(xlUp).Row To 2 Step -1 >Set Rng = Range("B2", Range("B65536").End(xlUp)) ここの部分をEnd(xlDown)にして、行や列の数字を いじってるですが、どなたか御教授下さいませんか? Sub 重複データ削除()
Dim i As Long Dim Rng As Range Dim lngJyufuku As Long
For i = Cells(65536, 2).End(xlUp).Row To 2 Step -1 Set Rng = Range("B2", Range("B65536").End(xlUp)) lngJyufuku = WorksheetFunction.CountIf(Rng, Cells(i, 2).Value)
If lngJyufuku > 1 Then Cells(i, 2).EntireRow.Delete End If Set Rng = Nothing Next i
End Sub
Excel2000 WindowsXP
上から?最初のデータを削除? 重複が2つ以上の場合は、最初のデータだけ? (seiya)
説明不足ですみません。 重複する行は最大2行だけなのです。 下からつめて行っても見つけた重複行の上の行にある方 を削除できればと思ってます。(チロル)
あまり関心はしませんが... 上からループ
Sub test() Dim i As Long For i = 2 To Cells(Rows.Count, "b").End(xlUp).Row If (Cells(i,"b").Value <> "") * (WorksheetFunction.CountIf(B:B,Cells(i,"b").Value)>1) Then Rows(i).Delete i = i - 1 End If Next End Sub
空いている列に数式を挿入して =CountIf(B$2:B2,B2)=1 オートフィルターで削除するとか... (seiya)
seiyaさんありがとうございました。 ちょっとだけエラーが出たのですが た..た..多分..みたいな感じで少し修正させてもらって試したら やりたかった事ができました。感謝いたします。(チロル)
>If (Cells(i,"b").Value <> "") * (WorksheetFunction.CountIf(B:B,Cells(i,"b").Value)>1) Then ↓ If (Cells(i, "b").Value <> "") * (WorksheetFunction.CountIf(Range("B:B"), Cells(i, "b").Value) > 1) Then
おっと、失礼しました。 (seiya)
「Rng2」と「konkaino」を用意して Rng2には、B2から今回の行までの範囲を設定 konkaino に、Rng2の範囲で Cells(i, 2) を数え lngJyufuku と一致しなかったら削除 と言う考え方にすると、下からループしても 下にある物が残りそうです。
[A] lngJyu konka [1] 【イ】 fuku ino [2] A 2 1 ←削除 [3] B 1 1 [4] C 2 1 ←削除 [5] A 2 2 [6] C 2 2 2行目の式 ↑=COUNTIF($A$2:$A$6,A2) 2行目の式 ↑=COUNTIF($A$2:A2,A2)
(HANA)
HANAさんありがとうございました。色々方法はあるのですね。 勉強になります。自分のメモ帳にしっかり書き留めさせて いただきます。(チロル)
ごめんなさい、もうこられないと思って 自分のメモ帳にしてました。(笑) こんな感じになります。
Sub 重複データ先の方を削除()
Dim i As Long Dim Rng As Range, Rng2 As Range 'Rng2 追加 Dim lngJyufuku As Long, konkaino As Long 'konkaino 追加
For i = Cells(65536, 2).End(xlUp).Row To 2 Step -1 Set Rng = Range("B2", Range("B65536").End(xlUp)) lngJyufuku = WorksheetFunction.CountIf(Rng, Cells(i, 2).Value) Set Rng2 = Range("B2", Range("B" & i)) '当行までのB列の範囲 konkaino = WorksheetFunction.CountIf(Rng2, Cells(i, 2).Value) '当行までの出現回数
If lngJyufuku <> konkaino Then Cells(i, 2).EntireRow.Delete End If Set Rng = Nothing Set Rng2 = Nothing Next i
End Sub
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.