Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Дубли и макрос, копирующий их на другой лист. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дубли и макрос, копирующий их на другой лист. (Формулы/Formulas)
Дубли и макрос, копирующий их на другой лист.
wild_cat80 Дата: Среда, 12.10.2022, 12:42 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте. Имеется таблица с большим количеством строк.Нужен макрос, который находит все дубли в таблице (по полю СНИЛС) и копирует всю строку дубликата на отдельный лист (на первоначальном листе ничего с ними не делает.) Файл выкладываю "укороченный", в оригинале больше строк....
К сообщению приложен файл: 7557528.xlsx (10.0 Kb)
 
Ответить
СообщениеЗдравствуйте. Имеется таблица с большим количеством строк.Нужен макрос, который находит все дубли в таблице (по полю СНИЛС) и копирует всю строку дубликата на отдельный лист (на первоначальном листе ничего с ними не делает.) Файл выкладываю "укороченный", в оригинале больше строк....

Автор - wild_cat80
Дата добавления - 12.10.2022 в 12:42
Nic70y Дата: Среда, 12.10.2022, 13:15 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Sub u_429()
    Application.ScreenUpdating = False
    x = Sheets(2).Cells(Rows.Count, "a").End(xlUp).Row
    If x > 1 Then Sheets(2).Range("a2:l" & x).Clear
    a = Cells(Rows.Count, "i").End(xlUp).Row
    For Each b In Range("i5:i" & a)
        c = b.Row
        d = Application.Match(b, Range("i4:i" & c - 1), 0)
        e = Application.Match(b, Range("i" & c + 1 & ":i" & a + 1), 0)
        f = IsNumeric(d)
        g = IsNumeric(e)
        If f Or g Then
            h = Sheets(2).Cells(Rows.Count, "a").End(xlUp).Row + 1
            Range("a" & c & ":l" & c).Copy Sheets(2).Range("a" & h)
        End If
    Next
    'если нужна сортировка---------------------------------------------------
    If h > 2 Then
        Sheets(2).Range("a2:l" & h).Sort key1:=Sheets(2).Range("i2:i" & h), _
            order1:=xlAscending, Header:=xlNo
    End If
    '------------------------------------------------------------------------
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 7557528.xlsm (22.1 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Sub u_429()
    Application.ScreenUpdating = False
    x = Sheets(2).Cells(Rows.Count, "a").End(xlUp).Row
    If x > 1 Then Sheets(2).Range("a2:l" & x).Clear
    a = Cells(Rows.Count, "i").End(xlUp).Row
    For Each b In Range("i5:i" & a)
        c = b.Row
        d = Application.Match(b, Range("i4:i" & c - 1), 0)
        e = Application.Match(b, Range("i" & c + 1 & ":i" & a + 1), 0)
        f = IsNumeric(d)
        g = IsNumeric(e)
        If f Or g Then
            h = Sheets(2).Cells(Rows.Count, "a").End(xlUp).Row + 1
            Range("a" & c & ":l" & c).Copy Sheets(2).Range("a" & h)
        End If
    Next
    'если нужна сортировка---------------------------------------------------
    If h > 2 Then
        Sheets(2).Range("a2:l" & h).Sort key1:=Sheets(2).Range("i2:i" & h), _
            order1:=xlAscending, Header:=xlNo
    End If
    '------------------------------------------------------------------------
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 12.10.2022 в 13:15
_Boroda_ Дата: Среда, 12.10.2022, 13:34 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант
[vba]
Код
Sub tt()
    With ActiveSheet
        .Copy After:=Sheets(.Index)
    End With
    Application.ScreenUpdating = 0
    With ActiveSheet
        asn_ = .Cells.Find(What:="СНИЛС").Address
        With .Range(asn_)
            r0_ = .Row
            csn_ = .Column
            With .CurrentRegion
                nr_ = .Rows.Count
                nc_ = .Columns.Count
                .AutoFilter
                With .Columns(csn_)
                    .FormatConditions.AddUniqueValues
                    With .FormatConditions(1)
                        .DupeUnique = xlDuplicate
                        .Interior.Color = 3
                    End With
                End With
                .AutoFilter Field:=csn_, Operator:=xlFilterNoFill
                .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
                .FormatConditions.Delete
                .AutoFilter
                .RemoveDuplicates Columns:=csn_, Header:=xlYes
            End With
        End With
    End With
    Application.ScreenUpdating = 1
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант
[vba]
Код
Sub tt()
    With ActiveSheet
        .Copy After:=Sheets(.Index)
    End With
    Application.ScreenUpdating = 0
    With ActiveSheet
        asn_ = .Cells.Find(What:="СНИЛС").Address
        With .Range(asn_)
            r0_ = .Row
            csn_ = .Column
            With .CurrentRegion
                nr_ = .Rows.Count
                nc_ = .Columns.Count
                .AutoFilter
                With .Columns(csn_)
                    .FormatConditions.AddUniqueValues
                    With .FormatConditions(1)
                        .DupeUnique = xlDuplicate
                        .Interior.Color = 3
                    End With
                End With
                .AutoFilter Field:=csn_, Operator:=xlFilterNoFill
                .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
                .FormatConditions.Delete
                .AutoFilter
                .RemoveDuplicates Columns:=csn_, Header:=xlYes
            End With
        End With
    End With
    Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 12.10.2022 в 13:34
wild_cat80 Дата: Четверг, 13.10.2022, 06:32 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Спасибо всем за ответы и помощь!!!


Сообщение отредактировал wild_cat80 - Четверг, 13.10.2022, 06:32
 
Ответить
СообщениеСпасибо всем за ответы и помощь!!!

Автор - wild_cat80
Дата добавления - 13.10.2022 в 06:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дубли и макрос, копирующий их на другой лист. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!