powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление повторяющихся строк
32 сообщений из 32, показаны все 2 страниц
Удаление повторяющихся строк
    #37418465
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
На днях решал задачу по удалению повторяющихся строк на листе Excel. Нужно было оставить последнюю строку и удалить все предыдущие дубли. В прищепке файл с рабочим макросом. Для массива в несколько тысяч строк он, конечно, быстрый, но у меня массивы превышают 150 тыс. строк и обработка их в течение 12-15 часов, на мой взгляд, чрезмерно продолжительна.
Вопрос к знатокам - можно ли ускорить его работу?
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418523
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие вещи надо обрабатывать через СУБД. Хотя бы в аксесс данные перекинуть. Задача будет решаться пару секунд.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418548
Sir.Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо за мнение, но надо именно в Excel.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего даже просто динамическое создание макросом mdb-файла, перекидывание туда данных, создание индексов, отбор нужных и перекидывание их обратно займет меньше времени (и все это не покидая экселя), чем работа данного макроса (минуты, а не часы).

Еще можно попробовать доступ к самому себе через ADO и отбор SQL-запросом. Это будет подольше, но, возможно. тоже даст выигрыш во времени. Надо пробовать.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418595
Sir.Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
вот этого я не умею
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418652
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://programmersforum.ru/showthread.php?p=848421#post848421
вот пример как использовать ADO
_____________________

Из Вашего примера не понятно по каким столбцам отбирать уникальные :(
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418857
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: SirFisher
> На днях решал задачу по удалению повторяющихся строк на листе Excel. Нужно было оставить последнюю строку и
> удалить все предыдущие дубли.
> ... можно ли ускорить его работу?

А меню "Данные"->"Фильтр"->"Расширенный фильтр" и копирование результата в другое место с птичкой "Только уникальные
записи" не поможет?

P.S. В макросе можно копировать даже на другой лист :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418874
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос, извините, а как там в ячейку Поместить результат в диапазон
Пишу Лист2, не нравится ему
???
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418920
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюИгорь Горбонос, извините, а как там в ячейку Поместить результат в диапазон
Пишу Лист2, не нравится ему
???RTFM! низя так. тока макросом
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418940
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю, я специально выделил что _программно_ можно.
Примерно
так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
Set sh = Application.ActiveSheet  'Worksheets("Исходные данные")
If sh.AutoFilter Is Nothing Then
    MsgBox "Установите автофильтр"
    Exit Sub
End If
....
Set s = CheckSheet(w1, "Уникальные") ' w1.Worksheets.Add
's.Name = "Уникальные"
Set s = Nothing
....
' Получаем список уникальных комбинаций из
' месяца оплаты, номера платёжного поручения,
' группы, вида и суммы оплаты
Set r = w1.Worksheets("Уникальные").Range("a1")
sh.Range("P:U").AdvancedFilter xlFilterCopy, , r, True
....
Дальше идет перебор полученных уникальных комбинаций и применение автофильтра на "исходных данных". Делается
"сворачивание" сумм и все заменяется одной строкой в "результат", после чего строятся проверочные сводные, которые
анализирует человек


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37418963
Thermik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SirFisher,

Может не удалять строки а уникальные вставлять на другой лист?
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419015
Sir.Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос, нет, фильтр по уникальным значениям не подойдет. Вы, наверное, не внимательно смотрели макрос. У него задача убрать из дублей ранние строки, оставив самые поздние
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419050
Thermik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вариант не удалять сразу а пометить "на удаление" отсортировать так чтобы "на удаление" стояли внизу таблицы, поиском найти строку которая первой занчится "на удаление" и удалить их махом до конца диапазона
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419197
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Sir.Fisher
> Игорь Горбонос, нет, фильтр по уникальным значениям не подойдет. Вы, наверное, не внимательно смотрели макрос. У
> него задача убрать из дублей ранние строки, оставив самые поздние


А почему именно "самые поздние"? какая разница какую строку с данными оставлять, если строки дубликаты и при удалении
дубликатов все равно поменяют свое положение на листе?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419241
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,
в том то и дело, что нужно оставлять наипозднейшие строки. Особенности работы с материалом.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419245
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R Dmitry,

этот столбец формируется слиянием нескольких ячеек в начале макроса
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419404
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirFisher,

файл сохраните на физический диск (из Temp может не работать)
проверяйте
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419448
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R DmitrySirFisher,проверяйтезапросом - это вешь :) с вашего позволения сохраняю код на поиск

Код: 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.
34.
35.
36.
37.
38.
39.
40.
Public Function ADO_R_Dmitry(ByVal strSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean)

Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object

Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
Select Case CLng(Split(Application.Version, ".")( 0 ))
    Case Is <  12 
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >=  12 
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State =  1  Then Exit Function
Set rs = cn.Execute(strSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i =  0  To rs.Fields.Count -  1 
    OutputRange.Offset( 0 , i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset( 1 ,  0 )
 End If
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function

Sub Test()
'пример использования
strSql2 = "SELECT DISTINCTROW Max(F1), Last(F2), F3, F4, F5, F6, Last(F7), F8, Last(F9), Last(F10) , F11, F12, F13, F14, F15, Last(F16), Last(F17), Last(F18), Last(F19), Last(F20), Last(F21) , Last(F22)" _
& " FROM [Лист1$] GROUP BY F3, F4, F5, F6, F8, F11, F12, F13,F14, F15"
 Sheets( 2 ).[a1].CurrentRegion.ClearContents
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets( 2 ).[a1], False, False)
Sheets( 2 ).Activate
End Sub
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419541
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коментарии в функции можно было бы и оставить, ну да ладно бог с ними........
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419660
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitry, мне кейсы по версии понравились :)
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37419705
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanB,

старался делать универсальной, что бы не церемониться с 65 т строк
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37420253
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R DmitrySirFisher,

файл сохраните на физический диск (из Temp может не работать)
проверяйте

Спасибо Дмитрий! За 15 секунд переработал массив на 130 тыс. строк!
Конечно, интересно разобраться как он работает чтобы никого не беспокоить при разработке макросов.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37427430
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirFisherДобрый день
На днях решал задачу по удалению повторяющихся строк на листе Excel. Нужно было оставить последнюю строку и удалить все предыдущие дубли. В прищепке файл с рабочим макросом. Для массива в несколько тысяч строк он, конечно, быстрый, но у меня массивы превышают 150 тыс. строк и обработка их в течение 12-15 часов, на мой взгляд, чрезмерно продолжительна.
Вопрос к знатокам - можно ли ускорить его работу?Раз у вас 150 тысяч строк, значит у вас как минимум Excel 2007.
А в Excel 2007 есть такая фишка "Удалить дубликаты" во вкладке "Данные".
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37427623
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirFisherR DmitrySirFisher,

файл сохраните на физический диск (из Temp может не работать)
проверяйте

Спасибо Дмитрий! За 15 секунд переработал массив на 130 тыс. строк!
Конечно, интересно разобраться как он работает чтобы никого не беспокоить при разработке макросов.просто sql-запрос книги excel к самой себе. такое можно встроенными способами сделать ручками. просто в данном случае вам дали красивый и универсальный код
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37429171
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon PlayerРаз у вас 150 тысяч строк, значит у вас как минимум Excel 2007.
А в Excel 2007 есть такая фишка "Удалить дубликаты" во вкладке "Данные".
Спасибо, мне знакома эта операция в excel. Но она не выполняет задачу в той форме, которая мне нужна. Но, за участие в беседе - спасибо
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37429174
SirFisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanBпросто sql-запрос книги excel к самой себе. такое можно встроенными способами сделать ручками. просто в данном случае вам дали красивый и универсальный код

Ручками много чего можно делать, но все упирается в такой фактор как время и производное от времени - скорость. Кроме того, код, предложенный Дмитрием, позволил мне взшлянуть на автоматизацию рутинных процессов с новой точки бытия
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37429269
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirFisherDjon PlayerРаз у вас 150 тысяч строк, значит у вас как минимум Excel 2007.
А в Excel 2007 есть такая фишка "Удалить дубликаты" во вкладке "Данные".
Спасибо, мне знакома эта операция в excel. Но она не выполняет задачу в той форме, которая мне нужна. Но, за участие в беседе - спасиборешает...

вообще, как мне кажется, прописывать подключение ADO в задачке, для которой есть, как минимум 2 встроенных метода 2007 excel (я имею ввиду уже упомянутые "удалить дубликаты" и "получить внешние данные из excel"), - дело не благодарное.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37429412
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SirFisher,
Попробуйте из кода Дмитрия убрать кейс, т.е. строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select Case CLng(Split(Application.Version, ".")( 0 ))
    Case Is <  12 
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >=  12 
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select
заменить на
Код: plaintext
1.
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
Должно работать быстрей.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37438748
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более чем в 2 раза быстрее получилось:

Sub test2()
Dim tm: tm = Timer
Sheets(2).[A1].CurrentRegion.ClearContents

Dim a(), oDict As Object, i As Long, temp As String
Dim ind As Long
With Sheets(1)
a = .[A1].CurrentRegion.Value
End With

ReDim b(1 To UBound(a), 1 To 22)

Set oDict = CreateObject("Scripting.Dictionary")

For i = 1 To UBound(a)
temp = _
a(i, 3) & "|" & _
a(i, 4) & "|" & _
a(i, 5) & "|" & _
a(i, 6) & "|" & _
a(i, 7) & "|" & _
a(i, 8) & "|" & _
a(i, 9) & "|" & _
a(i, 10) & "|" & _
a(i, 11) & "|" & _
a(i, 12) & "|" & _
a(i, 13) & "|" & _
a(i, 14) & "|" & _
a(i, 15) & "|" & _
a(i, 16) & "|" & _
a(i, 17) & "|" & _
a(i, 18) & "|" & _
a(i, 19) & "|" & _
a(i, 20) & "|" & _
a(i, 21) & "|" & _
a(i, 22)
If Not oDict.Exists(temp) Then
ind = ind + 1
oDict.Add temp, CStr(ind)
For ii = 1 To 22: b(ind, ii) = a(i, ii): Next
End If
Next

With Sheets(2)
.[A1].Resize(ind, 22) = b
End With

Sheets(2).Activate
Debug.Print Timer - tm
End Sub
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37438751
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, упустил:

For i = UBound(a) To 1 Step -1

но тогда ещё в конце отсортировать по порядку.
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37439355
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предыдущий вариант просто оставляет первую попавшуюся уникальную строку (в зависимости от направления перебора массива это будет первая или последняя строка источника).
Вот ещё два варианта - первый оставляет последнюю строку из дублей (т.е. практически как v.01), второй оставляет строку с последней датой (еcли даты одинаковы, тогда последнюю встреченную).
Но вывод не сортируется.
Вообще на ADO результат красивее - сортированный, и отбор последних по бОльшему количеству полей задан, но процесс в 2 раза медленнее на примере (не знаю, как на 150к строк будет), но сложнее настройка, да и может хватит просто взять строку с последней датой?
Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
Sub test3() 'оставляет последнюю строку из дублей
'Dim tm: tm = Timer
 Sheets( 2 ).[A1].CurrentRegion.ClearContents

    Dim a(), oDict As Object, i As Long, ii As Long, temp As String
    Dim ind As Long
    With Sheets( 1 )
        a = .[A1].CurrentRegion.Value
    End With

    ReDim b( 1  To UBound(a),  1  To  22 )

    Set oDict = CreateObject("Scripting.Dictionary")

    For i =  1  To UBound(a)
        temp = _
        a(i,  3 ) & "|" & _
        a(i,  4 ) & "|" & _
        a(i,  5 ) & "|" & _
        a(i,  6 ) & "|" & _
        a(i,  7 ) & "|" & _
        a(i,  8 ) & "|" & _
        a(i,  9 ) & "|" & _
        a(i,  10 ) & "|" & _
        a(i,  11 ) & "|" & _
        a(i,  12 ) & "|" & _
        a(i,  13 ) & "|" & _
        a(i,  14 ) & "|" & _
        a(i,  15 ) & "|" & _
        a(i,  16 ) & "|" & _
        a(i,  17 ) & "|" & _
        a(i,  18 ) & "|" & _
        a(i,  19 ) & "|" & _
        a(i,  20 ) & "|" & _
        a(i,  21 ) & "|" & _
        a(i,  22 )
        If Not oDict.Exists(temp) Then
            ind = ind +  1 
            oDict.Add temp, CStr(ind)
            For ii =  1  To  22 : b(ind, ii) = a(i, ii): Next
        Else
            ii = oDict.Item(temp)
            b(ii,  1 ) = a(i,  1 ): b(ii,  2 ) = a(i,  2 )
        End If
    Next

    With Sheets( 2 )
        .[A1].Resize(ind,  22 ) = b
    End With

Sheets( 2 ).Activate
'Debug.Print Timer - tm
End Sub


Sub test4() 'оставляет последнюю дату
'Dim tm: tm = Timer
 Sheets( 2 ).[A1].CurrentRegion.ClearContents

    Dim a(), oDict As Object, i As Long, ii As Long, temp As String
    Dim ind As Long
    With Sheets( 1 )
        a = .[A1].CurrentRegion.Value
    End With

    ReDim b( 1  To UBound(a),  1  To  22 )

    Set oDict = CreateObject("Scripting.Dictionary")

    For i =  1  To UBound(a)
        temp = _
        a(i,  3 ) & "|" & _
        a(i,  4 ) & "|" & _
        a(i,  5 ) & "|" & _
        a(i,  6 ) & "|" & _
        a(i,  7 ) & "|" & _
        a(i,  8 ) & "|" & _
        a(i,  9 ) & "|" & _
        a(i,  10 ) & "|" & _
        a(i,  11 ) & "|" & _
        a(i,  12 ) & "|" & _
        a(i,  13 ) & "|" & _
        a(i,  14 ) & "|" & _
        a(i,  15 ) & "|" & _
        a(i,  16 ) & "|" & _
        a(i,  17 ) & "|" & _
        a(i,  18 ) & "|" & _
        a(i,  19 ) & "|" & _
        a(i,  20 ) & "|" & _
        a(i,  21 ) & "|" & _
        a(i,  22 )
        If Not oDict.Exists(temp) Then
            ind = ind +  1 
            oDict.Add temp, CStr(ind)
            For ii =  1  To  22 : b(ind, ii) = a(i, ii): Next
        Else
            ii = oDict.Item(temp)
            If CDate(b(ii,  3 )) <= CDate(a(i,  3 )) Then _
            b(ii,  1 ) = a(i,  1 ): b(ii,  2 ) = a(i,  2 ): b(ii,  3 ) = a(i,  3 )
        End If
    Next

    With Sheets( 2 )
        .[A1].Resize(ind,  22 ) = b
    End With

Sheets( 2 ).Activate
'Debug.Print Timer - tm
End Sub
...
Рейтинг: 0 / 0
Удаление повторяющихся строк
    #37448442
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, подскажите по коду (см. ниже). Взят из примера выше (в начеле темы).

Работает относительно первой строки. Как сдвинуть относительно второй второй строки (то есть будет заголовок и одна строка с которой не будет производиться работа). Другими словами, первый две строки не трогать.

Менял вот это
Код: plaintext
With Range("BQ2:BQ" & cntRows)
на
Код: plaintext
With Range("BQ3:BQ" & cntRows)

Ниже в
Код: plaintext
1.
x = Cells(r,  69 ).Value: On Error Resume Next
        Set Rng = Range(Cells( 1 ,  69 ), Cells(r -  1 ,  69 )).Find(What:=x, LookAt:=xlWhole)
перепробовал комбинации заставить работать как надо не удалось.

Основной код:



Код: 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.
cntRows = WorksheetFunction.CountA(Columns( 1 ))

    With Range("BQ2:BQ" & cntRows)
        .FormulaR1C1 = _
            "=RC[-41]"
            
        .Copy
        .PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
    
    For r = cntRows To  1  Step - 1 
        r_percent = Round( 100  - r *  100  / cntRows,  2 )
        Application.StatusBar = "Îáðàáîòàíî " & cntRows - r & " èç " & cntRows & " ñòðîê (" & r_percent & "%)"
            
        x = Cells(r,  69 ).Value: On Error Resume Next
        Set Rng = Range(Cells( 1 ,  69 ), Cells(r -  1 ,  69 )).Find(What:=x, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
               MsgBox "Äóáëèðîâàíèå îñíîâíîãî øòðèõ-êîäà! Çàïèñü áóäåò óäàëåíà!"
               RngAddress = Rng.Address
               Range(RngAddress).EntireRow.Delete
               Exit Sub
            
        End If
    Next r
    
    Columns( 69 ).Clear
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление повторяющихся строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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