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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 09:49   #1
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию Как удалить строки, которые дают в сумме 0?

Добрый день.
Поставили задачу следующего характера - написать макрос или VBA для удаления строк в файле, значения которых дают в сумме "0"
В файле содержится более 30000 строк, сразу оговариваюсь
Строки суммируются строго по лицевому счету, а не по всему файлу
Подскажите, как лучше сделать
Образец прилагаю, цветом выделил как должно суммироваться
Вложения
Тип файла: zip Задолженность.zip (10.4 Кб, 16 просмотров)
Demon010 вне форума Ответить с цитированием
Старый 09.06.2011, 10:11   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Думаю, задача непростая.
Я не возмусь...
По теме:
http://forum.ixbt.com/topic.cgi?id=23:40922
http://forum.sources.ru/index.php?showtopic=310469

Вот похоже точное попадание:
Цитата:
Имеется 5 неделимых предметов. Для каждого предмета известна его масса (в кг.). Величины массы являются натуральными числами. Ваша цель состоит в том, чтобы определить, существует ли несколько предметов, суммарная масса предметов которого ровно 16 кг. Если такой набор существует, то требуется определить список предметов в наборе.
Это из лекции по ссылке выше:
http://forum.sources.ru/index.php?ac...&attach_id=378
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 09.06.2011 в 10:17.
Hugo121 вне форума Ответить с цитированием
Старый 09.06.2011, 10:27   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Думаю, задача непростая.
Согласен,не простая,но решаемая.Можно использовать как вариант метод заполнения рюкзака.работать будет относительно долго,но намного быстрее.чем просто перебор комбинаций.Надо ведь выявить максимум строк для удаления.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 09.06.2011, 10:31   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Demon010, Вы программистом работаете? Мне кажется, это работа для ИТ, пишите заявку...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.06.2011, 10:33   #5
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Demon010, Вы программистом работаете? Мне кажется, это работа для ИТ, пишите заявку...
Системным администратором работаю, нету у нас ИТ
Demon010 вне форума Ответить с цитированием
Старый 09.06.2011, 10:42   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Системным администратором работаю, нету у нас ИТ
Заявку можно и на форум написать,возможно кто то и выполнит функции вашего не существующего ИТ
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 09.06.2011, 16:35   #7
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

А может все проще? Ведь, принимая оплату, гасят сначала старые долги, а потом текущую задолженность?
Demon010, можете всю таблицу показать?
На маленьком примере работает, но боюсь выкладывать - уж больно просто.
nilem вне форума Ответить с цитированием
Старый 09.06.2011, 16:54   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Т.е. на примере можно тупо суммировать в словаре (запоминая номера строк), пока не будет 0, и эти строки удалить. Обнулить массив строк и начать набирать снова.
Примерно так, Николай?

Но как быть, если первая запись с большим плюсом? (да вообще с плюсом)
Начинать, как только появился минус?
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 09.06.2011 в 16:58.
Hugo121 вне форума Ответить с цитированием
Старый 09.06.2011, 17:01   #9
Demon010
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 10
По умолчанию

вся таблица весит порядка 10 метров, там за 30к строк в ней
просто дело в чем - иногда заплатили больше, иногда остались должны
вот отсюда и необходимо им чтобы таблица уменьшилась за счет этих удаленных строк, которые в сумме между собой дают 0 по одному и тому же задолжнику (идентификатору) в столбце "итого"
Могу прикрепить лишь малую часть файла, но больше чем изначально
Вложения
Тип файла: zip Задолженность.zip (205.2 Кб, 15 просмотров)
Demon010 вне форума Ответить с цитированием
Старый 09.06.2011, 17:37   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В общем так и есть.
Но вот 700730060090 выбивается из списка...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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