この場合、以下の例では、1つの列と2つの列を重複して比較したいと考えています。下の画像では、列Dが列Bと列Fの両方と比較され、そこから列Dから列を削除できるようにしたいと考えています。私はオンラインで調べました。3つの列の比較と重複の削除vba
答えて
検索列が列Dに常にあり、2つの他のものは、BおよびF
注にある場合、これは、重複データを消去します。これは、単に中央の列内のデータを削除します実際には残っているギャップを埋めるわけではありません。
Sub deleteThreeColDupes()
Dim sourceRange As range
Dim colOne As range
Dim colTwo As range
Dim myCell As range
Dim checkCell As range
'Set the search ranges
Set colOne = range("B2", Cells(Rows.count, 2).End(xlUp))
Set colTwo = range("F2", Cells(Rows.count, 6).End(xlUp))
Set sourceRange = range("D2", Cells(Rows.count, 4).End(xlUp))
'Compare with the first column. If there is a match, clear the value and exit the loop.
'if no match in first column, compare with the second column.
For Each myCell In sourceRange
For Each checkCell In colOne
If myCell.Value = checkCell.Value Then
myCell.Value = ""
Exit For
End If
Next checkCell
If myCell.Value <> "" Then
For Each checkCell In colTwo
If myCell.Value = checkCell.Value Then
myCell.Value = ""
Exit For
End If
Next checkCell
End If
Next myCell
'Clear sets
Set colOne = Nothing
Set colTwo = Nothing
Set sourceRange = Nothing
End Sub
なぜ 'Range.Find'を使用しないように@UlliSchmid?それは列の反復よりも速くなります... –
@LoganReed鈍くなるためには、私はその方法に慣れていないからです。それがうまくいくなら、それは素晴らしいことです!私はそれを以前に使ったことがありません。 – PartyHatPanda
[ここに行きます](https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)。それはあなたの時間の価値がある! –
コレクションを使用すると、より効率的なバージョンです。列BとFを1回だけ反復し、反復せずに結果のコレクション内で値を即座に検索することができます。
Sub deleteDups()
' setup column ranges
Dim rngB As Range
Dim rngD As Range
Dim rngF As Range
With ActiveSheet
Set rngB = .Range(.[b2], .[b2].End(xlDown))
Set rngD = .Range(.[d2], .[d2].End(xlDown))
Set rngF = .Range(.[f2], .[f2].End(xlDown))
End With
' store columns B and F in collections with value = key
Dim colB As New Collection
Dim colF As New Collection
Dim c As Range
For Each c In rngB: colB.Add c, c: Next
For Each c In rngF: colF.Add c, c: Next
' quickly check if the value in any of the columns
For Each c In rngD
If contains(colB, CStr(c)) Or contains(colF, CStr(c)) Then
Debug.Print "Duplicate """ & c & """ at address " & c.Address
' c.Clear ' clears the duplicate cell
End If
Next
End Sub
Function contains(col As Collection, key As String) As Boolean
On Error Resume Next
col.Item key
contains = (Err.Number = 0)
On Error GoTo 0
End Function
出力:
Duplicate "cry" at address $D$4
Duplicate "car" at address $D$5
Duplicate "cat" at address $D$6
ありがとうございました – johndoe253
- 1. Excel vba - 3つの範囲を比較
- 2. 比較3つの配列
- 3. 削除重複EXCEL VBAマクロ
- 4. 2つのArrayListsを比較して重複を削除します
- 5. オブジェクトの配列を比較して重複を除去する
- 6. は、比較、vCard連絡先重複を削除するには
- 7. どのように重複を削除するオブジェクトの2つの配列を比較するには?
- 8. coobolの重複レコードとのファイル比較
- 9. 複数のリストで属性を比較して重複を削除する
- 10. 別の列の最大値と比較することにより、重複レコードを削除する - MySQLの
- 11. R比較重複
- 12. VBA配列の比較
- 13. 2つの列を比較し、重複をエコーする
- 14. Excel VBAで2つのワークブックをテキストファイルと比較する比較
- 15. VBA 2つの列マクロに基づいて重複行を削除します
- 16. 2つのセルの色を比較して行を削除するVBA
- 17. 別のリストと比較して1つのリストから重複を削除する
- 18. APIデータの比較と削除
- 19. VBA Excel重複行を削除する
- 20. jQuery Divの内容を比較して重複したデータを削除する
- 21. JavaScript配列のスライスと削除の比較
- 22. 配列はユニーク配列と重複 - 重複を削除
- 23. 重複の削除
- 24. 2つの配列と重複しない連結を比較します
- 25. linux bash - 2つのファイルを比較し、同じ終端を持つ重複する行を削除する
- 26. 重複を削除して削除するVBAコード
- 27. VBAでの2つのリストボックスの比較
- 28. 2つのスプレッドシートでの情報の比較/重複の発見
- 29. VBA - FILTERED列で重複を削除する
- 30. 2つのディレクトリを比較し、2番目のディレクトリにある重複ファイルを削除する方法
は自分で問題を解決しようとする少なくともいくつかの努力を示してください。.. –
おかげで – johndoe253