Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
18th
Авг
Удаление одинаковых строк
Posted by obzor under VBA
Прошерстил много подобных задач но везде ищут дубликаты и удаляют, оставляя при этом одну строку. Мне же в моей задаче нужно находить дубликаты (полностью идентичные строки в которых все значения во всех столбцах совпадают) и удалять и исходную строку и дублера. Оставив только уникальные строки у которых изначально во всем диапазоне не было дубликатов.
Sub olgomets_dubli()
' https://programmersforum.ru/showthread.php?t=346178
' запускайте при активном листе исходной таблицы вашего файла
' макрос создает копию листа и вней удалит дубли
Dim M(), Rw&, RwL&, Co&, CoL&, i&, Udalim As Boolean
Dim RngToDel$, RwsToDel As Object
Set RwsToDel = CreateObject("Scripting.Dictionary")
RwL = Cells(Rows.Count, 1).End(xlUp).Row
CoL = Cells(1, Columns.Count).End(xlToLeft).Column
M = Range(Cells(1, 1), Cells(RwL, CoL))
For Rw = LBound(M, 1) To UBound(M, 1) - 1
For i = Rw + 1 To UBound(M, 1)
If M(i, LBound(M, 2)) = M(Rw, LBound(M, 2)) Then
For Co = 1 + LBound(M, 2) To UBound(M, 2)
If M(i, Co) = M(Rw, Co) Then
Udalim = True
Else
Udalim = False: Exit For
End If
Next Co
If Udalim Then
Udalim = False
If Not RwsToDel.Exists(Rw) Then
RwsToDel.Add Rw, Rw
End If
If Not RwsToDel.Exists(i) Then
RwsToDel.Add i, i
End If
End If
End If
Next i
Next Rw
For i = 0 To RwsToDel.Count - 1
RngToDel = RngToDel & RwsToDel.items()(i) & ":" _
& RwsToDel.items()(i) & ","
Next i
RngToDel = Mid(RngToDel, 1, Len(RngToDel) - 1)
Set RwsToDel = Nothing
Application.ScreenUpdating = False
ActiveSheet.Copy Before:=ActiveSheet
Range(RngToDel).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)