|
|||||||
Как удалить дубликаты в 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 |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|