Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Algorithmus Betreuungsfaktor

Algorithmus Betreuungsfaktor
20.05.2015 16:02:27
Rainer
Hallo,
ich suche nach einem möglichst (bestehenden) und einfachen Algorithmus, um per vba
einen sogenannten Betreuungsfaktor zu errechnen. (und hoffe, dass jemand so etwas schon gemacht hat)
Ich habe also pro Person und pro Tag null, oder ein oder mehrere eingetragene Betreuungszeiten. Diese können, müssen sich aber nicht überdecken.
Und diesen Überdeckungsgrad (über viele Tage, jeweils konkret durch Auswahl vorgegeben) will ich errechnen.
z.B. 1) 09:00 - 10:00 und 13:00 - 13:30 Uhr bedeutet kein Überdeckungsgrad, also Betreuungsfaktor =1.
2) Einträge 09:30 - 13:00 und 09:00 - 09:30 bedeutet: eine halbe Stunde Überdeckung und daher 1/8 =12,5 % Überdeckung, gleich Betreuungsfaktor 1,125.
Wie kann ich nun die zeitlichen Überdeckungen am besten ermitteln, zumal auch 3 Zeiten pro Tag eingetragen sein können.
Bin für Eure Ansätze dankbar!!
Rainer

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Algorithmus Betreuungsfaktor
21.05.2015 16:24:45
Rolf
Hallo Rainer,
da sonst keine Antwort kam; vielleicht hilft dir das:
https://www.herber.de/bbs/user/97762.xlsm
Gruß Rolf
PS.: In deinem Beispiel sehe ich keine Überdeckung.

AW: Algorithmus Betreuungsfaktor
22.05.2015 08:59:20
Sheldon
Hallo Rainer,
gegeben ist, dass die Zeitpaare in zwei Spalten nebeneinander notiert werden. Dieser Zellbereich wird in der udf als Argument übergeben. Das Ding rechnet dann minutengenau aus, wieviel Zeit pro Tag genutzt wurde und wieviele Minuten mehrmals belegt sind.

Function Ueberschneidung(rngZeitpaare As Range) As Single
Dim iMin As Integer, bUsed As Boolean, iUsedMin As Integer, iBookedMin As Integer, oRow
For iMin = 1 To 1440
bUsed = False
For Each oRow In rngZeitpaare.Rows
If oRow.Cells(1, 1)  (iMin / 1440) Then
bUsed = True
iBookedMin = iBookedMin + 1
End If
Next
If bUsed Then iUsedMin = iUsedMin + 1
Next
Ueberschneidung = iBookedMin / iUsedMin
End Function
Als Recheneinheit lassen sich natürlich auch Sekunden oder was immer nutzen, dazu muss der Nenner entsprechend angepasst werden (auch in der For-Schleife).
Gruß
Sheldon
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige