Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/39: Рейтинг темы: голосов - 39, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66

Экспорт и последующий анализ данных spc

09.09.2013, 16:41. Показов 8797. Ответов 126
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
приветствую!

программист я не очень)) но имеется желание облегчить себе жизнь)
собственно суть:
имеем файл базы данных spc (лог системы контроля параметров) во вложении, данный фаил содержит примерно сутки работы системы количество строк всегда 10002 количество столбцов при преобразовании может варьироваться
необходимо:
1. наладить импорт из данного файла в таблицу Excel, ну или экспорт (с этим у меня пока самая большая проблема)
предполагаю что в конечной таблице должна открываться юзерформа где можно указать путь к файлу из которого нужно взять данные при этом копируемые данные должны помещаться в начало листа
2.после переноса в основной файл должны ракладываться в нормальные столбцы и проверятся на ряд параметров : Во первых должны удалятся строки содержащие хотя бы одно 0 значение, во вторых в конце массива могут содержаться дубли уже внесенной ранее информции т.к. лог снимается вручную втретих нужно проводить проверку на наполнение листа т.е при достижении 1кк строк начинать новый лист.
3. на отдельном листе или в юзерформе создать группу графиков с изменяемым интервалом дат т.е забиваем дата/время начало-дата/время конец и получаем графическое отображение изменений данных параметров.

собственно вопросы следующие:
насколько это реализуемо средствами excel/vba
как реализовать п 1.

п.2 сейчас потихоньку делаю сам, хотя как конролировать наполнение листа тоже пока не представляю.
Вложения
Тип файла: rar DataLogSPC.rar (165.3 Кб, 20 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2013, 16:41
Ответы с готовыми решениями:

Обработка множества документов word/pdf и последующий семантический анализ их содержимого
Добрый день, уважаемые форумчане. Подскажите, каким образом корректней решать следующую задачу: Есть множество документов в форматах...

Ввод данных в Input и их последующий вывод на странице
Добрый день. Только начал осваивать MVC. Осваиваю по оф документам и сайту metanit.com Под спойлером лирика о сложностях, можно...

Поиск данных в текстовом файле и последующий вывод
Доброго времени суток, форумчане! Нужна ваша помощь. В колледже стал проходить C++ Builder, работаю с Embarcadero RAD Studio XE5, и...

126
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 16:15
Студворк — интернет-сервис помощи студентам
А что я там должен увидеть? Там все грамотно написано и все у меня работает. Только с точками, но мне это как-раз хорошо.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 16:30  [ТС]
Igor_Tr, это код toiai, добавлены те строки о которых я говорил ранее, с заменой 2х пробелов, добавлена сортировка в исходном CSV (собственно Ваш вчерашний код), осталось добавить контроль наполнения листа.

в этом коде используется очень сильное колдунство - csv раскладывается в столбцы магией excel и дополнительно обрабатывается только столбец А. Благодаря этому он корректно работает вне зависимости от системного разделителя, т.е. когда его запускаю я в разложенном CSV я вижу запятые.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 16:47
Кроме мелочевок - проблем не вижу.
1. Копируете диапазон. Посмотрите в моей последней книге. Я определяю, что копировать (нужно заголовки - если первый раз, и не нужно - если следующий).
2. Определяю точку вставки (тоже, если первый..., если дальше....) Вставляю, сортирую. У Вас сортировка открытого csv. Зачем? Там нам по барабану. Нам сборка главное. Получается - отсортировали csv, вставили. Другой раз - отсортировали csv, вставили новые данные, и вот теперь точно нужно сортировку всего. Получается первая не нужная. Понимаете?
3. Нужно отформатировать первых два столца. 1-й как дату, 2- время. И все. Если еще у Вас и с запятыми - все нормально. Можно подписывать капитуляцию.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
12.09.2013, 16:58
Работа окончилась, могу предложить вариант решающий проблему со временем, немного исправленный предыдущий вариант.
Вложения
Тип файла: zip SvodDataLogSPC_toiai на один лист Обновленный.zip (41.5 Кб, 7 просмотров)
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 17:08
Да я вот и не понял, что там за проблемы были с датой. У меня и Ваш и мой варианты работали на ура. Одно что дату я не колол. Но это без проблем.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
12.09.2013, 17:13
Были проблемы со временем (выводилось в 12-и часовом формате после разделения колонки "Дата/время" с помощью текста по столбцам с использованием разделителя ПРОБЕЛ) -присмотрись на результаты предыдущей и текущей версии.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 17:37
Это возможно, я смотрел общий ход кода, до разделения даты. Но даже если. Сделал график по 12 часовому (загнал, правда, свои данные). Все нормально.Перешел только на время (ф. [h]:mm AM/PM). Все нормально. И какая тогда разница какой формат? Если главная программа так выдает - ну и пусть. И думаю, может там опять что-то типа последнего столбца #20? Ну а если начальство не понимает - так кто им психиатр?
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
13.09.2013, 11:56  [ТС]
Сделал график по 12 часовому
в старом варианте проблем была даже не столько в 12 часовом формате, а в том что AM/PM отрывало в отдельный столбик (который затем удалялся) при таком разложении попробуйте отличить 23:00 от 11:00)))

1. Копируете диапазон. Посмотрите в моей последней книге. Я определяю, что копировать (нужно заголовки - если первый раз, и не нужно - если следующий).
там шапка изначально есть, т.е. в данном случае шапка была создана в ручную заранее.
а вообще я уже ранее говорил можно копировать с шапкой всегда, ее все равно убьет как дубль, а если не убило то видно что косяк есть.

2. Определяю точку вставки (тоже, если первый..., если дальше....) Вставляю, сортирую. У Вас сортировка открытого csv. Зачем? Там нам по барабану. Нам сборка главное. Получается - отсортировали csv, вставили. Другой раз - отсортировали csv, вставили новые данные, и вот теперь точно нужно сортировку всего. Получается первая не нужная. Понимаете?
в принципе csv изначально отсортирован, но при вставке в конец документа его нужно отсортировать в обратном порядке, если в конечном файле нарушается хронология это косяк оператора вносящего файлы.
вообще я пытался сделать сортировку в конечном файле (кстати при разбивке первого столбца сортировать нужно по 2м столбцам дата и время же разнесены) но на меня .Sort простоянно ругался разными еррорами так что он пока не доделан, ну и меня несколько напрягает мысль сортировать миллион строк.

3. Нужно отформатировать первых два столца. 1-й как дату, 2- время. И все.
вот это немного не понял)))
там же вроде так и есть

Visual Basic
1
2
.Range("B3:B" & .UsedRange.Rows.Count).NumberFormat = "hh:mm:ss"
.Range("A3:A" & .UsedRange.Rows.Count).NumberFormat = "dd/mm/yyyy"
Добавлено через 49 минут
toiai, решение намного проще оказалось)) достаточно было отказаться от разделителя вообще, и делить на столбцы определенной ширины.

интересно то что при пошаговом прогоне видно
при открытии CSV видно что время в 24ч
после разложения на столбцы переходит в формат 12 ам/рм
при переносе в конечный фаил снова 24ч формат
форматировние во всех ячейках отсутствует
в исходном CVS(неразложенном) дата кстати в формате 12 ам/рм
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.09.2013, 12:11
В воскресенье обещают дождь - сяду и сделаю все по другому, с автоматической заменой разделителя к нужному и т.д. (как для наших бухгалтеров).
Шапка - это слишком мелочь. Она может создаваться, модифицироваться.... на ходу. Мы сейчас делаем общее. А сменится у Вас формат подачи csv - предварительная шапка если не убет - то перекрутит. В таких случаях с моими дукументами шапки использую как индикаторы тех или других действий. Получается слишком жестко, а жесткость должна быть в пределах, позволяющих легко менять при изменениях (ну как в сейсмике ) Все таки я бы применял промежуточный лист-приемник. На нем делал все увязки/привязки к нужному, потом на основной лист сборник. Вы же еще и стараетесь застраховаться от перезаполнения (эти Ваши явно указанные цифры).
Меня больше другое интересует. Почему я с своим Excel вытворяю, что хочу - и у меня все коректно? Так и у toiai, как я понял. А у Вас не так.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
13.09.2013, 12:21  [ТС]
Igor_Tr,

Последние коды у меня нормально работают и Ваш и toiai, проблема со временем в кранем файле тоже решена.

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

не должна шапка меняться, набор параметров отселживаемых стандартен должен быть, если он поменяется значит сменилась продукция следовательно это уже хранится отдельно должно.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.09.2013, 12:24
Думаю, не помешает вставить в код команду (сразу после названия макроса):
Application.UseSystemSeparators = True
Беду не наделает, уверенности додаст. Если точка - значит точка, если запятая - значит запятая.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.09.2013, 22:23
Все-таки было немного времени. Накомбинировал. Оставил приемник. Там удаляем, колем дату, добавляем столбик....Все массивом на основной. На основном сортирумем (!!! descending !!! от "сейчас" до "позавчера") Если на основной лист добавляем следующий csv - проверяем заголовки. Несовпадают - сообщение и остановка. Хотел сразу останавливать, потом подумал, что нужно оставить на приемнике, что б можна было разбираться.
Заголовки формируем на ходу. Вид зависит от первого csv. Формат 24. И учитывает системный разделитель. Пробуйте, у меня работает. Может не так быстро - но там куда всяких движений, которые не считаю лишними.
Вложения
Тип файла: rar newVAR_МК-1.rar (1,001.2 Кб, 6 просмотров)
1
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
16.09.2013, 13:25  [ТС]
Igor_Tr, все работает, но при анализе второго csv некорректно работает сортировка
Миниатюры
Экспорт и последующий анализ данных spc  
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
16.09.2013, 13:51
Смотрю по коду - вроде нормально. В чем проявляется некоректность? Я там поставил xlDescending. Может, Вам нужно xlAscending?
И еще. Поигрался через запрос + максимум обработки в массивах. Даже с промежуточным листом и всеми заморочками - время до 3 сек. Но вылезла одна мааааленькая проблемка, которую я обошел лишними движениями, что мне не нравится. Пока разбираюсь сам, не получится - спрошу здесь у людей. А будет готово - скину в любом случае. Хоть так, для информации.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
16.09.2013, 13:57  [ТС]
Igor_Tr, на картинке видно что промежуток 09.09 19:28:44 до 09.09 23:59:59 оказался в начале суток т.е. дальше пошло с 00:00:00 15102 и 15103 строки
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
16.09.2013, 14:08
На Вашем скине я не вижу эти строки. Почему-то...
А вобще, сортировка только по дате. Думал, что у Вас csv - как итог за какой-то период, и в другом csv будут другие даты.
А так, если сортировать и по дате - тогда сортировка должна выглядеть где-то так:
Visual Basic
1
2
3
4
   With Range(.[a3], .Cells(.UsedRange.Rows.Count, _
               .UsedRange.Columns.Count))
      .Sort .Cells(1), xlDescending, .Cells(2), , xlDescending, Header:=xlNo
   End With
1
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
16.09.2013, 14:19  [ТС]
Igor_Tr, смены меняются в 8:00 и в 20:00 так что сутки у нас не как у всех нормальных людей а с 8:00 до 8:00 + там еще хвост из дублей болтается, отчетные периоды накладываются.

Добавлено через 3 минуты
Цитата Сообщение от Cortes1984 Посмотреть сообщение
15102 и 15103 строки

15602 и 15603

Visual Basic
1
2
3
4
  With Range(.[a3], .Cells(.UsedRange.Rows.Count, _
               .UsedRange.Columns.Count))
      .Sort .Cells(1), xlDescending, .Cells(2), , xlDescending, Header:=xlNo
   End With
так все хорошо)
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
16.09.2013, 14:23
Где-то здесь я Вас предупреждал, что если будете строить график только по времени, и использовать период, например, с 19:30 (это 8.10.12) по 19:45 (это уже 9.10.12) - могут быть проблемы. Счетчик времени!!! в 00:00:00 обнуляется. Нужно приводить к формату [hh]:mm:ss (внимание на скобки).
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
16.09.2013, 14:28  [ТС]
если руками строить то все нормально строится
Миниатюры
Экспорт и последующий анализ данных spc  
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
16.09.2013, 14:34
Вы не поняли. Здесь у Вас время привязано к дате. Тогда все нормально. Если оторвать время от даты (указывать только время!) - вот про это я предупреждаю.
Похоже на "кардио" у "не жильца"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2013, 14:34

SQL: Группирование записей таблицы, и последующий вывод данных
Доброго времени суток всем. Помогите с проблемкой. Есть таблица с платежами. Каждый студент может иметь несколько платежей. Это...

Чтение из файла данных и последующий вывод на экран в виде линейного однонаправленного списка
Здравствуйте, я новичок в программировании. Не понимаю как выполнить следующую задачу: Дан список группы в 10 человек в виде ...

Копирование строки. При вводе пробела программа пропускает последующий ввод данных
char st, st1; int k, m, i, j; system("cls"); cout <<"Введите строку"<<endl; cin >>st; cout <<"Введите номер символа,...

Экспорт данных из базы данных *.DB в Word через Table (DateSet)
Всем Hello! у меня проблема не могу выгрузить данные из DB через table много чего перепробовал но увы не получается подскажите или хотя бы...

Как сделать экспорт данных из таблицы базы данных MSSQL 2008 в Excel на php?
Добрый день. Подскажите как сделать экспорт данных из таблицы базы данных MSSQL 2008 в Excel ? P.S.: на MySQl все просто, однако...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru