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

Вход

Регистрация

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

 

= Мир MS Excel/Узнать интервал/промежуток времени - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Узнать интервал/промежуток времени (Макросы/Sub)
Узнать интервал/промежуток времени
lFJl Дата: Четверг, 08.12.2016, 05:48 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Есть аппараты, у которых раз в сутки меняются показания
Есть программка, которая мониторит эти аппараты, и если показания изменились - фиксирует это
Вопрос, как найти время, в которое меняются показания?

Смотрите пример, заранее спасибо! :)
К сообщению приложен файл: 3002317.xlsm (29.2 Kb)
 
Ответить
СообщениеДобрый день.
Есть аппараты, у которых раз в сутки меняются показания
Есть программка, которая мониторит эти аппараты, и если показания изменились - фиксирует это
Вопрос, как найти время, в которое меняются показания?

Смотрите пример, заранее спасибо! :)

Автор - lFJl
Дата добавления - 08.12.2016 в 05:48
K-SerJC Дата: Четверг, 08.12.2016, 09:26 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
так надо?
только в примере не совсем одинаково данные собраны
если логику правильно понял, то решение рабочее.
К сообщению приложен файл: lFJl.xlsm (27.5 Kb)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениетак надо?
только в примере не совсем одинаково данные собраны
если логику правильно понял, то решение рабочее.

Автор - K-SerJC
Дата добавления - 08.12.2016 в 09:26
lFJl Дата: Четверг, 08.12.2016, 11:54 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
K-SerJC, частично правильно находит.
например №2

03.12.16 16:10 03.12.16 16:10
03.12.16 20:01 03.12.16 23:00
04.12.16 18:44 05.12.16 0:43

первое что видим, это 16:10 - 20:01
Далее 23:00 - 18:44
Поскольку 23:00 не попадает в диапазон 16:10 - 20:01, про него забываем, смотрим второе время. 18:44, оно попадает в диапазон, заменяем 20:01 на 18:44.
В итоге получится 16:10 - 18:44


Сообщение отредактировал lFJl - Четверг, 08.12.2016, 12:04
 
Ответить
СообщениеK-SerJC, частично правильно находит.
например №2

03.12.16 16:10 03.12.16 16:10
03.12.16 20:01 03.12.16 23:00
04.12.16 18:44 05.12.16 0:43

первое что видим, это 16:10 - 20:01
Далее 23:00 - 18:44
Поскольку 23:00 не попадает в диапазон 16:10 - 20:01, про него забываем, смотрим второе время. 18:44, оно попадает в диапазон, заменяем 20:01 на 18:44.
В итоге получится 16:10 - 18:44

Автор - lFJl
Дата добавления - 08.12.2016 в 11:54
K-SerJC Дата: Пятница, 09.12.2016, 16:34 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
lFJl, не понял тогда логику выборки, и сохранения записи

чтобы дополнить условия отбора надо понять как определяется что надо именно этот диапазон указать.

я думал по последнему диапазону, между двумя записями по одному аппарату...


Благими намерениями выстелена дорога в АД.
 
Ответить
СообщениеlFJl, не понял тогда логику выборки, и сохранения записи

чтобы дополнить условия отбора надо понять как определяется что надо именно этот диапазон указать.

я думал по последнему диапазону, между двумя записями по одному аппарату...

Автор - K-SerJC
Дата добавления - 09.12.2016 в 16:34
Pelena Дата: Пятница, 09.12.2016, 18:47 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19158
Репутация: 4411 ±
Замечаний: ±

Excel 365 & Mac Excel
lFJl, я правильно понимаю, что это продолжение других Ваших тем?
http://www.excelworld.ru/forum/2-20271-1
http://www.excelworld.ru/forum/10-22165-1


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеlFJl, я правильно понимаю, что это продолжение других Ваших тем?
http://www.excelworld.ru/forum/2-20271-1
http://www.excelworld.ru/forum/10-22165-1

Автор - Pelena
Дата добавления - 09.12.2016 в 18:47
lFJl Дата: Понедельник, 12.12.2016, 04:47 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
K-SerJC, посмотрите пример, в нем формулой написал.
Pelena, Верно, но за год много поменялось, хотел макрос сделать лучше, тот не подходит под нынешние требования
К сообщению приложен файл: 0056699.xlsx (9.1 Kb)


Сообщение отредактировал lFJl - Понедельник, 12.12.2016, 04:48
 
Ответить
СообщениеK-SerJC, посмотрите пример, в нем формулой написал.
Pelena, Верно, но за год много поменялось, хотел макрос сделать лучше, тот не подходит под нынешние требования

Автор - lFJl
Дата добавления - 12.12.2016 в 04:47
K-SerJC Дата: Понедельник, 12.12.2016, 09:05 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
не понял откуда новые данные, и откуда базовые
как их из исходной таблицы база определяете?


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Понедельник, 12.12.2016, 09:09
 
Ответить
Сообщениене понял откуда новые данные, и откуда базовые
как их из исходной таблицы база определяете?

Автор - K-SerJC
Дата добавления - 12.12.2016 в 09:05
lFJl Дата: Среда, 14.12.2016, 12:11 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
K-SerJC, Прошу прощения за долгий ответ. Работы много было. Вот под разгребся чуть, занялся делом :)
У меня получилось сделать формулами то, что нужно, пробовал то же самое на макрос перенести, что- то не выходит.
Смотрите вложение, надеюсь понятно написал.
Надеюсь из примера будет понятно, что мне нужно, и сможете помочь :)
К сообщению приложен файл: 5872458.xlsm (74.0 Kb)
 
Ответить
СообщениеK-SerJC, Прошу прощения за долгий ответ. Работы много было. Вот под разгребся чуть, занялся делом :)
У меня получилось сделать формулами то, что нужно, пробовал то же самое на макрос перенести, что- то не выходит.
Смотрите вложение, надеюсь понятно написал.
Надеюсь из примера будет понятно, что мне нужно, и сможете помочь :)

Автор - lFJl
Дата добавления - 14.12.2016 в 12:11
nilem Дата: Четверг, 15.12.2016, 11:02 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот так, кажется, получается:
[vba]
Код
Sub ertert()
Dim x, y(), i&, sAp, k&
x = Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x), 1 To 3)

For i = 2 To UBound(x)
    x(i, 1) = x(i, 1) - Int(x(i, 1))
    x(i, 2) = x(i, 2) - Int(x(i, 2))
    If x(i, 3) <> sAp Then
        sAp = x(i, 3): k = k + 1
        y(k, 1) = sAp
        y(k, 2) = x(i, 2) 'смена от; y(k, 3) смена до
    Else
        If IsEmpty(y(k, 3)) Then
            y(k, 3) = x(i, 1)
            If y(k, 3) < y(k, 2) Then y(k, 3) = y(k, 3) + 1
        Else
            If x(i, 1) < y(k, 2) Then x(i, 1) = x(i, 1) + 1
            If (x(i, 1) > y(k, 2)) * (x(i, 1) < y(k, 3)) Then y(k, 3) = x(i, 1)
        End If
        If (x(i, 2) > y(k, 2)) * (x(i, 2) < y(k, 3)) Then y(k, 2) = x(i, 2)
    End If
Next i
Range("P2").Resize(k, 3).Value = y()
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот так, кажется, получается:
[vba]
Код
Sub ertert()
Dim x, y(), i&, sAp, k&
x = Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x), 1 To 3)

For i = 2 To UBound(x)
    x(i, 1) = x(i, 1) - Int(x(i, 1))
    x(i, 2) = x(i, 2) - Int(x(i, 2))
    If x(i, 3) <> sAp Then
        sAp = x(i, 3): k = k + 1
        y(k, 1) = sAp
        y(k, 2) = x(i, 2) 'смена от; y(k, 3) смена до
    Else
        If IsEmpty(y(k, 3)) Then
            y(k, 3) = x(i, 1)
            If y(k, 3) < y(k, 2) Then y(k, 3) = y(k, 3) + 1
        Else
            If x(i, 1) < y(k, 2) Then x(i, 1) = x(i, 1) + 1
            If (x(i, 1) > y(k, 2)) * (x(i, 1) < y(k, 3)) Then y(k, 3) = x(i, 1)
        End If
        If (x(i, 2) > y(k, 2)) * (x(i, 2) < y(k, 3)) Then y(k, 2) = x(i, 2)
    End If
Next i
Range("P2").Resize(k, 3).Value = y()
End Sub
[/vba]

Автор - nilem
Дата добавления - 15.12.2016 в 11:02
lFJl Дата: Четверг, 15.12.2016, 12:28 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
nilem, То что нужно, спасибо большее! :)
Осталось только понять, как это работает :)
 
Ответить
Сообщениеnilem, То что нужно, спасибо большее! :)
Осталось только понять, как это работает :)

Автор - lFJl
Дата добавления - 15.12.2016 в 12:28
lFJl Дата: Четверг, 02.02.2017, 11:50 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
nilem,
Немного подкорректировал макрос, добавил одну строчку [vba]
Код
If y(k, 3) = "" Then y(k, 3) = x(i, 1)
[/vba]
Дело в том, что если лог попадается 1н, то он до не проставляет, благодаря этому - делает! :)

[vba]
Код
Sub ertert()
Dim x, y(), i&, sAp, k&
x = Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x), 1 To 3)

For i = 2 To UBound(x)
    x(i, 1) = x(i, 1) - Int(x(i, 1))
    x(i, 2) = x(i, 2) - Int(x(i, 2))
    If x(i, 3) <> sAp Then
        sAp = x(i, 3): k = k + 1
        y(k, 1) = sAp
        y(k, 2) = x(i, 2) 'смена от; y(k, 3) смена до
        If y(k, 3) = "" Then y(k, 3) = x(i, 1)
    Else
        If IsEmpty(y(k, 3)) Then
            y(k, 3) = x(i, 1)
            If y(k, 3) < y(k, 2) Then y(k, 3) = y(k, 3) + 1
        Else
            If x(i, 1) < y(k, 2) Then x(i, 1) = x(i, 1) + 1
            If (x(i, 1) > y(k, 2)) * (x(i, 1) < y(k, 3)) Then y(k, 3) = x(i, 1)
        End If
        If (x(i, 2) > y(k, 2)) * (x(i, 2) < y(k, 3)) Then y(k, 2) = x(i, 2)
    End If
Next i
Range("P2").Resize(k, 3).Value = y()
End Sub
[/vba]

Такой вопросик, если у меня время лежит в 1, 3 столбце а название в 14, тогда что нужно в коде поменять для этого?


Сообщение отредактировал lFJl - Четверг, 02.02.2017, 11:54
 
Ответить
Сообщениеnilem,
Немного подкорректировал макрос, добавил одну строчку [vba]
Код
If y(k, 3) = "" Then y(k, 3) = x(i, 1)
[/vba]
Дело в том, что если лог попадается 1н, то он до не проставляет, благодаря этому - делает! :)

[vba]
Код
Sub ertert()
Dim x, y(), i&, sAp, k&
x = Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x), 1 To 3)

For i = 2 To UBound(x)
    x(i, 1) = x(i, 1) - Int(x(i, 1))
    x(i, 2) = x(i, 2) - Int(x(i, 2))
    If x(i, 3) <> sAp Then
        sAp = x(i, 3): k = k + 1
        y(k, 1) = sAp
        y(k, 2) = x(i, 2) 'смена от; y(k, 3) смена до
        If y(k, 3) = "" Then y(k, 3) = x(i, 1)
    Else
        If IsEmpty(y(k, 3)) Then
            y(k, 3) = x(i, 1)
            If y(k, 3) < y(k, 2) Then y(k, 3) = y(k, 3) + 1
        Else
            If x(i, 1) < y(k, 2) Then x(i, 1) = x(i, 1) + 1
            If (x(i, 1) > y(k, 2)) * (x(i, 1) < y(k, 3)) Then y(k, 3) = x(i, 1)
        End If
        If (x(i, 2) > y(k, 2)) * (x(i, 2) < y(k, 3)) Then y(k, 2) = x(i, 2)
    End If
Next i
Range("P2").Resize(k, 3).Value = y()
End Sub
[/vba]

Такой вопросик, если у меня время лежит в 1, 3 столбце а название в 14, тогда что нужно в коде поменять для этого?

Автор - lFJl
Дата добавления - 02.02.2017 в 11:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Узнать интервал/промежуток времени (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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