Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не могу определиться с методом обработки данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Не могу определиться с методом обработки данных
messir Дата: Вторник, 20.07.2021, 03:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Всем привет! Мешкал в какую ветку разместить данный пост, но решил все же разместить тут. Если ему место все же в "Мозговом штурме", прошу перенести туда.
Изо дня в день приходится воспроизводить одни и те же действия, которые, часом, уже осточертели и решил написать скрипт в VBA. Но по мере изучения темы возможностей завел сам себя в тупик. Поэтому решил написать сюда и узнать ваше мнение, как было бы лучше поступить.
Если кратко, то нужно взять таблицу с выгрузкой данных, сравнить с такой же таблицей прошлого дня, на основании результата создать таблицу с отображением этих данных в различном разрезе с помощью сводных таблиц. Вопрос в подходе сборки и обработки данных.
Сначала опишу текущие ежедневные действия:

Так как ежедневная рутина осточертела, да и стал все чаще возникать "человеческий фактор" при заполнении, хотел написать VBA скрипт по этим действиям. Пришлось вспоминать ту малую часть знаний по VBA, которую получил в 2019, когда обрабатывал данные. Начал вспоминать с азов и реализовал скрипт вычленения даты из имени файла, преобразование его в формат даты, отнимание 1 дня, преобразование обратно в часть названия файла, поиск этого файла и дальнейшее открытие файлов для работы. И вот тут у меня произошла развилка:
1) Собирать в коллекции данные из первой таблицы, сравнивать и рассчитывать разницу со второй таблицей. Подсчитывать суммы дней и т.п. и строить на их основе сводные таблицы. Но тут все равно будет необходимо вручную добавлять значения в Базы Данных и обновлять аналитические сводные таблицы на основании вновь внесенных значений.
2) Объединить выгрузку данных не разделяя выгрузки по месяцам а взять даты от -1 дня до +60 или +90 дней с данными, охватывающими все критерии. Обрабатывать эти данные скриптом разделяя в процессе обработки на "разделы" которые конечный пользователь будет переключать из сводных таблиц, выбирая нужное.
Первый вариант вроде как "легкий путь" на котором можно было бы набить руку в VBA и имеет достаточное кол-во примеров работы с коллекциями (знаний пока не достаточно по этой теме, чтобы свободно что-то написать), однако он не решает большей части задач с обновлением Баз Данных и их аналитики.
Второй вариант вывел меня к решениям в Power Query и Power Pivot, однако загуглить тему подробно для изучения в рукоммьюнити не удалось. Ощущение, что пропустил месяц лекций и даже та инфа, что есть по этой теме на просторах инета совсем не понятна. Особенно реализация в VBA. Однако этот вариант решил бы вопрос упора в 1 млн строк и позволил бы собирать данные в одном файле, тем самым открыв доступ к объединению и циклу алгоритма выгрузки и обработки данных.

Поэтому хочу услышать ваше мнение, по какому пути лучше мне пойти с точки зрения изучения VBA и получения навыков?

Извините за "многабукав" :)
 
Ответить
СообщениеВсем привет! Мешкал в какую ветку разместить данный пост, но решил все же разместить тут. Если ему место все же в "Мозговом штурме", прошу перенести туда.
Изо дня в день приходится воспроизводить одни и те же действия, которые, часом, уже осточертели и решил написать скрипт в VBA. Но по мере изучения темы возможностей завел сам себя в тупик. Поэтому решил написать сюда и узнать ваше мнение, как было бы лучше поступить.
Если кратко, то нужно взять таблицу с выгрузкой данных, сравнить с такой же таблицей прошлого дня, на основании результата создать таблицу с отображением этих данных в различном разрезе с помощью сводных таблиц. Вопрос в подходе сборки и обработки данных.
Сначала опишу текущие ежедневные действия:

Так как ежедневная рутина осточертела, да и стал все чаще возникать "человеческий фактор" при заполнении, хотел написать VBA скрипт по этим действиям. Пришлось вспоминать ту малую часть знаний по VBA, которую получил в 2019, когда обрабатывал данные. Начал вспоминать с азов и реализовал скрипт вычленения даты из имени файла, преобразование его в формат даты, отнимание 1 дня, преобразование обратно в часть названия файла, поиск этого файла и дальнейшее открытие файлов для работы. И вот тут у меня произошла развилка:
1) Собирать в коллекции данные из первой таблицы, сравнивать и рассчитывать разницу со второй таблицей. Подсчитывать суммы дней и т.п. и строить на их основе сводные таблицы. Но тут все равно будет необходимо вручную добавлять значения в Базы Данных и обновлять аналитические сводные таблицы на основании вновь внесенных значений.
2) Объединить выгрузку данных не разделяя выгрузки по месяцам а взять даты от -1 дня до +60 или +90 дней с данными, охватывающими все критерии. Обрабатывать эти данные скриптом разделяя в процессе обработки на "разделы" которые конечный пользователь будет переключать из сводных таблиц, выбирая нужное.
Первый вариант вроде как "легкий путь" на котором можно было бы набить руку в VBA и имеет достаточное кол-во примеров работы с коллекциями (знаний пока не достаточно по этой теме, чтобы свободно что-то написать), однако он не решает большей части задач с обновлением Баз Данных и их аналитики.
Второй вариант вывел меня к решениям в Power Query и Power Pivot, однако загуглить тему подробно для изучения в рукоммьюнити не удалось. Ощущение, что пропустил месяц лекций и даже та инфа, что есть по этой теме на просторах инета совсем не понятна. Особенно реализация в VBA. Однако этот вариант решил бы вопрос упора в 1 млн строк и позволил бы собирать данные в одном файле, тем самым открыв доступ к объединению и циклу алгоритма выгрузки и обработки данных.

Поэтому хочу услышать ваше мнение, по какому пути лучше мне пойти с точки зрения изучения VBA и получения навыков?

Извините за "многабукав" :)

Автор - messir
Дата добавления - 20.07.2021 в 03:46
NikitaDvorets Дата: Четверг, 22.07.2021, 15:52 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 611
Репутация: 142 ±
Замечаний: 0% ±

Excel 2019
Добрый день.
Цитата
Извините за "многабукав"


Детальное описание технологии работ не позволит приблизиться к пониманию проблемы для людей, незнакомых с процессом.
Попробуйте графически отобразить алгоритм этого процесса, например, технологией BPWin (IDEF0) (инструмент управленческого консультирования).
Это позволит выявить проблемные места основного процесса, например, по состыковке выходов и входов его подпроцессов.
Возможно, Ваше понимание проблемы изменится и сможете её изложить более лаконично/понятно.
 
Ответить
СообщениеДобрый день.
Цитата
Извините за "многабукав"


Детальное описание технологии работ не позволит приблизиться к пониманию проблемы для людей, незнакомых с процессом.
Попробуйте графически отобразить алгоритм этого процесса, например, технологией BPWin (IDEF0) (инструмент управленческого консультирования).
Это позволит выявить проблемные места основного процесса, например, по состыковке выходов и входов его подпроцессов.
Возможно, Ваше понимание проблемы изменится и сможете её изложить более лаконично/понятно.

Автор - NikitaDvorets
Дата добавления - 22.07.2021 в 15:52
messir Дата: Среда, 28.07.2021, 00:31 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
NikitaDvorets, Тогда попробую описать текущую задачу, которую хочу попробовать решить:

Есть файлы выгрузки .xls, которые ежедневно дополняются. В каждом файле только 1 лист на 23 столбца (фиксированы) ~40к строк. Файлы можно только читать.
Есть файл запуска скрипта с листом настроек для скрипт, листом нужных маршрутов, листом НЕ нужных маршрутов, листом неопределенных маршрутов (очищается при запуске), листом с данными, которые не попали в обработку (очищается при запуске).
Есть файл Базы Данных в который заносятся уже рассчитанные данные из каждой выгрузки за каждый день выгрузки.

Предметная область: автобусные перевозки и статистика за каждый день съема данных по загрузке каждого рейса в период продаж от -1 до 49 дня. По факту каждая строка в файле выгрузки - это номер рейса, дата отправления, Название направления, количество кресел в автобусе и количество проданных кресел в автобусе.
Эти данные надо отфильтровать, дополнить расчетами и загрузить в файл БД. Листы нужных и ненужных маршрутов - это список Названий направлений, по которым скрипт будет понимать какие строки из файла выгрузки надо брать, а какие нет.

Мысль о структуре скрипта была следующая:

Пользователь выбирает файл с выгрузкой -> из имени файла вытягивается дата его формирования (день съема данных) -> скрипт запоминает соответствия из листов нужных и ненужных маршрутов -> открывается файл выгрузки -> построчная обработка файла выгрузки с последующей обработкой каждых данных и запоминанием -> открытие файла БД и добавление в конец обработанных данных.
Второй макрос на основании данных из БД строит всевозможные сводные таблицы с диаграммами на выбранную пользователем точку съема.

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

P.S. Понимаю, что в суть задачи все равно не ясна, а описать все аспекты очень сложно. Удалено администрацией. Причина: Нарушение правил пп. 5о. Скрипт не прошу, а лишь направить в нужное русло. Дальше, надеюсь. удастся самому отыскать нужные части.


Сообщение отредактировал Serge_007 - Среда, 28.07.2021, 08:58
 
Ответить
СообщениеNikitaDvorets, Тогда попробую описать текущую задачу, которую хочу попробовать решить:

Есть файлы выгрузки .xls, которые ежедневно дополняются. В каждом файле только 1 лист на 23 столбца (фиксированы) ~40к строк. Файлы можно только читать.
Есть файл запуска скрипта с листом настроек для скрипт, листом нужных маршрутов, листом НЕ нужных маршрутов, листом неопределенных маршрутов (очищается при запуске), листом с данными, которые не попали в обработку (очищается при запуске).
Есть файл Базы Данных в который заносятся уже рассчитанные данные из каждой выгрузки за каждый день выгрузки.

Предметная область: автобусные перевозки и статистика за каждый день съема данных по загрузке каждого рейса в период продаж от -1 до 49 дня. По факту каждая строка в файле выгрузки - это номер рейса, дата отправления, Название направления, количество кресел в автобусе и количество проданных кресел в автобусе.
Эти данные надо отфильтровать, дополнить расчетами и загрузить в файл БД. Листы нужных и ненужных маршрутов - это список Названий направлений, по которым скрипт будет понимать какие строки из файла выгрузки надо брать, а какие нет.

Мысль о структуре скрипта была следующая:

Пользователь выбирает файл с выгрузкой -> из имени файла вытягивается дата его формирования (день съема данных) -> скрипт запоминает соответствия из листов нужных и ненужных маршрутов -> открывается файл выгрузки -> построчная обработка файла выгрузки с последующей обработкой каждых данных и запоминанием -> открытие файла БД и добавление в конец обработанных данных.
Второй макрос на основании данных из БД строит всевозможные сводные таблицы с диаграммами на выбранную пользователем точку съема.

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

P.S. Понимаю, что в суть задачи все равно не ясна, а описать все аспекты очень сложно. Удалено администрацией. Причина: Нарушение правил пп. 5о. Скрипт не прошу, а лишь направить в нужное русло. Дальше, надеюсь. удастся самому отыскать нужные части.

Автор - messir
Дата добавления - 28.07.2021 в 00:31
NikitaDvorets Дата: Четверг, 29.07.2021, 00:59 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 611
Репутация: 142 ±
Замечаний: 0% ±

Excel 2019
messir, добрый день.
Если проанализировать совместно Ваши тезисы:
(1)
Цитата
Понимаю, что в суть задачи все равно не ясна, а описать все аспекты очень сложно

и
(2)
Цитата
Скрипт не прошу, а лишь направить в нужное русло


то получится некий оксюморон (несовместимые понятия в одном словосочетании) , т.е. Вы предлагаете невыполнимую задачу.

Чтобы приблизиться к пониманию проблемы, предлагаю Вам разработать графическую схему информационных потоков всего процесса:
Квадратами (с надписями файлов внутри них) обозначить файлы и также квадратами - листы внутри них (с перечнем данных) .
Далее стрелками связать эти квадраты друг с другом, указывая на них выходную и входную информацию.
Стрелки могут указывать на задачи, выполняемые тем или иным макросом (указать).
Цитата
Вот каким из методов было бы оптимальней это сделать не знаю.

Метод Вы уже указали - это VBA. Возможно, под этой фразой имелось ввиду что-то другое.
P.S. При достижении момента прозрачной постановки задачи целесообразно будет направить её на платную ветку форума.
 
Ответить
Сообщениеmessir, добрый день.
Если проанализировать совместно Ваши тезисы:
(1)
Цитата
Понимаю, что в суть задачи все равно не ясна, а описать все аспекты очень сложно

и
(2)
Цитата
Скрипт не прошу, а лишь направить в нужное русло


то получится некий оксюморон (несовместимые понятия в одном словосочетании) , т.е. Вы предлагаете невыполнимую задачу.

Чтобы приблизиться к пониманию проблемы, предлагаю Вам разработать графическую схему информационных потоков всего процесса:
Квадратами (с надписями файлов внутри них) обозначить файлы и также квадратами - листы внутри них (с перечнем данных) .
Далее стрелками связать эти квадраты друг с другом, указывая на них выходную и входную информацию.
Стрелки могут указывать на задачи, выполняемые тем или иным макросом (указать).
Цитата
Вот каким из методов было бы оптимальней это сделать не знаю.

Метод Вы уже указали - это VBA. Возможно, под этой фразой имелось ввиду что-то другое.
P.S. При достижении момента прозрачной постановки задачи целесообразно будет направить её на платную ветку форума.

Автор - NikitaDvorets
Дата добавления - 29.07.2021 в 00:59
messir Дата: Четверг, 29.07.2021, 01:06 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Serge_007, Вы не правы в трактовке. Было предложено посредством подключения к общественному серверу дискорда или каких-либо конференций любому желающему, чтобы быстрее и проще объяснить суть проблемы и показать трансляцией своего экрана и голосовой связью задачу. Описать все условия текстом будет очередной простыней букв, которую в лучшем случае осилит процентов 3-5% в лучшем случае. При этом потратит на это уйму своего времени.
Но, конечно же, вам видней.

Прошу удалить данную тему. Я понял, что глобальные вопросы тут нет смысла задавать. Только частные по конкретным блокам.
 
Ответить
СообщениеSerge_007, Вы не правы в трактовке. Было предложено посредством подключения к общественному серверу дискорда или каких-либо конференций любому желающему, чтобы быстрее и проще объяснить суть проблемы и показать трансляцией своего экрана и голосовой связью задачу. Описать все условия текстом будет очередной простыней букв, которую в лучшем случае осилит процентов 3-5% в лучшем случае. При этом потратит на это уйму своего времени.
Но, конечно же, вам видней.

Прошу удалить данную тему. Я понял, что глобальные вопросы тут нет смысла задавать. Только частные по конкретным блокам.

Автор - messir
Дата добавления - 29.07.2021 в 01:06
messir Дата: Четверг, 29.07.2021, 01:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
NikitaDvorets, Да тут скорей изначально было нужно напутствие, мол "если у тебя очень много данных, то иди в PQ и PP" или же "PQ и PP не решит твоих задач и ты все равно упрёшься в объемы, так что копай VBA и пробуй всё разложить на составляющие".
Как говорили наши учителя "Плохо когда не знаешь, да еще и не помнишь" :D Это как раз про мой случай)))
 
Ответить
СообщениеNikitaDvorets, Да тут скорей изначально было нужно напутствие, мол "если у тебя очень много данных, то иди в PQ и PP" или же "PQ и PP не решит твоих задач и ты все равно упрёшься в объемы, так что копай VBA и пробуй всё разложить на составляющие".
Как говорили наши учителя "Плохо когда не знаешь, да еще и не помнишь" :D Это как раз про мой случай)))

Автор - messir
Дата добавления - 29.07.2021 в 01:11
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!