MyTetra Share
Делитесь знаниями!
Как удалить дубликаты в Excel 2003/2007/2010/2013? Быстрое удаление дубликатов
Время создания: 16.03.2019 23:43
Текстовые метки: удаление дубликатов
Раздел: Разные закладки - VBA - Excel - Cells
Запись: xintrea/mytetra_db_adgaver_new/master/base/1518975324i3uhordc2j/text.html на raw.githubusercontent.com

Как удалить дубликаты в Excel 2003/2007/2010/2013? Быстрое удаление дубликатов

Подробности

Категория: Макросы Excel

Опубликовано: 01 ноября 2013

Задачу удаления дубликатов или повторяющихся значений в Excel можно решать различными способами. В Excel 2007 и выше удалить дубликаты можно стандартными средствами, в Excel 2003 такие средства отсутствуют, но задача решается при помощи VBA (Visual Basic for Application).

Удаление дубликатов в Excel 2003

Для того чтобы быстро удалить дубликаты в Microsoft Excel 2003, можно использовать процедуру, программный код которой приведен ниже. Процедура работает с выделенным диапазоном ячеек, сравнивает значение каждой из них со значениями всех остальных и при совпадении удаляет повторяющиеся значения. Перед использованием процедуры необходимо выделить диапазон значений.

Option Explicit

Sub Udalenie_Dublikatov_Znachenij()
'макрос удаляет значения ячеек, если находит дубликаты
Dim iCount As Long, i As Long, j As Long, k As Long
Dim Str1 As String, Str2 As String
k = 1
iCount = Selection.Cells.Count
    For i = k To iCount
        Str1 = CStr(Selection.Cells(i).Value)
            If Str1 <> "" Then
                For j = i To iCount
                    Str2 = CStr(Selection.Cells(j).Value)
                        If i <> j And Str1 = Str2 Then Selection.Cells(j).ClearContents
                Next j
            End If
    Next i
End Sub

Процедура, программный код которой приведен ниже, удаляет уже не повторяющиеся значения, а целиком ячейки со сдвигом вверх, которые содержат повторяющиеся значения.

Option Explicit

Sub Udalenie_Dublikatov_Yacheek()
'макрос удаляет ячейки, если находит дубликаты
Dim iCount As Long, i As Long, j As Long, k As Long
Dim Str1 As String, Str2 As String
Dim Group As Range
k = 1
iCount = Selection.Cells.Count
    For i = k To iCount
        Str1 = CStr(Selection.Cells(i).Value)
            If Str1 <> "" Then
                For j = i To iCount
                    Str2 = CStr(Selection.Cells(j).Value)
                        If i <> j And Str1 = Str2 Then
                            If Group Is Nothing Then _
                                Set Group = Selection.Cells(j) Else Set Group = Union(Group, Selection.Cells(j))
                        End If
                Next j
            End If
    Next i
On Error Resume Next
Group.Delete Shift:=xlUp
End Sub

Для того чтобы ячейки удалялись со сдвигом влево, необходимо в предпоследней строке вместо xlUp написать xlToLeft.

Удаление дубликатов в Excel 2007/2010/2013

Для быстрого удаления повторяющихся значений в Excel 2007 и выше предусмотен стандартный инструмент - кнопка "Удалить дубликаты", которая расположена на вкладке "Данные", в группе "Работа с данными". Чтобы удалить повторяющиеся значения, необходимо выделить один или несколько столбцов, содержащих повторяющиеся значения.

Недостаток этого инструмента заключается в том, что он работает только с вертикальными диапазонами, расположенными в столбцах. В этом смысле процедуры, приведенные выше, более универсальны.

Если запустить макрорекордер и записать действие, закрепленное за кнопкой "Удалить дубликаты", получится макрос, программный код которого приведен ниже. Этот макрос удаляет дубликаты в диапазоне A1:A20. 

Sub Udalenie_Dublikatov()

' макрос удаляет дубликаты (повторяющиеся значения) в диапазоне A1:A20 активного рабочего листа
ActiveSheet.Range("$A$1:$A$20").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования