Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2010, 11:13   #1
Shpr0T
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 12
Восклицание Макрос: удаление повторяющихся ячеек

подскажите пожалуйста как сделать макрос чтобы из этого

]--------А-----]-------B-----]-----C------] . . .
]+79604578999]время звонка] . . .
]--------------]время звонка] . . .
]--------------]время звонка] . . .
]+79604578999]время звонка] . . .
]--------------]время звонка] . . .
]+79097676543]время звонка] . . .
]--------------]время звонка] . . .
]+79097676543]время звонка] . . .

и т. д.


получить это

]------А------]------B------]------C-----] . . .
]+79604578999]время звонка] . . .
]--------------]время звонка] . . .
]--------------]время звонка] . . .
]--------------]время звонка] . . .
]--------------]время звонка] . . .
]+79097676543]время звонка] . . .
]--------------]время звонка] . . .
]--------------]время звонка] . . .


чтобы номер не повторяся, т.е. ячейка где номер повторяется очищалась,
но только ячейка, а строка оставалась.

Последний раз редактировалось Shpr0T; 25.08.2010 в 11:24.
Shpr0T вне форума Ответить с цитированием
Старый 25.08.2010, 11:32   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если в столбце "A" нет пустых ячеек, то можно, например, так:
Код:
Sub Main()
    Dim i As Long, x As Range: Application.ScreenUpdating = False
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1) = Cells(i - 1, 1) Then If x Is Nothing Then Set x = Cells(i, 1) Else Set x = Union(x, Cells(i, 1))
    Next
    If Not x Is Nothing Then x.ClearContents
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.08.2010, 11:52   #3
Shpr0T
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 12
По умолчанию

какраз таки есть, в этом и пробема
Shpr0T вне форума Ответить с цитированием
Старый 25.08.2010, 12:32   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
какраз таки есть, в этом и пробема
Во-первых, что в таком случае нужно делать с другими ячейками этой строки? Во-вторых, что если не пустая, а какая-либо недопустимая ячейка? В-третьих, могут ли значения в столбце "A" быть "вперемешку"?
1. Можно отсортировать таблицу по 1-му столбцу и удалить все пустые строки, а затем воспользоваться предложенным выше кодом.
2. Если значения могут следовать не по порядку, и таблицу сортировать нельзя, то макрос будет другим. Объясните подробнее, что в каком случае нужно делать. А еще лучше - приведите пример со всеми возможными вариантами, которые могут встречаться и пример того, что Вы хотите получить в итоге (в формате .xls).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.08.2010, 13:19   #5
Shpr0T
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 12
По умолчанию

я скинул пример

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

номера исходно идут так: сначало один номер, он может повторяться или нет,
потом другой, т.е. они идут не вперемешку.

ячейки строки должны сохраниться
Вложения
Тип файла: rar 123.rar (51.5 Кб, 16 просмотров)

Последний раз редактировалось Shpr0T; 25.08.2010 в 13:26.
Shpr0T вне форума Ответить с цитированием
Старый 25.08.2010, 14:02   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Теперь понятно. Можно так:
Код:
Sub Main()
    Dim i As Long, x As Range, temp: temp = [A2]: Application.ScreenUpdating = False
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1) <> "" Then If Cells(i, 1) = temp Then Cells(i, 1).ClearContents Else temp = Cells(i, 1)
    Next
End Sub
Пример во вложении.
Вложения
Тип файла: rar 123_2.rar (23.3 Кб, 41 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.08.2010, 14:43   #7
Shpr0T
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 12
По умолчанию

Супер, работает!!
Спасибо огромное!!

Но у меня тут загвостка, между номерами есть пустые строки ,
и также повторяющиеся две строки.

вот так
Вложения
Тип файла: rar 123_3.rar (44.6 Кб, 30 просмотров)
Shpr0T вне форума Ответить с цитированием
Старый 26.08.2010, 06:31   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Опять не понятно. Объясните подробнее. Во-первых, в Вашем примере на листе "как есть" я не увидел пустых строк. Во-вторых, что делать, если номер повторяется? Пропускать 4 строки, формировать заголовки (как в Вашем примере на листе "как надо") и т.д.? Или объединять все звонки по номерам, не зависимо от повторений?

P.S. Может быть листы "как есть" и "как надо" понимать наоборот?
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 26.08.2010 в 07:31.
SAS888 вне форума Ответить с цитированием
Старый 27.08.2010, 14:08   #9
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Я бы сделал по простому - отсортирОвал бы столбец с номерами, потом бы проверял так: встаю в верхнюю ячейку запоминаю ее - иду вниз на одну запоминаю ее - сравниваю две ячейки - если на равны, то иду опять на одну ячейку вниз - запоминаю ее - сравниваю с предыдущей - если равны, то удаляю - опять на одну ячейку вниз - опять сраниваю если равны удаляю если не равны то запоминаю, как первую переменную и опять вниз ... а потом пустые строки удаляю со сдвигом вверх и все в таблице нет не единого повтора

0_0
Android1 вне форума Ответить с цитированием
Старый 28.08.2010, 14:14   #10
Shpr0T
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 12
По умолчанию

Спасибо, я сам разобрался
Shpr0T вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
суммировать значения повторяющихся ячеек в excel breeze.olga Microsoft Office Excel 17 17.12.2015 17:03
МАКРОС НА ПОИСК, СУММИРОВАНИЕ И УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК provodnikam Microsoft Office Excel 14 19.02.2015 07:53
Удаление повторяющихся записей в БД Dinamik БД в Delphi 8 22.03.2012 22:05
Удаление повторяющихся слов C vivo89 Помощь студентам 2 24.12.2009 09:18
фильтрация повторяющихся ячеек в DBGrid Evgenii БД в Delphi 1 02.08.2009 20:40