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

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

09.09.2013, 16:41. Показов 8739. Ответов 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
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
11.09.2013, 23:33
Студворк — интернет-сервис помощи студентам
Сейчас только увидел есть проблемы со временем не 24 часовом формате. Надо думать...
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 09:44  [ТС]
toiai, в том то и дело что когда прогоняем разложение столбца А руками все ОК получаем 2 столбца, а когда работает макрос получается 3.

Добавлено через 1 час 8 минут
причем если отменить сделанные изменения, и запустить записанный макрорекордером макрос получаем опять 3 столбца
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 10:55
To Cortes1984. А не решает проблему настройка форматов даты системы? Или это родной Вам формат? Если да - тогда форматировать к нужному при вставке.
И у меня такой еще вопрос. Вы это все делаете для графиков. Графики у вас в пределах одних суток? Если да - не проблема. Есле период времени затягивает часть одной сутки и часть другой - нужен свой формат, или время в 00:00:00 тоже будет 0.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 11:15  [ТС]
на работе вот так, дома в принципе тоже, родной формат времени 24 часовой, пишу слева направо

я кстати опять искалку пустых ячеек сломал на этот раз в крайнем файле toiai.

создал пустой файл, удалил 3 лист второй переименовал в DataLogSPC и перенес модуль с макросом, искалка не работает теперь)
Миниатюры
Экспорт и последующий анализ данных spc  
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 12:13  [ТС]
в общем путем длительного тыканья пальцем в небо получилось следующее:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
With .Sheets(1)
                .Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow
                .Range("A3:A" & .UsedRange.Rows.Count).Replace What:="  ", Replacement:=";", LookAt:=xlPart, SearchOrder:=xlByRows
                .Range("A3:A" & .UsedRange.Rows.Count).TextToColumns Destination:=Range("A3"), DataType:=xlDelimited, _
                        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                        Semicolon:=True, Comma:=False, Space:=False, Other:=True, FieldInfo _
                        :=Array(Array(1, 1), Array(1, 1)), TrailingMinusNumbers:=True
                .Range("B3:B" & .UsedRange.Rows.Count).NumberFormat = "hh:mm:ss"
                .Range("A3:A" & .UsedRange.Rows.Count).NumberFormat = "dd/mm/yyyy"
                .Range(.[a3], .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Copy
            End With

АМ/РМ все равно откуда то вылазит но теперь его не отрывает в отдельный столбец, а потом корректно переводит в 24ч.формат
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 12:47
Ребус какой-то. У меня системная дата как у Вас - но отображает нормально. Попробуйте поэкспериментировать. Выделите ячейку с "косой" датой. Ctrl + 1, число, (все форматы), там измените отображение (вверху будете видеть). Получится - все это запишите рекордером в макрос.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 12:50  [ТС]
Igor_Tr, в том то и дело я уже эти форматы как только не менял, делим столбец в ручную все ОК
, отменяем изменения запускаем запись с макрорекордера лезет третий столбец с АМ/РМ.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 13:20  [ТС]
в общем вот как это выглядит:
запускаем пошагово макрос из этого поста toiai
останавливаемся на строке "Set WbCSV = ActiveWorkbook", перед нами разложенный на столбцы CSV.
вариант1: в ручную в этом файле в ячейке А1 меняем / на пробел, вставляем пустой столбец справа от столбца А, выделяем столбец A проводим разделение на столбцы по пробелу, получаем результата как на рисунке.
вариант2: выполняем код дальше до строки ".Columns(3).Delete"
Миниатюры
Экспорт и последующий анализ данных spc   Экспорт и последующий анализ данных spc   Экспорт и последующий анализ данных spc  

0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 13:25
Я уже плачу... Сильно.... Ничего не понимаю.... Выбрал ячейку, в которой дата моей системы. Включил рекондер. Вызвал формат ячейки. Выбрал "(все форматы)", в поле "Тип" руками записал (лень искать было) dd/mm/yyyy h:mm AM/PM. И получил. Вот макрос, и вот скины:
Visual Basic
1
2
3
4
Sub Makros()
    Range("A5").Select
    Selection.NumberFormat = "dd\/mm\/yyyy hh:mm AM/PM"
End Sub
Миниатюры
Экспорт и последующий анализ данных spc   Экспорт и последующий анализ данных spc  
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 14:09  [ТС]
Igor_Tr,
если не сложно сделайте пожалуйста следующее:
1 откройте исходный файл DataLogSPC.csv (тот который одним столбцом)
2 вручную разделите его на столбцы по "," (нам сейчас сами значения не важны важен только результат в первом столбце)
3 включите запись макроса
4 выделите столбец А (ну или первый в зависимости от того какой у Вас стоит стиль ссылок)
5 проведите замену " "(пробел) на ";"(в целом не важно на что, я менял на ";"), посмотрите результат (у меня получается так "09.09.2013;;15:46:11")
6 завершите запись макроса
7 сделайте отмену автозамены
8 выполните записанный макрос и посмотрите результат.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 14:56
...откройте исходный файл DataLogSPC.csv
Попробую, только открыть можна по разному. Как? Из Excel - Даные - получить.. - из текста?
Можна открыть из блокнота. Ctrl + A, Ctrl + C, и на листе Excel - Ctrl + V. Это в смысле чистоты эксперимента. Тут могу накрутить, и получу опять то, что мне нужно.
Но самое главное - пункт 5. Зачем пробел на ";" ? Это для чего?
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 14:58  [ТС]
Igor_Tr, я открывал excel (просто 2 щелчком),";" для наглядности
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 15:05
Понятно. Но зачем пробел на ";"?
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 15:13  [ТС]
по сути мы производим замену разделителя столбцов с пробела на ";"
при работе руками мы получаем один сдвоенный разделитель следовательно если ConsecutiveDelimiter:=True то 2 столбца или если False то 3 столбца
при работе макроса мы получаем, внезапно, 1 сдвоенный и один одинарный разделитель то есть 3 или 4 столбца соответственно.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 15:30
Святая Мария!!!! А Вы не пробовали указать для замены на ";" не один пробел (" ", или space(1)), а два пробела (" ", или space(2))? Попробуйте, на всякий...
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 15:35  [ТС]
при ручном разложении этого сделать нельзя (в смысле разложить по 2м пробелам), программно почему то не работало поэтому я сделал замену 2х пробелов на ";" и разделение по ней, в целом код работает, да и в общем вопрос не в том как это обойти, а почему так происходит.

собственно этот код так и делает
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 15:39
Думаю, потому, что система между датой и временем ставит два пробела сама.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 15:42  [ТС]
Igor_Tr,

мы видим в ячейке 2 пробела и раскладываем по ним ячейку на две
когда это делает excel получаем 2 столбца
когда это делает VBA получаем 3 столбца

почему?
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.09.2013, 16:00
Так понимаю, что Вы колете дату. А просто сделать? Весь ст. А загнать в двумерный массив и очистить (столбик). В массиве раскидать arr(i,1) - это дата, arr(i,2) - это время. Если нужно - там и форматировать. Добавить поле, закинуть массив.

Добавлено через 1 минуту
На Ваше почему один ответ - ищите проблему в коде (или подходе к решению). Не получается так - пробуйте по другому. Дорог много.

Добавлено через 13 минут
Такое впечатление, что Вы сцепились с Excel на смерть. И как в классических фильмах, пока побеждает плохой Excel.
Попробуйте вот это. В активной ячейке должна быть Ваша дата. Если делать в массиве - то это простая аналогия.
Visual Basic
1
2
3
4
Sub dateSEP()
   ActiveCell.Offset(0, 1).Value = Format(TimeValue(ActiveCell.Value), "h:mm:ss;@")
   ActiveCell.Value = Format(DateValue(ActiveCell.Value), "dd/mm/yy;@")
End Sub
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 66
12.09.2013, 16:02  [ТС]
Igor_Tr, мне кажется тут проблема даже не в коде (собственно код макрорекордером записан) а во взаимодействии Excel - VBA, ведь по факту получается что Excel и VBA видят разные значения в одной и той же ячейке, причем формат этой ячейки не принципиален я пробовал по всякому ее форматировать а результат был всегда один - время отображается неверно.

я пока остановился на таком варианте, сегодня уже исчезаю, надо и отдыхать изредка)))
Вложения
Тип файла: rar SvodDataLogSPC_toiai_Mod.rar (41.7 Кб, 4 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2013, 16:02

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 все просто, однако...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru