Автоматизация анализа архивных показаний
Добавлено: 29 май 2013, 21:43
Большинство из нас при анализе архивных показаний, заботливо снятых с вычислителя, сталкиваются с огромной кучей проблем. Надо прощёлкать мышкой 700-1500 строк, одновременно наблюдая за динамикой изменения показаний по нескольким столбцам. Благо теплоучётчика, что есть такие замечательные люди, как Александр Григорьевич Лупей, который разработал удачнейший, на мой взгляд, метод анализа через построение диаграмм. Такой метод сокращает время, потраченное на анализ архива в десятки раз и позволяет вывести ряд закономерностей, которые через просмотр "мышкой" архивов не заметишь.
К сожалению, много операций в екселе приходится делать вручную. Кто то привык тратить время на эту рутину, я вот не хочу. В экселе есть такая замечательная вещь как макросы. Из макросов можно составлять сложные структуры - надстройки к екселю для выполнения специализированных (как в нашем случае функций). Я решил сотрудничать, пока на своём энтузиазме, с профессионалами екселя: обозначать задачи, которые лучше автоматизировать, реализовывать и выкладывать здесь.
Учебник по макросам http://office.microsoft.com/ru-ru/train ... ?section=1
Для начала выкладываю код макроса, который заменяет строку архива формата "дата-время" 24.05.2013 09:00:00 на строку в текстовом формате 24.05.13:09 собственно код:
Option Explicit
Sub myTime()
Dim lCol As Long, lRow As Long
lCol = Range("A1").End(xlToRight).Column
lRow = Range("A1").End(xlDown).Row
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).FormulaR1C1 = "=TEXT(RC[-" & lCol & "],""ДД.ММ.ГГ:ЧЧ"")"
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value = Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Offset(, -lCol).Value = Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Clear
End Sub
К сожалению, много операций в екселе приходится делать вручную. Кто то привык тратить время на эту рутину, я вот не хочу. В экселе есть такая замечательная вещь как макросы. Из макросов можно составлять сложные структуры - надстройки к екселю для выполнения специализированных (как в нашем случае функций). Я решил сотрудничать, пока на своём энтузиазме, с профессионалами екселя: обозначать задачи, которые лучше автоматизировать, реализовывать и выкладывать здесь.
Учебник по макросам http://office.microsoft.com/ru-ru/train ... ?section=1
Для начала выкладываю код макроса, который заменяет строку архива формата "дата-время" 24.05.2013 09:00:00 на строку в текстовом формате 24.05.13:09 собственно код:
Option Explicit
Sub myTime()
Dim lCol As Long, lRow As Long
lCol = Range("A1").End(xlToRight).Column
lRow = Range("A1").End(xlDown).Row
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).FormulaR1C1 = "=TEXT(RC[-" & lCol & "],""ДД.ММ.ГГ:ЧЧ"")"
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value = Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Offset(, -lCol).Value = Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Value
Range(Cells(1, lCol + 1), Cells(lRow, lCol + 1)).Clear
End Sub