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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 00:04   #1
alegu
Пользователь
 
Регистрация: 04.03.2010
Сообщений: 14
По умолчанию Выделение строк при превышении количества на определенную дату

Здравствуйте уважаемые участники форума!
Помогите, пожалуйста, решить следующую проблему:
Имеется определенная программа. Из нее выгружаются файлы в формате .dbf.
Имеется необходимость проконтролировать данные, содержащиеся в этих файлах. Они более или менее корректно открываются в Excel 2003. В таблице имеются множество записей на определенные даты месяца. Необходимо произвести выделение строк каким-либо цветом при превышении определенного количества записей на каждую дату по нижеуказанному условию.
В каждой строке имеется столбец – PCOD (в Excel AC). Данные в нем имеют примерно такой вид: 1026401378552 103. Значение имеют последние 3 цифры (их может быть 3 или 2) – в данном примере 103.
Так вот, количество строк, в зависимости от этих номеров, разное. Например, для номера 103 оно не должно превышать 3, а для номера 60 – 5. В приложенных файлах будут фигурировать эти цифры. А вообще, этих номеров 20-30 шт. и практически у всех разное количество. Их, наверно, было бы целесообразно забить в код. Но боюсь, что они будут меняться.
Даты, по которым необходим контроль, находятся в столбце DFPC (в Excel I).
Прикладываю файл с примером Исходник.xls. Я сохранил в формате xls потому, что так проще было создавать пример. Макросы нормально работают в файлах dbf, открытых в Excel 2003, проблемы только с корректным сохранением (но мне это не важно). Структуру таблицы я оставил такую, как она есть – в ней очень много столбцов. Я оставил только те данные, которые имеют значение для поиска. В другом файле Результат.xls то, как хотелось бы видеть результат. Файлы находятся в архиве Пример.zip.
Наверно имело бы смысл запускать макрос из файла надстройки, т.к. из вышеуказанной программы выгружается много разных файлов, требующих контроля.
Количество строк в файлах разное и может достигать 5000-6000.
Надеюсь на помощь.
С уважением,
Александр
Вложения
Тип файла: zip Пример.zip (11.5 Кб, 19 просмотров)
alegu вне форума Ответить с цитированием
Старый 17.03.2010, 01:25   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение.
в 43-й колонке посчитано закрашивать/нет.
Вложения
Тип файла: rar Книга275.rar (7.5 Кб, 22 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.03.2010, 11:29   #3
alegu
Пользователь
 
Регистрация: 04.03.2010
Сообщений: 14
По умолчанию

Здравствуйте IgorGO!

Спасибо вам большое, что приняли участие в решении моей проблемы!

Я не совсем понял ваш вопрос. Отвечаю как понял: 43-ю и последующие колонки закрашивать не обязательно. Эти закрашивания носят информативный характер. После того, как будут найдены превышения нужно будет зайти в исходную программу и исправить превышения. Смысл в том, что найти вручную эти превышения в 5000-6000 стороках нормальному человеку, наверно, не под силу.
Мне думалось, что более эффективным было бы решение этой проблемы при помощи VBA, т.к. из программы выгружается множество файлов, подлежащих контролю...
Также, например, при попытке отсортировать даты по возрастанию, выдается ошибка о циклических ссылках...

В любом случае, огромное спасибо за участие!

С уважением,
Александр

Последний раз редактировалось alegu; 17.03.2010 в 11:36.
alegu вне форума Ответить с цитированием
Старый 17.03.2010, 22:51   #4
alegu
Пользователь
 
Регистрация: 04.03.2010
Сообщений: 14
По умолчанию

Добрый вечер IgorGO!

Я еще раз проверил присланный вами файл с формулами. Продолжил формулы в 43 колонке до конца строк. Все работает корректно только до 59 строки...

Моя проблема, к сожалению, не решена...

Обращаюсь также к другим участникам форума: если кто-то знает решение моей проблемы, помогите пожалуйста!!!!!

С уважением,
Александр
alegu вне форума Ответить с цитированием
Старый 18.03.2010, 01:39   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

У Вас установлен Access .Есть Возможность файл dbf открыть и сохранить как mdb.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 18.03.2010, 03:44   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Все работает корректно только до 59 строки...
я допустил ошибку в подготовке данных.
правее таблицы сформирована вспомогательная таблица
60 103
5 3
отметьте ячейки с значениями 60 и 103, назначьте им формат "текст", поставьте курсор в ячейку с 103 и нажмите энтер. теперь там не число 103, а строка "103" и все будет отображаться правильно. надеюсь вы обратили внимание, что там храниться " 60", а не "60"
успехов!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.03.2010, 07:41   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Александр.
нельзя ли уточнить Вашу "задачу" :
".множество записей на определенные даты месяца...произвести выделение...при превышении..количества записей на каждую дату по... условию.." "..количество строк..не должно превышать..для номера 60 – 5..", в файле Результат на дату 02.02.2010, строк содержащих ..60 - четыре, на 27.02.2010 - шесть, по какому критерию выполнена "цветовая маркировка" ? Возможно достаточно получить сгруппированный список с указанием кол-ва записей (строк) в группе?
Думаю существует "конечная цель" ради которой Вы хотите выполнять "выделение" (маркировку), может посвятите в неё, легче будет придумать "вариант решения"
В любом случае для создания "варианта решения" желательно получить от Вас архив с оригинальным файлом в формате DBF, а не его XLS "аналогом".
Мнение : я противник применения для работы с данными "маркировки цветом", даже только по тому, что некоторые люди страдают дальтонизмом стоит отказаться от "цветовой градации статуса" (это не относится к отчетам)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 18.03.2010, 18:54   #8
alegu
Пользователь
 
Регистрация: 04.03.2010
Сообщений: 14
По умолчанию

Здравствуйте!

Спасибо всем, кто принял участие в решении моего вопроса!

Отвечаю конкретным участникам

doober

Цитата:
У Вас установлен Access .Есть Возможность файл dbf открыть и сохранить как mdb.
Access установлен, а смысл какой? Я попробовал на скорую руку сохранить как mdb - ничего не получилось...

Igor_GO

Я проделал все так, как вы написали, но результат тот же: корректно считает только до 59 строки...
Может, я что-то напутал? Вроде, все варианты перепробовал...
Буду разбираться...

Евгений

Мне показалось, что я пример довольно подробно расписал.
Цветом маркируются те записи, которые превышают заданное количество, а именно 5 для 60 и 3 для 103. Т.е. записей для каждой даты должно быть не больше этих цифр. В примерной таблице имеется колонка PCOD, в которой забиты данные 1006640977842 103 или 1016340477542 60. В даноом примере их 2 , а на самом деле их шт. 20-30. У каждого этого номера свое количество записей, которые не должны быть превышены в каждой дате.

Наверно имело бы смысл сделать это макросом и запускать его из файла надстройки, т.к. из вышеуказанной программы выгружается много файлов, требующих контроля.

Конечная цель конечно же существует: найти в этом файле превышения, затем зайти в исходную программу (из которой выгружаются dbf) исправить все, а затем произвести корректную выгрузку и... сдать отчет.

Предвосхищая ваш возможный ворос о том, зачем выгружать и править, когда можно сразу поправить в базах программы, скажу, что так не получится. Там полно всяких таблиц зависящих друг от друга, поэтому корректная правка воможна только в самой программе. Тогда все встает на свои места. Глазами в программе тоже не проконтролируешь - слишком много записей и критериев.
По поводу оригинального dbf-а - там содержится конфиденциальная информация. В примере я оставил все колнки, сколько и как были. Данные же оставил только те, которые необходимы для поиска...

Если я снова что-то не так объяснил, то вы меня направьте в нужное русло

Да, вот еще: таблицу можно сортировать как угодно: например по датам...


Огромное всем спасибо за участие!

С уважением,
Александр
alegu вне форума Ответить с цитированием
Старый 18.03.2010, 19:09   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не хотелось второй раз файл цеплять...
Вложения
Тип файла: rar Книга275.rar (9.6 Кб, 14 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.03.2010, 19:44   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

alegu Хотя бы для этого.
Посмотрите вложение.
Если пойдете этим путем
Можно соответствующий запрос создать


В референсах добавте ссылку на ADO
Вложения
Тип файла: rar Ответ.rar (25.9 Кб, 21 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества заполненных строк. fuzzylogic Microsoft Office Excel 8 11.03.2010 18:37
ошибка подсчета количества строк kinnder Помощь студентам 4 02.03.2010 23:38
выделение строк ruavia3 Microsoft Office Excel 2 26.08.2009 13:36
Автоматическое изменение количества строк в таблице THE_ENGINEER Microsoft Office Excel 7 19.10.2008 21:28
Программа поиска количества различных строк матрицы Miller Паскаль, Turbo Pascal, PascalABC.NET 3 20.04.2008 22:42