powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление дубликатов строк при выполнении определённого условия.
16 сообщений из 16, страница 1 из 1
Удаление дубликатов строк при выполнении определённого условия.
    #35904562
HyperAthlon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица (для примера беру маленькую) содержащая список товаров и цену. Встречаются одинаковые товары. Мне нужно удалить все повторяющиеся товары (полностью строки) у которых цена больше.

12яблоки100груши80апельсины110бананы70виноград200вишня180яблоки130бананы90

То есть, должна удалиться строка "яблоки" со стоимостью 130, а потом "бананы" со значением 90.
Никак не могу написать нормальный цикл. Всё что пока получилось, так это цикл с одной итерацией, где цветом выделяются первые два повторяющихся товара (просто пробовал для примера), а дальше никак не могу продолжить:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub PoiskPovtorov()
Dim i As Integer
Dim j As Integer
Dim KonetsSpiska As Integer
Dim MyCell As Range
Set MyCell = ActiveSheet.Range("A1")
'------------------------------------------------------------------------------------------
'определение кол-ва строк в списке.
    MyCell.Activate
        ActiveCell.End(xlDown).Activate
        KonetsSpiska = ActiveCell.Row
'------------------------------------------------------------------------------------------
        MyCell.Activate
            For i = ActiveCell.Offset(1, 0).Row To KonetsSpiska
                If ActiveCell.Value = MyCell.Value Then ActiveCell.Interior.ColorIndex = 4
                ActiveCell.Offset(1, 0).Activate
            Next i
End Sub

Я это понимаю так: сначала беру ячейку MyCell и сравниваю с ней все строки находящиеся под ней (в случае совпадения нужно потом ещё If...Then использовать), а потом смещать MyCell на одну строку вниз и повторять всё заново.

P.S. Выполнение сиих действий мне нужно на VBA, ибо формулами и условным форматированием я итак всё это могу быстро сделать! Может кто подскажет (допишет) процедуру!
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35905499
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
регулярный цикл тут не пойдет. лучше использовать итерационный, так как при удалении строк просматриваемый диапазон уменьшается

по алгоритму:
- внешний цикл открывать с первой строки до конечной-1 (последнюю строку не с чем будет сравнивать, так как она последняя)
- надо сделать цикл внутри существующего и в нем просматривать ячейки с текущая+1 по последнюю.
- все сравнения делать во внутреннем цикле
- перед внутренним циклом запоминать значение текущей строки

лучше не активировать текущую ячейку - это только ресы компа в холостую отбирает
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35905565
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно так. необходимые условия
- наличие листа "Лист2", для временного хранения уникальных "фруктов"
- в ячейке A1 наименование столбца, любой текст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Sub test()
Dim DropRows As Range, WRow As Range, I As Long, N As Long
With ActiveSheet
  .Columns("A:A").AutoFit
  If .AutoFilterMode Then .AutoFilterMode = False
  Worksheets("Лист2").Columns( 1 ).Delete
  .Range("A1:A" & .Range("A65536").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
    Unique:=True, CopyToRange:=Worksheets("Лист2").Range("A1")
  Set DropRows = .Rows( 65536 )
  For I =  2  To Worksheets("Лист2").Range("A65536").End(xlUp).Row
    .Range("A:A").AutoFilter Field:= 1 , Criteria1:=Worksheets("Лист2").Cells(I,  1 ), _
      VisibleDropDown:=False
    N =  1 
    For Each WRow In .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows
      If N =  1  Then
        N = WRow.Row
      Else
        If Cells(N,  2 ) > Cells(WRow.Row,  2 ) Then
          Set DropRows = Union(DropRows, Cells(N,  2 ).EntireRow)
          N = WRow.Row
        Else
          Set DropRows = Union(DropRows, WRow)
        End If
      End If
    Next WRow
    If .AutoFilterMode Then .AutoFilterMode = False
  Next I
  If .AutoFilterMode Then .AutoFilterMode = False
  DropRows.EntireRow.Delete
  .Range("A1").Select
End With
End Sub
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35905584
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HyperAthlon,
Вопрос: как формулами и условным форматированием всё это можно быстро сделать????
Я не могу сообразить...
Покажи на примере условного форматирования, пожалуйста.
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35905627
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergeyvg , только первая строка не сравнивается
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35905664
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я ж писал "- в ячейке A1 наименование столбца, любой текст"
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35906859
HyperAthlon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем большое за примеры и объяснения!!!

Сергей06,
Ну да, про формулы я конечно преувеличил сильно:) удалить строки ими не получится! А про условное форматирование я имел ввиду, что используя небольшую таблицу можно просто в Excel 2007 выбрать в Условном форматировании Повторяющиеся значения, а потом вручную поудалять ненужные строки.
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35907135
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HyperAthlon,
Да, но как условным форматированием выделять с минимальной / максимально стоимостью?
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #35912097
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #36118582
NV-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если мне не надо удалять строки, а только чтобы автоматически из 1й ячейки скопировались значения во 2ую при условии, что значение в 3ей ячейке >1.

Возможно ли это сделать формулами?
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #36122492
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NV-SА если мне не надо удалять строки, а только чтобы автоматически из 1й ячейки скопировались значения во 2ую при условии, что значение в 3ей ячейке >1.

Возможно ли это сделать формулами?

Можно выкладывай пример - покажу.
хотя насколько я понял, то где-то так: в ячейку A2 формулу
=Если(A3>1;A1;"")
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Удаление дубликатов строк при выполнении определённого условия.
    #37894564
Smile2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удаление дубликатов строк при выполнении определённого условия.
А можно ли сделать условие, чтобы у дубликатов цена сравнивалась и, если значение не одинаковое то удаляется?
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #37894568
Smile2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
з.ы. удаляются оба дубликата.
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #37895552
Денис Б.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо удалять чего-то, что можно сразу не включать.
используй функцию =СУММЕСЛИМН() и в условиях указывай, что тебе захочется
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #37895673
Smile2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня зада в чем, грубо говоря абстрактная видеотека, вернули диск записала, отдала - записала. вот и потом надо проверить какие фильмы вернулись,а какие нет.
...
Рейтинг: 0 / 0
Удаление дубликатов строк при выполнении определённого условия.
    #37899634
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так храните признак "состояния диска" в той же табличке, и при "записывании" - меняйте статус. Я когда-то такую "типа абстрактную видеотеку" делал, так таких вопросов не возникало изначально...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление дубликатов строк при выполнении определённого условия.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]