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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 06:52   #1
PhilAT
Пользователь
 
Аватар для PhilAT
 
Регистрация: 22.04.2010
Сообщений: 15
По умолчанию Как сформировать новую таблицу из старой, исключив записи с нулевым итогом

Например:

В столбце "Оплата" - только положительные числа
В столбце "Долг" - только отрицательные числа.
*Под чертой – это пример новой таблицы, которая должна быть в новом файле.

Вот "Коля" в сроке 2 имеет значение 20, а в строке 6 -20. Этот "Коля" нам в новой таблице не нужен.
"Вася" - наоборот, сначала -30, потом 30. Тоже не нужен в новой таблице.
"Петя" -50+40=-10 – переносим данные строки "Петя" в новую таблицу со значением -10. И так далее.
Причем значение "дата" должно копироваться с той строки, в которой возникла разница. Например, у "Пети" и "Миши" все ясно, а вот у "Саши": долг, оплата и снова долг. Если долг будет увеличиваться, то сумма долга возрастет, а дата останется той, когда этот долг возник - 12.01.10.

Вообще не могу сообразить в какую сторону двигаться. Спасибо за любую помощь.
Вложения
Тип файла: rar Sample01.rar (2.2 Кб, 11 просмотров)

Последний раз редактировалось PhilAT; 28.12.2010 в 12:56. Причина: уточнение условий
PhilAT вне форума Ответить с цитированием
Старый 28.12.2010, 07:08   #2
brans
Форумчанин
 
Регистрация: 15.10.2010
Сообщений: 105
По умолчанию

Под чертой у Вас сформираованна табличка окончательная с доглгами и оплатой. не плохо бы было добавить к ней шапку и провести фильтрацию с критерием долг меньше нуля. (Вам нужно средствами Excel или на VBA?)... это как вариант, если я Вас правильно поняла, то может подойти, а если нет, то извините(((
brans вне форума Ответить с цитированием
Старый 28.12.2010, 09:10   #3
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Два варианта - отдельной таблицей и автофильтром. Отслеживается не дата возникновения долга, а последняя дата.
Вложения
Тип файла: rar долг.rar (3.6 Кб, 10 просмотров)
vikttur вне форума Ответить с цитированием
Старый 28.12.2010, 11:15   #4
PhilAT
Пользователь
 
Аватар для PhilAT
 
Регистрация: 22.04.2010
Сообщений: 15
По умолчанию

2 brans
Под чертой – это пример новой таблицы. VBA, скорее всего, лучше подойдет для этой задачи.

2 vikttur
Дело в том, что реальная таблица имеет несколько десятков тысяч строк и несколько VBA-скриптов, поэтому нужно не фильтровать,а перенести в новую таблицу, в другой файл. Но Ваш подход я препарирую, возможно что-нибудь найду там полезное. Спасибо!

Последний раз редактировалось PhilAT; 28.12.2010 в 11:23.
PhilAT вне форума Ответить с цитированием
Старый 28.12.2010, 15:14   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Вот так попробуйте.
Вложения
Тип файла: zip Sample01Филат.zip (17.7 Кб, 15 просмотров)
nilem вне форума Ответить с цитированием
Старый 10.01.2011, 18:30   #6
PhilAT
Пользователь
 
Аватар для PhilAT
 
Регистрация: 22.04.2010
Сообщений: 15
По умолчанию

2 nilem
Спасибо, это работает как следует!
Только почему-то не могу понять как адаптировать к своей таблице, в которой Оплата и Долг не в 3-м и 4-м столбцах, а в 13-м и 14-м. Промежуточные столбцы имеют данные, которые тоже надо копировать, если по критериям (ну, которые в примере: Оплата и Долг) строка выбрана для копирования в другую таблицу.
Казалось бы, надо просто заменить 3 на 13 и 4 на 14, но не понимая что и как - не получается. И разобраться не смог.
Можно немножко прокомментировать текст VBA?
PhilAT вне форума Ответить с цитированием
Старый 10.01.2011, 19:50   #7
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Писать комментарии неинтересно. Лучше напишу еще вариант кода. См. файл.
Если таблицы большие, попробуйте сравнить варианты по скорости выполнения.
Вложения
Тип файла: zip Sample02Филат.zip (22.8 Кб, 12 просмотров)
nilem вне форума Ответить с цитированием
Старый 11.01.2011, 18:41   #8
PhilAT
Пользователь
 
Аватар для PhilAT
 
Регистрация: 22.04.2010
Сообщений: 15
По умолчанию

2 nilem
Спасибо, дружище!
Проблема оказалась в другом: если в сравниваемой ячейке (13-й или 14-й) нет цифры, но вдруг оказывается пробел или формула - скрипт вываливается.

Еще интересная ситуация с первым столбцом, с датой. Дату почему-то коробит интересным способом: после переноса число и месяц меняются местами. Причём не важен формат или локаль исходной ячейки.

И, кстати, работает молниеносно! Так, что я не стал сравнивать скорость. Просто подчистил пробелы, формат ячеек с датой преобразовал в число, а потом в целевой таблице преобразовал обратно.
Еще раз спасибо!!!

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

----------
Ну, чтобы была какая-то завершенность. Вот так учитывает пробелы и заодно точки вместо запятых в дробных числах (тоже часто бывает).
Вложения
Тип файла: zip Sample03Филат.zip (23.8 Кб, 17 просмотров)

Последний раз редактировалось nilem; 11.01.2011 в 20:27. Причина: Оказывается, уже не надо. ...и все-таки
nilem вне форума Ответить с цитированием
Старый 12.01.2011, 14:34   #10
PhilAT
Пользователь
 
Аватар для PhilAT
 
Регистрация: 22.04.2010
Сообщений: 15
По умолчанию

2 nilem
Я тоже люблю завершенность, но не всегда могу её добиться.)

Да, так еще лучше. Только с датой – все равно не понятно??? Тут уже "спортивный" интерес, что ли. Потому, что не уверен, что мне этот скрипт еще раз понадобится.
PhilAT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос, который создает новую таблицу Olya2131 Microsoft Office Access 4 08.06.2010 20:27
получить новую таблицу по результатам запроса T@tali БД в Delphi 6 04.06.2010 07:05
Как в FastReport-е сформировать новую страницу _SERGEYX_ Компоненты Delphi 0 13.02.2009 11:26
сформировать таблицу TABLE3 popivq Microsoft Office Access 2 20.09.2008 01:51