powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как такое реализовать в Excel?
15 сообщений из 15, страница 1 из 1
Как такое реализовать в Excel?
    #33570800
rehc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В реляционных базах данных это реализуется при помощи запроса с использованием аналитических функций. А как в Excel?

Дана таблица excel:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 26 . 02 . 2006   02 : 28      0 
 26 . 02 . 2006   02 : 29      1 
 26 . 02 . 2006   02 : 29      0 
 26 . 02 . 2006   02 : 58      2 
 26 . 02 . 2006   02 : 58      1 
 26 . 02 . 2006   08 : 53      0 
 26 . 02 . 2006   08 : 53      1 
 26 . 02 . 2006   09 : 29      0 
 26 . 02 . 2006   09 : 29      2  
 26 . 02 . 2006   09 : 54      1 
 26 . 02 . 2006   09 : 54      0 
 26 . 02 . 2006   10 : 39      1 
Необходимо добавить 3 поле которое бы вычисляло разность времени в первом поле для ближайших значений второго поля равных 0 и 1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 26 . 02 . 2006   02 : 28      0     
 26 . 02 . 2006   02 : 29      1      1 
 26 . 02 . 2006   02 : 29      0 
 26 . 02 . 2006   02 : 58      2 
 26 . 02 . 2006   02 : 58      1      29 
 26 . 02 . 2006   08 : 53      0     
 26 . 02 . 2006   08 : 53      1      0 
 26 . 02 . 2006   09 : 29      0 
 26 . 02 . 2006   09 : 29      2  
 26 . 02 . 2006   09 : 54      1      25 
 26 . 02 . 2006   09 : 54      0 
 26 . 02 . 2006   10 : 39      1      45 
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33570846
121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
121
Гость
авторНеобходимо добавить 3 поле которое бы вычисляло разность времени в первом поле для ближайших значений второго поля равных 0 и 1:
Непонятно, что за функция.
По реализации:
В модуль листа/книги пишется функция/процедура которая и выполняет нужные действия.
Если нагляднее распишите, напишу пример функции.
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33570899
JimOrange
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже на какой-то учет рабочего времени...
0 - вышел, 1 - вошел - третяя колонка - сколько гулял?
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33570938
rehc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас попробую.
Имеется колонка (B) в которой указано время и для каждой строки в данной колонке выставлен флаг (колонка С) принимающий значения 0,1,2. Если флаг равен 1, то ищем ближайшую строку равную 0 (по направлению убывания времени т.е вверх) и вычитаем из значения в колонке B c флагом равным 1 значение из колонки В с флагом равным 0.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
A           B                  C
 1     26 . 02 . 2006   02 : 28      0     
 2     26 . 02 . 2006   02 : 29      1      1        - из  2  строки вычли  1 
 3     26 . 02 . 2006   02 : 29      0 
 4     26 . 02 . 2006   02 : 58      2 
 5     26 . 02 . 2006   02 : 58      1      29     - из  5  строки вычли  3 
 6     26 . 02 . 2006   08 : 53      0     
 7     26 . 02 . 2006   08 : 53      1      0          - из  7  строки вычли  6 
 8     26 . 02 . 2006   09 : 29      0 
 9     26 . 02 . 2006   09 : 29      2  
 10    26 . 02 . 2006   09 : 54      1      25    - из  10  строки вычли  8 
 11    26 . 02 . 2006   09 : 54      0 
 12    26 . 02 . 2006   10 : 39      1      45  - из  12  строки вычли  11 

...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33570955
rehc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JimOrangeПохоже на какой-то учет рабочего времени...
0 - вышел, 1 - вошел - третяя колонка - сколько гулял?
Да, учет времени. Только не рабочего, а простоя.
0 - отключился
1 - включился
2 - некоторое событие (например появилось электричество)
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33572115
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши макрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub a()
    Dim c As Range, c0 As Range

    Set c0 = Nothing

    For Each c In ActiveSheet.Columns("B").Cells
        If c.Value = "0" Then
            Set c0 = c.Offset( 0 , - 1 )
        ElseIf (c.Value = "1") And (Not c0 Is Nothing) Then
            c.Offset( 0 ,  1 ).Formula = "=" & c.Offset( 0 , - 1 ).Address(False, False) & "-" & c0.Address(False, False)
            c.Offset( 0 ,  1 ).NumberFormat = "hh:mm"
        End If
    Next
End Sub
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33575371
Тоже внесу свой вклад.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub X()
    Dim rng As Range
    
    Set rng = Worksheets( 1 ).Range("A1").CurrentRegion
    
    For Each rng In rng.Columns( 2 ).Cells
        Y rng
    Next rng
End Sub

Sub Y( _
  ByVal rng As Range)
    Static intI As Integer
    Static strStart As String
    Static strLast As String
    
    If rng =  1  Then
        strLast = rng.Offset( 0 , - 1 ).Address
        Y rng.Offset(intI -  1 ,  0 )
        rng.Offset( 0 ,  1 ).Formula = "=" & strLast & "-" & strStart
        rng.Offset( 0 ,  1 ).NumberFormat = "hh:mm"
    ElseIf rng =  0  Then
        strStart = rng.Offset( 0 , - 1 ).Address
    End If
End Sub
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33575381
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2Тоже внесу свой вклад.А у меня короче :)
Да и попроще слегка.... Зачем там понадобилась рекурсия?
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33575574
Да так, че-то захотелось. Можно и без нее конечно.
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33576141
Фотография 100g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединяюсь к вариантам без которых можно обойтись,
но "че-то захотелось". :)

Короче, вариант без макросов:
В ячейке D2 введена формула массива:
=ЕСЛИ(C2=1;B2-ИНДЕКС($B$2:B2;МАКС(ЕСЛИ($B$2:B2*$C$2:C2=0;$A$2:A2)));"")
далее можно тянуть до конца списка.
:)
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33576169
Фотография 100g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать, что формат ячееч в столбце D - "м".
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33576257
rehc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо White Owl, Пользователь2
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33576275
rehc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
100g - твой вариант для меня наиболее простой. спасибо
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33577323
Фотография 100g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rehc100g - твой вариант для меня наиболее простой. спасибо
Да, пожалуйста, только если список будет большой, то мой вариант тормозить будет сильно, так что лучше разберись с решениями White Owl и Пользователь2.
Удачи!
:)
...
Рейтинг: 0 / 0
Как такое реализовать в Excel?
    #33578429
Фотография 100g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел там лишнее действие. :)
Вместо $B$2:B2*$C$2:C2=0 достаточно написать $C$2:C2=0
Т.е. так:
=ЕСЛИ(C2=1;B2-ИНДЕКС($B$2:B2;МАКС(ЕСЛИ($C$2:C2=0;$A$2:A2)));"")
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как такое реализовать в Excel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]