Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 16:56   #11
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Demon010 Посмотреть сообщение
А можно без использования 2 листа в книге?
Чтобы обходиться только одним листом где находятся исходные данные?
2-й лист - это просто образец, удалите его. Строки удаляются с того листа, где находится стрелка.
nilem вне форума Ответить с цитированием
Старый 07.06.2011, 16:57   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я чуть помозговал - чем в коде учитывать несортировку, так проще сперва на листе отсортировать (например по допстолбцу с номер & абсолютная_сумма) , потом твоим кодом почистить.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 08.06.2011, 13:46   #13
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

А для файлов с количеством строк 45к не работает(
Demon010 вне форума Ответить с цитированием
Старый 08.06.2011, 16:45   #14
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Оно и не должно работать, все напутал
Из предыдущего поста файл убрал, теперь смотрим здесь.
Маленькая зеленая стрелка удаляет строки на листе - можно использовать, если строк не больше 10000, например.
Для большего кол-ва строк используем большую красную стрелку - удаляет строки из массива, работает быстрее.
... А для еще большего - сиреневую стрелку (файл дополню), вот:
Код:
Sub SmartArrDoljok()    
Dim x, z(), i&, j&, k&: Application.ScreenUpdating = False
With Range("C9:M" & Cells(Rows.Count, 4).End(xlUp).Row + 1)
    x = .Value: .ClearContents
End With
ReDim z(1 To UBound(x), 1 To 11)
For i = 1 To UBound(x) - 1
    If x(i, 2) <> x(i + 1, 2) Or x(i, 8) <> -x(i + 1, 8) Then
        j = j + 1: z(j, 1) = j
        For k = 2 To 11: z(j, k) = x(i, k): Next k
    Else: i = i + 1
    End If
Next i
[c9:m9].Resize(j).Value = z
Application.ScreenUpdating = True
MsgBox "Удалено строк: " & UBound(x) - j - 1
End Sub
Вложения
Тип файла: zip Долг3.zip (19.5 Кб, 8 просмотров)

Последний раз редактировалось nilem; 08.06.2011 в 18:35. Причина: неожиданно пришла мысль :)
nilem вне форума Ответить с цитированием
Старый 09.06.2011, 09:31   #15
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

Премного благодарен Вам за помощь)
Demon010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обїединение ячеек с одинаковыми значениями WORD Сергей846 Microsoft Office Word 9 19.08.2016 22:48
Выборка строк с одинаковыми значениями на разных листах bernanke Microsoft Office Excel 3 26.01.2011 23:29
Нужно удалить все пробелы из написанной строки. ISV-777 Помощь студентам 3 23.12.2010 09:37
Выделение цветом абзацов с одинаковыми числовыми значениями в тексте в Word'e xamillion Microsoft Office Word 16 01.09.2010 08:39