Страницы: 1
RSS
Перенос дубликатов, Помогите!
 
Такая проблема. около 11000 клиентов. Таблица состоит из ( слева-направо) столбца с именами и столбца и почтой клиентов. Стиль R1C1. Надо выделить клиентов с дублирующемся email и перенести в другой лист ( у некоторых по 5-6 емэйлов, указанных в следующей вправо ячейке). Использовал макрос для переноса строк в другой лист на основе повторяющихся ячеек с помощью VBA  (Панель разработчика, Basic).

Сам макрос:
Sub CutDuplicates()
'Updateby Extendoffice
   Dim xRgS As Range
   Dim xRgD As Range
   Dim I As Long, J As Long
   On Error Resume Next
   Set xRgS = Application.InputBox("Please select the column:", "KuTools For Excel", Selection.Address, , , , , 8)
   If xRgS Is Nothing Then Exit Sub
   Set xRgD = Application.InputBox("Please select a desitination cell:", "KuTools For Excel", , , , , , 8)
   If xRgD Is Nothing Then Exit Sub
   xRows = xRgS.Rows.Count
   J = 0
   For I = xRows To 1 Step -1
       If Application.WorksheetFunction.CountIf(xRgS, xRgS(I)) > 1 Then
           xRgS(I).EntireRow.Copy xRgD.Offset(J, 0)
           xRgS(I).EntireRow.Delete
           J = J + 1
       End If
   Next
End Sub

Как итог: виснет как тварь, вдобавок переносит не весь указанный мою диапазон, а малый либо средний кусок от указанного (прим. вместо 10500 адресов - всего 12-1000, причем в совершенно рандомном количестве.

Сам файл приложить не могу, т.к. там каталог личных электронных адресов контрагентов.
 
сделайте пример на 10 строк в файле Excel, где на 1м листе будут ФИО (например, Иванов, Петров, Сидоров) с указанием несекретной почты (например, 1@site.ru, 2@site.ru, 3@site.ru) и покажите что куда переносить
Изменено: New - 06.10.2022 12:31:51
 
Иван Чухнин,  код следует оформлять соответствующим тегом: ищите кнопку <...> и исправьте своё сообщение.
 
Всё секретничают что-то )
Код
Sub CutDuplicates()
'Updateby Extendoffice
   Dim xRgS As Range
   Dim xRgD As Range
   Dim I As Long, J As Long
   Dim xRows As Long
   On Error Resume Next
   Set xRgS = Intersect(ActiveSheet.UsedRange, Application.InputBox("Please select the column:", "KuTools For Excel", Selection.Address, , , , , 8))
   On Error GoTo 0
   If xRgS Is Nothing Then Exit Sub
   Set xRgD = Application.InputBox("Please select a desitination cell:", "KuTools For Excel", , , , , , 8)
   If xRgD Is Nothing Then Exit Sub
   xRows = xRgS.Rows.Count
   J = 0
   For I = xRows To 1 Step -1
       If Application.WorksheetFunction.CountIf(xRgS, xRgS(I)) > 1 Then
           xRgS(I).EntireRow.Copy xRgD.Cells(J, 1)
           xRgS(I).EntireRow.Delete
           J = J + 1
       End If
   Next
End Sub
А код тегом всё-таки оформите.
Изменено: МатросНаЗебре - 06.10.2022 16:54:26
 
OFF
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
OFF

Цитата
написал:
KuTools For Excel— источник вдохновения или спонсор готовых решений?  
Я просто скопировал текст из сообщения #1 этой ветки.
Ну а теперь ещё и узнал о KuTools For Excel )

Кстати о KuTools.
Речь не о самом продукте, а об их прайсе. Работая в одной конторе, нашёл метод, позволяющий оценить, насколько аккуратно поставщик подошёл к формированию прайса.
Типичный пример прайс KuTools.
10-24 33.08
25-49 29.40
Если мне понадобится 24 копии, я куплю 25 и одну выкину, при этом я заплачу на 8% меньше, чем если я куплю 24 копии.
Для других строк этого прайса этот процент увеличивается с 8% до 25%.
Справедливости ради, надо отметить, что для количества меньше 10 штук, таких несоответствий в прайсе нет. Видимо, эту часть составили аккуратно, а остальная просто не представляет интереса.
Повторюсь, не критикую сам продукт, речь только о прайсе.
Изменено: МатросНаЗебре - 07.10.2022 10:15:56
 
Цитата
МатросНаЗебре: скопировал текст из сообщения #1
блин точно  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх