Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Exel, извлечение рабочего времени из диапозона дататайм / 23 сообщений из 23, страница 1 из 1
22.10.2012, 08:59
    #38007680
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Помогите, необходимо вычислить рабочее время:
|A1 |
A1|10.01.2012 7:33:45 |
А2|10.01.2012 9:35:07 |
10.01.2012 9:40:09
10.01.2012 10:53:15
10.01.2012 10:57:43
10.01.2012 12:19:03
10.01.2012 12:22:30
10.01.2012 13:55:51
10.01.2012 14:00:20
10.01.2012 15:43:44
10.01.2012 15:46:44
10.01.2012 17:30:02
11.01.2012 7:26:32
11.01.2012 8:54:15
11.01.2012 8:58:18
11.01.2012 10:13:04
11.01.2012 10:17:53
11.01.2012 11:02:48
11.01.2012 12:04:38
11.01.2012 12:10:24
11.01.2012 13:39:19
11.01.2012 13:42:23
11.01.2012 14:56:43
11.01.2012 14:59:36
11.01.2012 16:29:46
11.01.2012 16:32:41
11.01.2012 17:30:18
12.01.2012 9:54:43
12.01.2012 11:38:19
12.01.2012 11:41:16
12.01.2012 12:45:11
12.01.2012 12:48:19
12.01.2012 13:55:13
12.01.2012 13:57:54
12.01.2012 15:16:29
12.01.2012 15:18:55
12.01.2012 17:46:53
13.01.2012 7:32:58
13.01.2012 7:44:16
13.01.2012 9:18:52
13.01.2012 9:21:58
13.01.2012 12:20:00
13.01.2012 12:23:43
13.01.2012 14:20:27
13.01.2012 14:27:09
13.01.2012 16:12:38
Необходимо извлечь время в дне с 8.00-13.00 и с 13.00-17.00 и суммировать, т.е. получить отработанное время в дне!
...
Рейтинг: 0 / 0
22.10.2012, 09:18
    #38007690
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
а что это за цифирки? время прихода и ухода? а как их отличать? четное-нечетное?
...
Рейтинг: 0 / 0
22.10.2012, 09:32
    #38007702
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
да=) есть второй столбец, простите
10.01.2012 9:40:09 вход
10.01.2012 10:53:15 выход
10.01.2012 10:57:43 вход
10.01.2012 12:19:03 выход
10.01.2012 12:19:04 выход - это если система затупила такое бывает может раз в месяц.
...
Рейтинг: 0 / 0
22.10.2012, 09:53
    #38007721
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Может файлом сподручнее
...
Рейтинг: 0 / 0
22.10.2012, 11:24
    #38007838
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Нужна прога на VBA? или формулами?
Где находятся исходные данные? Если в БД - может проще будет там сделать запросами?
...
Рейтинг: 0 / 0
22.10.2012, 11:35
    #38007852
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
хранится в MSQL, да лучше бы скриптом=)
а так чем угодно, надо успеть мне за сегодня.
...
Рейтинг: 0 / 0
22.10.2012, 11:43
    #38007869
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Правильно я понимаю, что интервал между временем
16:45 (вход) и 17:10 (выход) должен посчитаться как 15 минут?
...
Рейтинг: 0 / 0
22.10.2012, 11:44
    #38007871
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Shocker.ProПравильно я понимаю, что интервал между временем
16:45 (вход) и 17:10 (выход) должен посчитаться как 15 минут?

да правильно, и соответственно с утра также, а если интервал попал в обед, то и его вычесть.
...
Рейтинг: 0 / 0
22.10.2012, 12:10
    #38007914
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
svovachхранится в MSQL.Это что за зверь? MS SQL? MySQL? что-то ещё? тогда почему файл примера - в Экселе?
...
Рейтинг: 0 / 0
22.10.2012, 12:11
    #38007917
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
svovachесли интервал попал в обед, то и его вычесть.
Обед - это когда? с учётом, что
svovachс 8.00-13.00 и с 13.00-17.00
...
Рейтинг: 0 / 0
22.10.2012, 12:16
    #38007926
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
с 12-13
...
Рейтинг: 0 / 0
22.10.2012, 12:16
    #38007927
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
блин, с 13-14
...
Рейтинг: 0 / 0
22.10.2012, 12:40
    #38007980
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Akina, ты сделаешь?
...
Рейтинг: 0 / 0
22.10.2012, 13:58
    #38008126
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Я не умею сделать, когда ни хрена не понимаю, что именно надо сделать...
А вообще я предпочитаю заставить автора понять свою задачу - если поставить ему мозги на место, обычно выясняется, что он и сам всё может сделать.
...
Рейтинг: 0 / 0
22.10.2012, 14:22
    #38008179
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
D excele я посчитал, вручную, но это временное решение.
есть диапазон времени:
11.01.2012 7:26:32 вход
11.01.2012 8:54:15 выход
11.01.2012 8:58:18 вход
11.01.2012 10:13:04 выход
11.01.2012 10:17:53 вход
11.01.2012 11:02:48 выход
11.01.2012 12:04:38 вход
11.01.2012 12:10:24 выход
11.01.2012 13:39:19 вход
11.01.2012 13:42:23 выход
11.01.2012 14:56:43 вход
11.01.2012 14:59:36 выход
11.01.2012 16:29:46 вход
11.01.2012 16:32:41 выход
11.01.2012 17:30:18 вход
Рабочий день с 8.00-17.00 и обед с 13.00-14.00.
В итоге задень человек был на рабочем месте: 8:39:34 из этого времени вычитаем: 1 час получим 7:39:34.

Но есть случай сложнее: когда человек пришел не как положено и вообще весь день пробегал гдето.
11.01.2012 12:04:38 вход
11.01.2012 12:10:24 выход
11.01.2012 13:30:19 вход
11.01.2012 13:50:19 выход
Рабочий день всего: 0:05:46.

Вот, необходим скрипт на T-SQL либо формула в экселе. Вот такая задача.
На вопрос как сделал в экселе: прошел по всей таблице и выравнял время прихода до 8 и ухода до 17 вычел обед.
Понимаю что это не по профессиональному, но уже надо было сдать.
...
Рейтинг: 0 / 0
22.10.2012, 15:28
    #38008301
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
svovachнеобходим скрипт на T-SQL либо формула в экселе.
Давайте определяться.
Либо требуется запрос на SQL - тогда указывайте СУБД и точную структуру исходной таблицы.
Либо нужна формула в Экселе - тогда выкладывайте исходный вид файла, без ваших дополнений и всяких там украшательств.
...
Рейтинг: 0 / 0
22.10.2012, 15:58
    #38008350
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
MSSQL 2008R2
timeval - datetime
mark - varchar (30)
Значения:
timeval \ mark
10.01.2012 9:40:09 \вход
10.01.2012 10:53:15 \выход
10.01.2012 10:57:43 \вход
10.01.2012 12:19:03 \выход
10.01.2012 12:22:30 \вход
....
как указано выше.


ну а excel тоже самое но в ячейках (что тут в принципе представлять, как экспортирован так и есть).
...
Рейтинг: 0 / 0
22.10.2012, 18:01
    #38008630
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
ну например...
...
Рейтинг: 0 / 0
23.10.2012, 00:28
    #38009037
R Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
вариант
Sub svovach ()
a = [a1].CurrentRegion.Value
ReDim b(1 To UBound(a) / 2, 1 To 2)
Set Dict = CreateObject("scripting.dictionary")
Dim ts, tf, tmp, te, i
For i = 2 To UBound(a)
If Not Dict.exists(Format(a(i, 1), "dd.mm.yyyy")) Then
Dict.Add Format(a(i, 1), "dd.mm.yyyy"), i
ts = Format(a(i, 1), "hh:nn:ss")
Select Case ts
Case Is < #8:00:00 AM#
ts = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
ts = #2:00:00 PM#
Case Is > #5:00:00 PM#
ts = #5:00:00 PM#
End Select
tf = 0
x = x + 1
tmp = a(i, 2)
b(x, 1) = Format(a(i, 1), "dd.mm.yyyy")
End If 'Else
If tmp <> a(i, 2) Then
If a(i, 2) = "âõîä" Then
ts = Format(a(i, 1), "hh:nn:ss")
Select Case ts
Case Is < #8:00:00 AM#
ts = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
ts = #2:00:00 PM#
Case Is > #5:00:00 PM#
ts = #5:00:00 PM#
End Select
Else
tf = Format(a(i, 1), "hh:nn:ss")
Select Case tf

Case Is < #8:00:00 AM#
tf = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
tf = #2:00:00 PM#
Case Is > #5:00:00 PM#
tf = #5:00:00 PM#
End Select
te = CDate(tf) - CDate(ts)
If (CDate(ts) <= #1:00:00 PM#) And (CDate(tf) >= #2:00:00 PM#) Then te = te - (1 / 24)
b(x, 2) = b(x, 2) + te
' Debug.Print Format(te, "hh:nn:ss") & "[-]" & Format(ts, "hh:nn:ss") & "[-]" & Format(tf, "hh:nn:ss")
End If
End If
tmp = a(i, 2)
'End If
Next
[h1].Resize(x, 2) = b
End Sub
...
Рейтинг: 0 / 0
23.10.2012, 05:54
    #38009133
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Akinaну например...
Спасибо вариант, параметры worktime изменить можно?



R Dmitryвариант
+
Sub svovach ()
a = [a1].CurrentRegion.Value
ReDim b(1 To UBound(a) / 2, 1 To 2)
Set Dict = CreateObject("scripting.dictionary")
Dim ts, tf, tmp, te, i
For i = 2 To UBound(a)
If Not Dict.exists(Format(a(i, 1), "dd.mm.yyyy")) Then
Dict.Add Format(a(i, 1), "dd.mm.yyyy"), i
ts = Format(a(i, 1), "hh:nn:ss")
Select Case ts
Case Is < #8:00:00 AM#
ts = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
ts = #2:00:00 PM#
Case Is > #5:00:00 PM#
ts = #5:00:00 PM#
End Select
tf = 0
x = x + 1
tmp = a(i, 2)
b(x, 1) = Format(a(i, 1), "dd.mm.yyyy")
End If 'Else
If tmp <> a(i, 2) Then
If a(i, 2) = "âõîä" Then
ts = Format(a(i, 1), "hh:nn:ss")
Select Case ts
Case Is < #8:00:00 AM#
ts = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
ts = #2:00:00 PM#
Case Is > #5:00:00 PM#
ts = #5:00:00 PM#
End Select
Else
tf = Format(a(i, 1), "hh:nn:ss")
Select Case tf

Case Is < #8:00:00 AM#
tf = #8:00:00 AM#
Case #1:00:00 PM# To #2:00:00 PM#
tf = #2:00:00 PM#
Case Is > #5:00:00 PM#
tf = #5:00:00 PM#
End Select
te = CDate(tf) - CDate(ts)
If (CDate(ts) <= #1:00:00 PM#) And (CDate(tf) >= #2:00:00 PM#) Then te = te - (1 / 24)
b(x, 2) = b(x, 2) + te
' Debug.Print Format(te, "hh:nn:ss") & "[-]" & Format(ts, "hh:nn:ss") & "[-]" & Format(tf, "hh:nn:ss")
End If
End If
tmp = a(i, 2)
'End If
Next
[h1].Resize(x, 2) = b
End Sub


Классно работает, но неправильно считает, получилось за
10.01.2012 9:40:09
10.01.2012 10:53:15
10.01.2012 10:57:43
10.01.2012 12:19:03
10.01.2012 12:22:30
10.01.2012 13:55:51
10.01.2012 14:00:21
10.01.2012 15:43:44
10.01.2012 15:46:44
10.01.2012 17:30:02

Ответ: 10.01.2012 31:01:59, а надо 10.01.2012 6:08:35.
...
Рейтинг: 0 / 0
23.10.2012, 11:07
    #38009432
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
svovachпараметры worktime изменить можно?
Разрешение нужно? Да пжалста. Хочешь - как я сделал, жёстко в коде, поправив присвоения, хочешь - с листа или формы бери, хочешь - inputbox воткни...
...
Рейтинг: 0 / 0
23.10.2012, 16:37
    #38010225
R Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
svovach,

Код: vbnet
1.
If a(i, 2) = "&#226;&#245;&#238;&#228;" Then



тут кракозябы исправьте на "вход"
...
Рейтинг: 0 / 0
29.10.2012, 13:40
    #38016931
svovach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Exel, извлечение рабочего времени из диапозона дататайм
Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Exel, извлечение рабочего времени из диапозона дататайм / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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