Страницы: 1
RSS
Автоматический поиск и запись отклонений температуры, с времинем начала и конца отклонения
 
Категорическое приветствие.
Имеются данные температуры контейнера за каждую минуту, в примере за 11 дней, а вообще за 8 месяцев по 6-и датчикам.
Задача состоит в поиске отклонений температурного режима (все что больше -17,5 считается отклонением) с последующей записью времени начала/конца отклонения. Естественно, проверять/искать/выписывать все вручную можно до следующей жизни, при этом лично я не знаю как это провернуть с помощью автоматики. Даже не знаю в какую сторону копать.
Если есть какие-то догадки, наводки, как это сделать, то буду крайне признателен. Хотелось бы понять, что и как мы делаем.
Если я продублировал уже существующую тему (не специально), то дико извеняюсь, просьба направить куда следует.
 
Цитата
Кирилл Начинающий написал:
(все что больше -17,5 считается отклонением)
+-17,5 от какого значения?
По вопросам из тем форума, личку не читаю.
 
Нормой считается температура -17,5 и ниже, все что выше данной отметки и есть отклонение
 
при таких объёмах или делать вспомогательный столбец для последующей фильтрации и ручного переноса. Ну или макросы, PowerQuery ....
По вопросам из тем форума, личку не читаю.
 
Кирилл Начинающий, вариант в PQ:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Time", type datetime }, { "датчик 1", type number } } ),
  group = Table.Group (
    typed,
    "датчик 1",
    { { "tbl", ( tbl ) => Table.SelectRows ( tbl, ( x ) => x[датчик 1] > - 17.5 ) } },
    GroupKind.Local,
    ( s, c ) => Number.From ( c <= - 17.5 )
  )[[tbl]],
  filter = Table.SelectRows ( group, each not Table.IsEmpty ( [tbl] ) ),
  startDate = Table.AddColumn ( filter, "Дата начала", each Date.From ( List.Min ( [tbl][Time] ) ), type date ),
  startTime = Table.AddColumn ( startDate, "Время начала", each Time.From ( List.Min ( [tbl][Time] ) ), type time ),
  endDate = Table.AddColumn ( startTime, "Дата конца", each Date.From ( List.Max ( [tbl][Time] ) ), type date ),
  endTime = Table.AddColumn ( endDate, "Время конца", each Time.From ( List.Max ( [tbl][Time] ) ), type time ),
  deviation = Table.AddColumn (
    endTime,
    "отклонение",
    each Text.From ( List.Min ( [tbl][датчик 1] ) ) & " - " & Text.From ( List.Max ( [tbl][датчик 1] ) ),
    type text
  ),
  remTbl = Table.RemoveColumns ( deviation, { "tbl" } )
in
  remTbl
 
С допстолбцами чтобы побыстрее было
Не понял с отклонением. Почему -  -11,1 ?
 
Цитата
Михаил Л написал:
Не понял с отклонением. Почему -  -11,1
У меня тоже другой разброс :) Ваш не могу посмотреть, 2019 офис :( И время конца немного другое.
Выбирал мин и макс за текущий период отклонения.
Изменено: surkenny - 19.02.2022 23:47:24
 
Цитата
surkenny написал:
Ваш не могу посмотреть
Там надо формулы протянуть в C3:D3  :) Файл разбухал из-за формул
 
Кирилл Начинающий, если бы ограничение было 1МБ, Ваш приложенный файл тянул бы на  999,97 КБ?
Пример - простая и понятная демонстрация вопроса.
 
в лоб без лоска
Код
Sub diffTemp()
Const RefTemp = -17.5
ReDim arr(6)
Dim I As Long, cell As Range, s As Boolean
I = 3
For Each cell In Intersect(Range("b:B"), ActiveSheet.UsedRange).Offset(1)
    If s Then
        If cell <= RefTemp Then
            s = False
            With cell.Offset(-1, -1)
                arr(4) = Int(.Value)
                arr(5) = .Value - arr(4)
            End With
            arr(6) = "(" & arr(6) & " - " & cell.Offset(-1).Value & ")"
            Cells(I, 5).Resize(1, 7) = arr
            I = I + 1
            ReDim arr(6)
        End If
    Else
        If cell > RefTemp Then
            s = True
            With cell.Offset(, -1)
                arr(2) = Int(.Value)
                arr(3) = CDate(.Value - arr(2))
            End With
            arr(6) = cell.Value
        End If
    End If
Next
End Sub
Изменено: БМВ - 20.02.2022 10:24:23
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх