Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как такое реализовать в Excel? / 15 сообщений из 15, страница 1 из 1
28.02.2006, 14:10:17
    #33570800
rehc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
В реляционных базах данных это реализуется при помощи запроса с использованием аналитических функций. А как в 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
28.02.2006, 14:23:21
    #33570846
121
121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
авторНеобходимо добавить 3 поле которое бы вычисляло разность времени в первом поле для ближайших значений второго поля равных 0 и 1:
Непонятно, что за функция.
По реализации:
В модуль листа/книги пишется функция/процедура которая и выполняет нужные действия.
Если нагляднее распишите, напишу пример функции.
...
Рейтинг: 0 / 0
28.02.2006, 14:33:20
    #33570899
JimOrange
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
Похоже на какой-то учет рабочего времени...
0 - вышел, 1 - вошел - третяя колонка - сколько гулял?
...
Рейтинг: 0 / 0
28.02.2006, 14:40:40
    #33570938
rehc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
Сейчас попробую.
Имеется колонка (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
28.02.2006, 14:42:46
    #33570955
rehc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
JimOrangeПохоже на какой-то учет рабочего времени...
0 - вышел, 1 - вошел - третяя колонка - сколько гулял?
Да, учет времени. Только не рабочего, а простоя.
0 - отключился
1 - включился
2 - некоторое событие (например появилось электричество)
...
Рейтинг: 0 / 0
28.02.2006, 21:46:44
    #33572115
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
пиши макрос
Код: 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
01.03.2006, 23:12:31
    #33575371
Как такое реализовать в Excel?
Тоже внесу свой вклад.

Код: 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
01.03.2006, 23:21:46
    #33575381
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
Пользователь2Тоже внесу свой вклад.А у меня короче :)
Да и попроще слегка.... Зачем там понадобилась рекурсия?
...
Рейтинг: 0 / 0
02.03.2006, 08:13:04
    #33575574
Как такое реализовать в Excel?
Да так, че-то захотелось. Можно и без нее конечно.
...
Рейтинг: 0 / 0
02.03.2006, 11:20:38
    #33576141
100g
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как такое реализовать в Excel?
Присоединяюсь к вариантам без которых можно обойтись,
но "че-то захотелось". :)

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


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