В этом случае ниже я хочу сравнить один столбец с двумя столбцами для дубликатов. На изображении ниже столбец D сравнивается с обоими столбцами B и F, и оттуда я хочу иметь возможность удалять дубликаты из столбца D. Я смотрел онлайн, и я не уверен, как я могу это сделать.Сравнение 3 столбцов и удаление дубликатов vba
ответ
Это очистит дубликаты данных, если столбец поиска всегда в столбце D и две остальные находятся в 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'? Это будет быстрее, чем повторение в столбце ... –
@LoganReed Чтобы быть тупым, это происходит только потому, что я не знаком с этим методом. Если это сработает, тогда это здорово! Я просто не использовал его раньше. – PartyHatPanda
[Здесь вы идете] (https://msdn.microsoft.com/en-us/library/office/ff839746.aspx). Это стоит вашего времени! –
Немного более эффективная версия с использованием коллекций. Он выполняет итерацию столбцов B и F только один раз, и значения можно мгновенно просмотреть в результирующих наборах без итерации.
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. VBA - Поиск и удаление дубликатов
- 2. Сравнение столбцов Excel VBA, сравнение и смещение
- 3. EXCEL VBA: сравнение двух столбцов и удаление строки, если дубликат
- 4. Сравнение столбцов - VBA
- 5. Сравнение значений столбцов VBA
- 6. Удаление дубликатов с использованием VBA
- 7. VBA: Удаление дубликатов из коллекции
- 8. Удаление дубликатов имен пользователей и объединение столбцов дубликатов
- 9. Удаление дубликатов на основе 3 столбцов в R
- 10. MySQL: удаление дубликатов столбцов на Left Join, 3 таблицы
- 11. Удаление дубликатов только из определенных столбцов/строк
- 12. Сравнение двух столбцов в VBA
- 13. Удаление дубликатов данных из столбцов в Excel
- 14. Удаление дубликатов двух столбцов в запросе
- 15. Удаление дубликатов в excel с использованием VBA
- 16. Удаление дубликатов с помощью VBA - Excel 2003
- 17. excel vba - удаление дубликатов из массива
- 18. MySQL Удаление дубликатов на основе состояния и нескольких столбцов комбинаций
- 19. Удаление дубликатов на основе нескольких столбцов
- 20. Устранить удаление дубликатов сообщений в vba
- 21. Удаление дубликатов заданной величины строки VBA
- 22. Excel - VBA Удаление дубликатов из Comboboxes
- 23. vba удаление дубликатов из нового набора
- 24. Сравнение двух списков и удаление дубликатов из одного
- 25. удаление и объединение дубликатов
- 26. SQL группировка и удаление дубликатов
- 27. SQL - Удаление дубликатов на основе определенных столбцов и не другие
- 28. Удаление дубликатов на основе поля столбцов и изменить его
- 29. извлечение строки и удаление дубликатов
- 30. Удаление дубликатов в excel
Пожалуйста, покажите по крайней мере, некоторые усилия, пытаясь решить проблему самостоятельно .. –
Спасибо @UlliSchmid – johndoe253