MyTetra Share
Делитесь знаниями!
Как удалить дубликаты в Excel
Время создания: 16.03.2019 23:43
Текстовые метки: дубликат, VBA
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/15143874082a3r98trd8/text.html на raw.githubusercontent.com

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


Опубликовано: 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.64
Яндекс индекс цитирования