Gemiddelde afgeronden van tijden in text formaat naar hh mm format

Status
Niet open voor verdere reacties.

StudentDennis

Gebruiker
Lid geworden
13 nov 2013
Berichten
34
Beste forumleden,

Ik probeer de inhoud van een tekstveld om te zetten naar het formaat hh:mm in een query en vervolgens hiervan het afgeronde gemiddelde weer te geven. De kolom met tekstdata ziet er momenteel als volgt uit (dit zijn dagen):

Time in Unassigned (Hoelang een werknemer geen taak toegewezen gekregen heeft)
202.83472222
0.62569444444
205.78125
205.78194444
243.01875
86.652083333
0.077777777778
198.96944444
171.03958333
202.83958333

Het lukt me wel om dit in het formaat: hh mm te krijgen, dus:

Time in Unassigned
20:02
15:01
18:45
18:46
00:27
15:39
01:52
23:16
00:57
20:09

Vervolgens zou ik hiervan dus het gemiddelde willen berekenen. Ik denk dat dat wel lukt, want dat lukt nu ook al met:

Round(Gem([Time in Unassigned]),2)

Met format kwam ik tot het formaat wat ik wil hebben:

Time in Unassigned: Format([HDB-Data]![Time in Unassigned],"Korte tijdnotatie")

Hier staat ook NULL data tussen zie ik. Ik weet niet of dat met mijn probleem te maken heeft?
Maar de twee (format en round/gem) combineren lukt me niet. Zelfs als ik ze naast elkaar zet in een query en ze beide weergeef (vinkje weergeven) werkt het niet met de foutmelding:

U probeert een query uit te voeren waarbij de opgegeven expressie Format([HDB-Data]![Time in Unassigned],"Short Time") geen deel uitmaakt van een statische functie.

Wat in mijn ogen nog vreemder is is dat als ik de gegevens naar Excel kopieer (en omzet naar het type getal) dat ik dan als gemiddelde 3,00 krijg. Als ik een som maak van alle getallen en dat deel door het aantal regels krijg is 2,3379… Als ik met Access het eerder genoemde uitvoer: Expr1: Round(Gem([Time in Unassigned]),2) krijg ik 37,2.

Ik kom er niet meer uit. Is er iemand die mij hiermee kan helpen?

Gr Dennis
 
Laatst bewerkt:
Jij komt er niet uit, ik kom er niet in... Ik snap echt geen jota van jouw berekeningen.
Dit zijn dagen, wat ik probeerde het in het formaat: hh mm te krijgen en dat lukt, dus:

Time in Unassigned
2452:33
00:33
00:08
Als ik alleen naar het getal 0,10234 kijk (de rest heeft een punt, dus je hebt ofwel een typfout gemaakt, ofwel is de verwarring nog groter) en dat staat voor dagen, dan zie ik grofweg dus 1/10 dag. Een dag heeft 24 uur, en 24/10 is op mijn rekenmachine 2,4. Ergo: het getal 0,10234 staat voor 2,45616 uren, en niet 33 minuten. Idem dito voor 0,62569444444, dat is 15 uur. En een beetje. Leg kortom eerst eens uit waar die getallen ècht voor staan, en hoe je ze omrekent.
 
Excuses voor mijn onduidelijke post en bedankt voor het wijzen hierop.

Inderdaad niet zo handig van mij geformuleerd. Ik heb het aangepast. Het gaat in de tweede kollom niet om dagen maar om uren en minuten.. Ik probeerde daar mee aan te geven dat dat deel wel lukt.

Je hebt ook gelijk dat die komma een typefout in de post was. In de database staan alleen punten.

De getallen waren voorbeelden. Ik heb ook de getallen aangepast naar een kleine selectie van de echte getallen. Time in Unassigned staat voor hoelang een werknemer geen taak toegewezen gekregen heeft. De database zelf gaat dus over taken. Het is een export uit een takensysteem. Het klopt dat sommige werknemers soms heel lang niet werken.

Ik vraag me nu ook af of de getallen wel echt dagen zijn, ik denk van wel gebasseerd op reistijden uit de zelfde database in het zelfde formaat:

Time in Travel
0.061805555556
0.11944444444

0.0076388888889
0.075694444444
0.026388888889
0.045833333333
0.022222222222
0.060416666667
0.14166666667
0.57083333333
0.072916666667
0.019444444444
0.030555555556
0.0097222222222

Dit is de reden dat ik aannam dat het over dagen gaat want de reistijd zal tussen de 5 minuten en 3 uur liggen schat ik. Dus 0.061805555556 dag * 24 uur = 1,5 uur. Een uitschieter als 0.57083333333 zie ik als fout in het systeem.

Hopelijk is dit wat duidelijker en kan iemand helpen uit te leggen hoe ik:

Round(Gem([Time in Unassigned]),2)

kan combineren met:

Time in Unassigned: Format([HDB-Data]![Time in Unassigned],"Korte tijdnotatie")

EDIT: Ik zie nu ook dat format schijnbaar niet doet wat ik wil want 200 dagen is geen 20 uur

Gr Dennis
 
Het hele getal in een getal is het aantal dagen, het deel achter de komma is de tijd. Zodra je met FORMAT gaat werken, behandel je de uitkomst als Tekst, en dat zou je niet moeten willen, want je wilt er mee rekenen. Datums en Tijden moeten dus getallen blijven. Ik zou het dan ook zo doen:
Code:
Dagen: Int([Unassigned])
Tijd: CDate(([Unassigned]-Int([Unassigned])))
Dan heb je correcte velden.
 
Allereerst hartelijk dank voor je tijd.

Ik heb ze geprobeerd en dat werkt inderdaad:

Id Dagen Tijd
1 202 8:02:00 PM
2 0 3:01:00 PM
3 205 6:45:00 PM
4 205 6:46:00 PM
5 243 12:27:00 AM
6 86 3:39:00 PM
7 0 1:52:00 AM
8 198 11:16:00 PM
9 171 12:57:00 AM
10 202 8:09:00 PM

Ik ben er achter gekomen dat de brongegevens niet kloppen, omdat er NULLS tussen staan en er dus data ontbreekt, wat weer tot gevolg heeft dat het gemiddelde niet de exacte waarheid zal weergeven. De informatie die je me geleerd hebt zal later sowieso van pas komen, dus hartelijk dank :)
 
Je kunt lege velden afvangen met de functie Nz. Wellicht dat je daar verder mee kunt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan