Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA-(EXCEL)-Макрос / 10 сообщений из 10, страница 1 из 1
20.09.2005, 15:56:14
    #33279238
OreL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
Здравствуйте.
Возникла проблема по удалению строк дубликатов.
Есть таблица:

Название размершуруп 10х10шуруп 10х15шуруп 10х25шуруп 10х10шуруп 15х16болт 10х13х14болт 10х13х25болт 10х13х19болт 10х13х11болт 10х13х33болт 10х13х14болт 10х13х25гайка 10х10гайка 15х50гайка 10х30гайка 11х15гайка 12х32гайка 10х30

Нужно удалить с помощью макроса дубликаты которые выделены цветом,
записей около 40000 т.ч. автофильтр тут не поможет.

Есть макрос который просто ищет и показывает колличество
дубликатов, но только по одному столбцу(размер)-это не подходит т.к.
размер может быть одинаковый как у гайки так и у шурупа:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub CountDifference()
With Me.UsedRange.Columns( 2 )

     iCountA = Application.CountA(.Cells)
     For Each iCell In .Cells
         iCount = iCountA - .Cells.ColumnDifferences(iCell).Count
         
      If iCount >  1  Then
      
      MsgBox iCell.Value & "-" & iCount, , ""
         
     End If
      
     Next
        
End With

End Sub

Помогите пожалуста выйти из ситуации !
Спасибо.
...
Рейтинг: 0 / 0
20.09.2005, 17:16:42
    #33279529
VBA-(EXCEL)-Макрос
Надеюсь разберешься.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    Dim rng As Range
    Dim arr( 1  To  18 ,  1  To  2 ) As Variant
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim bln As Boolean
    
    i =  1 
    
    For j =  2  To  19 
        Set rng = ThisWorkbook.Worksheets("Лист1").Range("A" & j)
        bln = False
        If i =  1  Then
            bln = False
        Else
            For k = LBound(arr,  1 ) To UBound(arr,  1 )
                If Not IsEmpty(arr(k,  1 )) _
                  And Not IsEmpty(arr(k,  2 )) Then
                    If arr(k,  1 ) = rng.Value _
                      And arr(k,  2 ) = rng.Offset( 0 ,  1 ).Value Then
                        rng.EntireRow.Delete Shift:=xlUp
                        j = j -  1 
                        bln = True
                        Exit For
                    End If
                End If
            Next k
        End If
        If Not bln Then
            arr(i,  1 ) = rng.Value
            arr(i,  2 ) = rng.Offset( 0 ,  1 ).Value
            i = i +  1 
        End If
    Next j
...
Рейтинг: 0 / 0
21.09.2005, 09:42:50
    #33280359
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
а можно попробовать удалить запросом
...
Рейтинг: 0 / 0
21.09.2005, 10:03:37
    #33280421
Toking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
автора можно попробовать удалить запросом

Если нет идентификатора строки, то вряд ли ... разве что в цикле
...
Рейтинг: 0 / 0
21.09.2005, 10:17:58
    #33280461
VBA-(EXCEL)-Макрос
Можно еще проще. Загнать в аксекс, сделать запрос с группировкой и экпортнуть обратно в Excel.
...
Рейтинг: 0 / 0
21.09.2005, 11:45:54
    #33280764
100g
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
OreL...но только по одному столбцу...
Онже может работать и по нескольким. Есть такой финт. Запиши в третьем столбце сумму, т.е. сцепку из первого и второго. Например в ячейке С2 напиши =СЦЕПИТЬ(A2;B2) и запускай макрос по нему.

По сабжу: А сортировать записи можно или у них строгий порядок?
...
Рейтинг: 0 / 0
21.09.2005, 12:05:17
    #33280830
OreL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
100g OreL...но только по одному столбцу...
Онже может работать и по нескольким. Есть такой финт. Запиши в третьем столбце сумму, т.е. сцепку из первого и второго. Например в ячейке С2 напиши =СЦЕПИТЬ(A2;B2) и запускай макрос по нему.

По сабжу: А сортировать записи можно или у них строгий порядок?

Вариант со сцепкой понятен, причём очень даже не плохой вариант.

авторА сортировать записи можно или у них строгий порядок?

Что Вы этим имели ввиду ???
...
Рейтинг: 0 / 0
21.09.2005, 12:06:11
    #33280834
OreL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
Пользователь2Надеюсь разберешься.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    Dim rng As Range
    Dim arr( 1  To  18 ,  1  To  2 ) As Variant
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim bln As Boolean
    
    i =  1 
    
    For j =  2  To  19 
        Set rng = ThisWorkbook.Worksheets("Лист1").Range("A" & j)
        bln = False
        If i =  1  Then
            bln = False
        Else
            For k = LBound(arr,  1 ) To UBound(arr,  1 )
                If Not IsEmpty(arr(k,  1 )) _
                  And Not IsEmpty(arr(k,  2 )) Then
                    If arr(k,  1 ) = rng.Value _
                      And arr(k,  2 ) = rng.Offset( 0 ,  1 ).Value Then
                        rng.EntireRow.Delete Shift:=xlUp
                        j = j -  1 
                        bln = True
                        Exit For
                    End If
                End If
            Next k
        End If
        If Not bln Then
            arr(i,  1 ) = rng.Value
            arr(i,  2 ) = rng.Offset( 0 ,  1 ).Value
            i = i +  1 
        End If
    Next j



Пока не очень понятно как это всё работает !!!
Пытаюсь разобраться !!!
...
Рейтинг: 0 / 0
21.09.2005, 12:08:37
    #33280843
OreL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA-(EXCEL)-Макрос
Пользователь2Можно еще проще. Загнать в аксекс, сделать запрос с группировкой и экпортнуть обратно в Excel.

1. Это затрата времени.
2. Будут проблеммы с форматом полей т.к. их 10, а в примере я только два привёл!
...
Рейтинг: 0 / 0
21.09.2005, 12:11:53
    #33280853
VBA-(EXCEL)-Макрос
OreL1. Это затрата времени.
2. Будут проблеммы с форматом полей т.к. их 10, а в примере я только два привёл!
Ок.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA-(EXCEL)-Макрос / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]