Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 29. 3. 2016 13:22:25

jaro007
Člen
Registrace: 29. 3. 2016
Příspěvků: 1

Součet časové položky

Mám malý problém s identifikací času a se součtem časové délky operací.
Výstupní tabulka stroje obsahuje, sloupec A - datum (DD:MM:YYYY) sestupně dle sledu operací, sloupec B - aktuální čas operace (HH:MM:SS)  a sloupec C - ID operace (1-30)
Bohužel do sloupce B se zapisuje čas započetí i konec operace. Potřeboval bych ke každému záznamu do dalšího sloupce (třeba D) v tabulce uložit příznak Start/Stop. Je to logicky jednoduché - příznak Start započíná dříve (při splnění stejného dne a ID operace) než příznak Stop, bohužel jich je během dne několik. Následně do sloupce E umístit k záznamu Stop i délku operace. Data bych chtěl vyhodnocovat měsíčně.
Jednotlivé operace dle datumu a ID jdou pomocí kontingenční tabulky vyfiltrovat jednoduše, ale následně dynamicky (dle počtu operací) již se nepodařilo přiřadit příznak Start/Stop a sečíst čas.
Poradíte někdo řešení

Datum           Čas           ID         Start/Stop      Délka
4.3.2016    16:08:42    1
4.3.2016    16:05:02    3
4.3.2016    16:04:59    2
4.3.2016    16:04:56    4
4.3.2016    16:04:52    1
4.3.2016    15:49:54    1              Stop        00:01:14 
4.3.2016    15:48:59    4
4.3.2016    15:48:55    3
4.3.2016    15:48:48    2
4.3.2016    15:48:40    1              Start

Děkuji za pomoc.

Offline

#2 29. 3. 2016 13:28:53

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Součet časové položky

Jestli to správně chápu: první ID bude vždy STOP, následující stejné ID bude vždy START. Je to tak? Z této logiky by se dalo vyjít.

Podmínkou je že v databázi není nedokončená operace.

Editoval ludviktrnka (29. 3. 2016 13:29:52)


LibreOffice 5.4.

Offline

#3 29. 3. 2016 13:44:51

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Součet časové položky

do sloupce D bych do 2. řádku dal "stop" a od 3. řádku dále vzorec: =IF(ISODD(COUNTIF($C$2:C2;C3));"start";"stop")

do sloupce E bych dal od 2. řádku vorec: IF(D2="stop";B2-INDEX(B3:$B$11;MATCH(C2;C3:$C$11;0);1);"")


mělo by to snad fungovat. Rozsah pole v INDEX a MATCH je potřeba rozšířit na konce dat (nebo někam přes konec to je celkem jedno)



Datum    čas    id    start/stop    délka
04.03.2016    16:08:42    1    stop    00:03:50
04.03.2016    16:05:02    3    stop    00:16:07
04.03.2016    16:04:59    2    stop    00:16:11
04.03.2016    16:04:56    4    stop    00:15:57
04.03.2016    16:04:52    1    start   
04.03.2016    15:49:54    1    stop    00:01:14
04.03.2016    15:48:59    4    start   
04.03.2016    15:48:55    3    start   
04.03.2016    15:48:48    2    start   
04.03.2016    15:48:40    1    start


... no pokud by v datech byly nedokončené nebo naopak "nezapočaté" operace, tak to reálně ani nelze vyhodnotit - musela by nastoupit další kriteria.

Editoval ludviktrnka (29. 3. 2016 13:56:28)


LibreOffice 5.4.

Offline

#4 29. 3. 2016 14:18:36

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Součet časové položky

Já tomu rozumím jinak. ID znamená vždy bezpohlavní vstup. Neodlišuje poznámkou co to je.


    Samozřejmě je to celkem jedno, ale tohle dělají průmyslové logery lépe. Bude to nějaký zastaralý, nebo předělaný systém. Předpokladem je to, aby při vyhodnocení celého období (měsíce) a) - zde je to "den" bylo známo jak co v měsíci začíná.


    Logicky do nového dne se započte údaj z vypnutí procesu dne předchozího, jinak žádný nový nezačne, respektive lze zadat start nového ID jinak (protože takový stav očekáváme). Jestli první údaj za období je start nebo stop zadání upřesňuje a tak se tím zabývat nemusíme.
    Prostě "STOP" je prvním údajem v každém dni a patří dni předchozímu. V extrémním případě se tento údaj musí přenášet z měcíce na měsíc, ale nemám představu co se stane při výpadku sledování. Když vypadne sledovaný proces tak je to jiné kafe. Vše skončí naráz začne startem.


    Základem musí být přetřídění tabulky podle :-
1. parametr ID
2. parametr čas


    Dále musíme dosadit údaj pro první vstup :
A . - Start (1) = FALSE (popřípadě True)
B . - Start (2) = FALSE (popřípadě True)
C . - Start (3) = FALSE (popřípadě True)
    Je možné, že START je od půlnoci, ale jinak : ....
Tohle by se správně mělo přidat k předchozímu dni a vlastní den začít druhým vstupem takto :-
A . - Start (1) = TRUE
B . - Start (2) = TRUE
C . - Start (3) = TRUE
....

    jednotlivé vyhodnocení potom vypadá takto pro "ID 1".
Dat čas 1. poř.čís. vstupu(PČ) vzorec =IF(MOD(PČ;2)=0;"START";"STOP)
Dat čas 2. poř.čís. vstupu(PČ) vzorec =IF(MOD(PČ;2)=0;"START";"STOP)
Dat čas 3. poř.čís. vstupu(PČ) vzorec =IF(MOD(PČ;2)=0;"START";"STOP)   
Dat čas 4. poř.čís. vstupu(PČ) vzorec =IF(MOD(PČ;2)=0;"START";"STOP)


    Vzorec pro výpočty času + Start/Stop by měl být vybaven absolutními adresami. Ta obsahuje dolary příklad $A$1 a podobně.


     Když všechny adresy budou udělány správně je možné zpatně přetřídit podle času tak jak bylo zadáno vstupem. Když by to bylo uděláno špatně - doporučím raději aby se to načetlo a vyložilo zpět už jen jako hodnoty a text. A pak teprve vrátit původní pořadí.

Editoval neutr (29. 3. 2016 14:36:09)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí