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

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

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

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

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

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

На последнем примере из 4109 строк удалил 219. Вручную обнаружил только Кузнецову З.А., которую можно было бы удалить (-20,59/+20,59).
Наверное, еще какой-нибудь цикл надо воткнуть, или уж Бог с ней, с этой Кузнецовой
Главное, что лишнего не удаляет - общие суммы до и после совпадают. Проверьте сначала на маленьком примере. Файл прежний, см. Лист2. Вот код:
Код:
Sub DemonSum()    'удалить строки в массиве с суммой = 0
Dim i As Long, j As Long, k As Long, u As Long, v As Long
Dim x, z(), s As Currency: Application.ScreenUpdating = False

With Range("C9:N" & Cells(Rows.Count, 4).End(xlUp).Row + 1)
    x = .Value: .ClearContents
End With
ReDim z(1 To UBound(x), 1 To 12)

For i = 1 To UBound(x) - 1
    s = x(i, 12): j = i
    Do While x(i, 2) = x(i + 1, 2)
        i = i + 1: s = s + x(i, 12)
        If s = 0 Then Exit Do
    Loop
    If s <> 0 Then
        For k = j To i
            u = u + 1: z(u, 1) = u
            For v = 2 To 12: z(u, v) = x(k, v): Next v
        Next k
    End If
Next i

[c9:n9].Resize(u).Value = z: Application.ScreenUpdating = True
MsgBox "Удалено строк: " & UBound(x) - u - 1 & " из: " & UBound(x) - 1
End Sub
Кстати, можно еще сиреневую стрелку задействовать в кач-ве доп. обработки. Только там надо диапазоны поправить.
Вложения
Тип файла: zip Долг3.zip (27.7 Кб, 7 просмотров)

Последний раз редактировалось nilem; 09.06.2011 в 18:01.
nilem вне форума Ответить с цитированием
Старый 09.06.2011, 18:31   #12
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Да, сиреневый макрос еще 40 строк удалил. В файле на Лист2 делай Шаг1, Шаг2.
Если нужно еще оптимизировать, то, видимо, без "рюкзака" не обойтись
Вложения
Тип файла: zip Долг4.zip (27.6 Кб, 10 просмотров)
nilem вне форума Ответить с цитированием
Старый 10.06.2011, 13:29   #13
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Я не знаю насколько это актуально - в приложении полностью написан под твою просьбу код. Правда долго работает, но если захочешь уже сам сократишь
Вложения
Тип файла: rar Книга1.rar (358.0 Кб, 12 просмотров)
gluk_fm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить из ListBox1 строки которые встречаются в ListBox2 Aleksandr Общие вопросы Delphi 8 07.06.2011 15:52
Вычисление количества элементов массива, которые при округлении дают 6 Катюшенька Помощь студентам 4 22.12.2008 23:44
Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми! Snake08 Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 18:33
Удалить из второй строки те слова, которые есть в первой строке innaa639 Паскаль, Turbo Pascal, PascalABC.NET 2 26.11.2008 15:43
Как удалить слово из строки? Ellita Общие вопросы C/C++ 7 19.09.2007 15:43