Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удалить строки с повторами в столбце. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удалить строки с повторами в столбце.
wwizard Дата: Понедельник, 26.08.2013, 17:07 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Очень надо помочь, с мааленьким макросом. Нужно в заданом прайсе:
1. Удалить позиции (строки) которых нет в ячейках в колонке 5
2. Если есть дубли позиций по колонке 5 удалить строки предварительно вывести их в отдельный список (лист)
К сообщению приложен файл: test1.xlsx (15.3 Kb)
 
Ответить
СообщениеОчень надо помочь, с мааленьким макросом. Нужно в заданом прайсе:
1. Удалить позиции (строки) которых нет в ячейках в колонке 5
2. Если есть дубли позиций по колонке 5 удалить строки предварительно вывести их в отдельный список (лист)

Автор - wwizard
Дата добавления - 26.08.2013 в 17:07
Hugo Дата: Понедельник, 26.08.2013, 17:12 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
СЧЁТЕСЛИ() и сортировка творят чудеса! :)
Вообще задача непонятна.
1 непонятно вообще, 2 непонятно на 66%


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеСЧЁТЕСЛИ() и сортировка творят чудеса! :)
Вообще задача непонятна.
1 непонятно вообще, 2 непонятно на 66%

Автор - Hugo
Дата добавления - 26.08.2013 в 17:12
SkyPro Дата: Понедельник, 26.08.2013, 18:11 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Цитата
1. Удалить позиции (строки) которых нет в ячейках в колонке 5

Решается сортировкой и "ручным" удалением. Если не подходит - [vba]
Код
Sub del0()
For Each cell In Cells(1, 5).Resize(ActiveSheet.Cells(ActiveSheet.Rows.Count, 5).End(xlUp).Row, 1)
     If cell.Value = "" Then
         Rows(cell.Row).Delete Shift:=xlUp
     End If
Next
End Sub
[/vba]
Цитата
2. Если есть дубли позиций по колонке 5 удалить строки предварительно вывести их в отдельный список (лист)

Вкладка "данные" - "Удалить дубликаты"


skypro1111@gmail.com
 
Ответить
Сообщение
Цитата
1. Удалить позиции (строки) которых нет в ячейках в колонке 5

Решается сортировкой и "ручным" удалением. Если не подходит - [vba]
Код
Sub del0()
For Each cell In Cells(1, 5).Resize(ActiveSheet.Cells(ActiveSheet.Rows.Count, 5).End(xlUp).Row, 1)
     If cell.Value = "" Then
         Rows(cell.Row).Delete Shift:=xlUp
     End If
Next
End Sub
[/vba]
Цитата
2. Если есть дубли позиций по колонке 5 удалить строки предварительно вывести их в отдельный список (лист)

Вкладка "данные" - "Удалить дубликаты"

Автор - SkyPro
Дата добавления - 26.08.2013 в 18:11
Hugo Дата: Понедельник, 26.08.2013, 20:02 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Т.е.
1 - удалить строки, в которых в столбце 5 пусто?
Тогда SkyPro угадал :)
2- что удалить, что вывести???...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТ.е.
1 - удалить строки, в которых в столбце 5 пусто?
Тогда SkyPro угадал :)
2- что удалить, что вывести???...

Автор - Hugo
Дата добавления - 26.08.2013 в 20:02
vodomut Дата: Среда, 28.08.2013, 16:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Код предложенный SkyPro не будет корректно работать в случаях, когда две соседние строки не содержат данных в 5 колонке.
Макрос удалит первую строку с пустой ячейкой (следующая строка с пустой ячейкой займёт место уже обработанной строки) и продолжит работу со следующей строки.
После удаления строки необходимо повторно проверить наличие данных в текущей строке.
 
Ответить
СообщениеКод предложенный SkyPro не будет корректно работать в случаях, когда две соседние строки не содержат данных в 5 колонке.
Макрос удалит первую строку с пустой ячейкой (следующая строка с пустой ячейкой займёт место уже обработанной строки) и продолжит работу со следующей строки.
После удаления строки необходимо повторно проверить наличие данных в текущей строке.

Автор - vodomut
Дата добавления - 28.08.2013 в 16:12
SkyPro Дата: Среда, 28.08.2013, 16:32 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Цитата (vodomut, Среда, 28.08.2013, 16:12 # 5)
Код предложенный SkyPro не будет корректно работать

Вы правы. Спасибо за замечание.
Правильно будет вот так:
[vba]
Код
Sub del0()
Dim rRange As Range, rCell As Range
For Each rCell In Cells(1, 5).Resize(ActiveSheet.UsedRange.Rows.Count, 1)
       If rCell.Value = "" Then
               If rRange Is Nothing Then
                   Set rRange = rCell
               Else
                   Set rRange = Union(rRange, rCell)
               End If
       End If
Next
rRange.EntireRow.Delete
End Sub
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Среда, 28.08.2013, 16:35
 
Ответить
Сообщение
Цитата (vodomut, Среда, 28.08.2013, 16:12 # 5)
Код предложенный SkyPro не будет корректно работать

Вы правы. Спасибо за замечание.
Правильно будет вот так:
[vba]
Код
Sub del0()
Dim rRange As Range, rCell As Range
For Each rCell In Cells(1, 5).Resize(ActiveSheet.UsedRange.Rows.Count, 1)
       If rCell.Value = "" Then
               If rRange Is Nothing Then
                   Set rRange = rCell
               Else
                   Set rRange = Union(rRange, rCell)
               End If
       End If
Next
rRange.EntireRow.Delete
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 28.08.2013 в 16:32
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!