Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление дубликатов строк в таблице Excel. 
V
    Опции темы
Coder
Дата 7.8.2008, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



В программирование в Excel "два по пять", поэтому прошу помощи в написании кода:

Есть такая таблица:

Фамилия    Имя    Отчество        № Приказа    Дата приказа
Кашина    Евгения    Алексеевна    16367/11    04.07.2008
Клешнина    Маргарита    Андреевна    11365/11    04.01.2007
Ларких                Михаил    Павлович    16450/11    14.07.2008
Клешнина    Маргарита    Андреевна    16365/11    04.07.2008

Как удалить повторяющиеся строки, но чтобы одна из них осталась. Сравнивать нужно по 3-м столбцам - Фамилия, Имя, Отчество.
Из приведенного примера нужно удалить строку №4 (или 1), т.к. совпадает Клешнина Маргарита Андреевна.

PM MAIL   Вверх
Staruha
Дата 7.8.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Сначала сортировка потом переменной String присваиваешь значение первой строки и идешь по строкам, начиная со второй.Если String=Cells(i,Column),удаляешь строку если нет присваиваешь новое   значение Stringy


--------------------
Возмездие настигнет
PM MAIL   Вверх
Coder
Дата 8.8.2008, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Staruha,  smile 
PM MAIL   Вверх
Staruha
Дата 8.8.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27




Остается тебе определить диапазон и подставить вместо 100 и отсортировать все это уже обсуждалось
Код

Private Sub CommandButton1_Click()
Dim Str As String
Dim i As Integer
 Str = Cells(1, 1) & Cells(1, 2) & Cells(1, 3)
  For i = 2 To 100
   If Str = "" Then
   Exit For
   End If
  
   If Str = Cells(i, 1) & Cells(i, 2) & Cells(i, 3) Then
   Rows(i).Delete
   i = i - 1
   Else
   
    Str = Cells(i, 1) & Cells(i, 2) & Cells(i, 3)
  End If

  Next i
End Sub



--------------------
Возмездие настигнет
PM MAIL   Вверх
Akina
Дата 8.8.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20413
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 24
Всего: 449



Цитата(Coder @  7.8.2008,  07:26 Найти цитируемый пост)
Сравнивать нужно по 3-м столбцам - Фамилия, Имя, Отчество.

А если в других строках есть различия?
Код

Str = Cells(1, 1) & Cells(1, 2) & Cells(1, 3)

Хорошо бы добавить разделитель, заведомо отсутствующий в данных, скажем
Код

Str = Cells(1, 1) & vbLF & vbCR & Cells(1, 2) & vbLF & vbCR & Cells(1, 3)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Staruha
Дата 8.8.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Как говорится По миру по нитке. Я так думаю код еще преукрасится. smile 


--------------------
Возмездие настигнет
PM MAIL   Вверх
mihanik
Дата 21.8.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Помечу решённым.


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
chirs
Дата 15.11.2017, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.11.2017

Репутация: нет
Всего: нет



Всё делается гораздо проще. Вообще без программирования. 
1. Добавляешь после последнего столбца в новом столбце формулу =СЦЕПИТЬ(A2;B2;C2) и протягиваем формулу на всю длину таблицы. Получится столбец, содержащий ФИО. 
2. Затем выделяешь всю таблицу, включая столбец с формулой и в закладке "Данные" жмешь кнопку "Удалить дубликаты", в появившемся окне снимаешь все галочки и ставишь только галочку со столбцом содержащим объединенные ФИО. Жмешь Ок. Дубли удалятся.
3. Удаляешь больше не нужную последнюю колонку с формулой с ФИО.
Простые способы поиска и удаления дублей: http://www.codernotes.ru/articles/vba/pois...ov-v-excel.html
PM MAIL   Вверх
Akina
Дата 15.11.2017, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20413
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 24
Всего: 449



chirs, вот ты правда думаешь, что автор все 9 лет сидит и ждёт ответа?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Staruha
Дата 15.11.2017, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Цитата(Akina @  15.11.2017,  08:03 Найти цитируемый пост)
chirs, вот ты правда думаешь, что автор все 9 лет сидит и ждёт ответа? 


Он набирается опыта. Решил порешать задачки.

Цитата(chirs @  15.11.2017,  07:10 Найти цитируемый пост)
Всё делается гораздо проще. Вообще без программирования.


 Со временем увидишь ,что с кодом надежнее. Пользователи частенько все ломают,толком мышкой не умеют работать. Все улетает. Пароль не всегда удобен. Для некоторых просто ставишь кнопку и говоришь .что б только сюда нажимали. А ты говоришь столбец выделить  smile 

Это сообщение отредактировал(а) Staruha - 15.11.2017, 10:56


--------------------
Возмездие настигнет
PM MAIL   Вверх
Google
  Дата 25.8.2019, 07:32 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0750 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.