Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Удаление дубликатов строк в таблице Excel.


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

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

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

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

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

Автор: Coder 8.8.2008, 02:08
Staruha,  smile 

Автор: Staruha 8.8.2008, 13:57

Остается тебе определить диапазон и подставить вместо 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

Автор: Akina 8.8.2008, 14:23
Цитата(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)

Автор: Staruha 8.8.2008, 15:00
Как говорится По миру по нитке. Я так думаю код еще преукрасится. smile 

Автор: mihanik 21.8.2008, 23:52
Помечу решённым.

Автор: chirs 15.11.2017, 07:10
Всё делается гораздо проще. Вообще без программирования. 
1. Добавляешь после последнего столбца в новом столбце формулу =СЦЕПИТЬ(A2;B2;C2) и протягиваем формулу на всю длину таблицы. Получится столбец, содержащий ФИО. 
2. Затем выделяешь всю таблицу, включая столбец с формулой и в закладке "Данные" жмешь кнопку "Удалить дубликаты", в появившемся окне снимаешь все галочки и ставишь только галочку со столбцом содержащим объединенные ФИО. Жмешь Ок. Дубли удалятся.
3. Удаляешь больше не нужную последнюю колонку с формулой с ФИО.
Простые способы поиска и удаления дублей: http://www.codernotes.ru/articles/vba/poisk-i-udalenie-dublikatov-v-excel.html

Автор: Akina 15.11.2017, 08:03
chirs, вот ты правда думаешь, что автор все 9 лет сидит и ждёт ответа?

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


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

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


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)