Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление дубликатов строк при выполнении определённого условия. / 16 сообщений из 16, страница 1 из 1
31.03.2009, 23:26
    #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
01.04.2009, 12:55
    #35905499
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов строк при выполнении определённого условия.
регулярный цикл тут не пойдет. лучше использовать итерационный, так как при удалении строк просматриваемый диапазон уменьшается

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

лучше не активировать текущую ячейку - это только ресы компа в холостую отбирает
...
Рейтинг: 0 / 0
01.04.2009, 13:20
    #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
01.04.2009, 13:24
    #35905584
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов строк при выполнении определённого условия.
HyperAthlon,
Вопрос: как формулами и условным форматированием всё это можно быстро сделать????
Я не могу сообразить...
Покажи на примере условного форматирования, пожалуйста.
...
Рейтинг: 0 / 0
01.04.2009, 13:35
    #35905627
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов строк при выполнении определённого условия.
sergeyvg , только первая строка не сравнивается
...
Рейтинг: 0 / 0
01.04.2009, 13:44
    #35905664
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов строк при выполнении определённого условия.
я ж писал "- в ячейке A1 наименование столбца, любой текст"
...
Рейтинг: 0 / 0
01.04.2009, 21:01
    #35906859
HyperAthlon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дубликатов строк при выполнении определённого условия.
Спасибо всем большое за примеры и объяснения!!!

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

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

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

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


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