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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2015, 09:45   #1
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию Удаление повторяющихся значений

Доброго времени суток!
Имеется такая задача - есть список фамилий и телефонных номеров. Фамилии могут встречаться два раза, всегда рядом,напротив нижней из них обязательно будет телефонный номер. Может быть одна фамилия без телефонного номера. Может быть одна фамилия с телефонным номером.
Нужно пройтись по всему списку и удалить фамилии, встречающиеся в списка два раза - удалить нужно строку с фамилией без телефонного номера и оставить все остальное.

Написал макрос, но он как-то "некузяво" работает - удаляет фамилии, встречающиеся в списке один раз, если у них нет телефонного номера

Пример прикладываю
Вложения
Тип файла: zip Номера.zip (12.6 Кб, 12 просмотров)
27102014 вне форума Ответить с цитированием
Старый 07.05.2015, 09:57   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Строки нужно удалять проходом снизу вверх - тогда будет кузяво.
По остальному не понял - по каким условиям удалять...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.05.2015, 10:01   #3
Gekan
Пользователь
 
Регистрация: 29.06.2012
Сообщений: 39
По умолчанию

Строки вроде принято удалять с конца. Можно и с начала диапазона, но тогда надо будет изменять переменную цикла.

Так вроде работает:

Код:
Sub Повторяющиеся_ФИО()

'номер последней строки
lLastRows = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

        For i = lLastRows To 2 Step -1
        If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
           If Cells(i - 1, 2).Value = "" Then Rows(i - 1).Delete
        End If
        Next

MsgBox ("готово")

End Sub
Gekan вне форума Ответить с цитированием
Старый 07.05.2015, 10:07   #4
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Строки нужно удалять проходом снизу вверх - тогда будет кузяво.
По остальному не понял - по каким условиям удалять...
Сейчас попробую потестировать на рабочем файле с циклом снизу-вверх.
Удалять нужно только дублирующиеся фамилии, например, есть две строки - Иванов и Иванов 589736, удалить нужно строку Иванов и оставить строку с телефонным номером Иванов 589736
27102014 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос повторяющихся значений Artem_85 Microsoft Office Excel 6 07.11.2012 13:49
удаление повторяющихся строк с одновременным сумированием значений выбранного столбца karasi Microsoft Office Excel 5 13.07.2011 09:15
удаление из таблицы повторяющихся значений CodeNOT PHP 2 28.03.2011 12:01
Удаление повторяющихся значений в строке aimk0 Помощь студентам 7 11.10.2010 16:58
Поиск повторяющихся значений Flangini Microsoft Office Excel 23 22.02.2008 15:57