Differenz aus der End- und Anfangszeit, die in einer Zelle stehen

  • #1
N

nok106

Bekanntes Mitglied
Themenersteller
Dabei seit
10.09.2005
Beiträge
108
Reaktionspunkte
0
Ort
Brunsbüttel
Hallo Excelfreunde !

Gibt es hierfür eine Lösung ?  ???

Ich habe einige Tabellen erhalten, bei deren Aufbau nicht bedacht wurde, dass mit den Einträgen weiter gerechnet werden soll.
So ist es bei den Zeitspannen, indem die Anfangs- und die Endzeit in einer Zelle enthalten sind, in etwa so: 07.30-16.45
Um daraus die Differenz zu bilden, also die Dauer zu berechnen, müßte man den Eintrag erst in seine Bestandteile zerlegen,
um dann die Differenz aus dem End- und dem Anfangszeitpunkt zu finden.

Könnte dieses auch mittels eines Makros gemacht werden ?

Hat jemand eine Idee ob das geht und wenn ja - Wie ?

Einstweilen herzlichen Dank an alle, die sich für mich bemühen.

MfG Odje
 
  • #2
Also es geht alles, wenn man will  ;D

Wie soll das Makro denn die Zellen->07.30-16.45' finden?
Per Selektion ?
Welches Format sollen denn die Zelle nach der Umwandlung haben ?

Gruß Matjes :)
 
  • #3
Hallo Matjes,

vorweg wünsche ich dir noch ein gesundes und friedvolles 2007  mml

Die Zeitspannen sollen als Dezimalzahl ausgegeben werden.
A5 = 7.00-14.00 in B5 die Auflösung
A8 = 8.35-20.15 die Auflösung in A8
Ich habe mir mal eine Formel zusammen gebastelt,
Code:
=((RECHTS(WECHSELN(B5;.;:);LÄNGE(B5)-FINDEN(-;B5;1)-1)*1)-(LINKS(WECHSELN(B5;.;:);FINDEN(-;B5;1)-1)*1))*24
aber es sind etliche Umstellungen vorzunehmen da dachte ich es könnte mit einem Makro schneller zu bewerkstelligen sein.
Wenn es geht, Zelle selektieren und in in der Nachbarzelle Spalte B die Zeitspanne umrechnen !

Gruß Odje
 
  • #4
Hallo nok106,

dann pobier mal den aus.

Gruß matjes :)
Code:
'*******************************************************************************************
Sub StrDatumsdiffInDiffUmrechnen()
 ->*** Wandelt selektierte Zellen
 ->*** mit einer Zeitdifferenz der Form 07.30-16.45
 ->*** in Zellen
 ->*** mit einer Zeitdifferenz im Format hh:mm
 ->***
  
  Dim Zelle As Range
  Dim s As String, pos As Long, lmin As Long, dHour As Double, lHour As Long
  Dim d1 As Date, d2 As Date, ddiff As Date
  Dim s1 As String, h1 As Long, m1 As Long
  Dim s2 As String, h2 As Long, m2 As Long
  
  For Each Zelle In Selection
    s = Zelle.Value
    pos = InStr(1, s, -)
    If pos > 0 Then
     ->beide durch Bindestrich getrennte Zeiten
      s1 = Left(s, pos - 1)
      s2 = Right(s, Len(s) - pos)
      
     ->Beide in einen Zeitpunkt wandeln
      If InStundeMinuteWandeln(s1, h1, m1) Then
        If InStundeMinuteWandeln(s2, h2, m2) Then
          d1 = 1.1.2006  & h1 & : & m1 & :00
          d2 = 1.1.2006  & h2 & : & m2 & :00
          If d1 > d2 Then d2 = 2.1.2006  & h2 & : & m2 & :00
          ddiff = d2 - d1
          lmin = DateDiff(n, d1, d2)
          dHour = lmin / 60
         ->auf 2 Stellen runden
          lHour = dHour * 100
          dHour = lHour / 100
         ->Ergebnis in Zelle rechts neben Zelle schreiben
          Zelle.Offset(0, 1).NumberFormat = 0.00
          Zelle.Offset(0, 1).Value = dHour
        End If
      End If
    End If
  Next
AUFRAEUMEN:
  Set Zelle = Nothing
End Sub

'*******************************************************************************************
Private Function InStundeMinuteWandeln(s As String, lHour As Long, lmin As Long) As Boolean
 ->Zeitpunkt wird erwartet in der Form 07.30
  
  Dim sHour As String, sMin As String, pos As Long
  
  s = Trim(s): pos = InStr(1, s, .): If pos = 0 Then Exit Function
  sHour = Left(s, pos - 1)
  sMin = Right(s, Len(s) - pos)
  
  On Error Resume Next
  lHour = sHour
  If Err.Number <> 0 Then Err.Clear: On Error GoTo 0: Exit Function
  On Error GoTo 0
  If Not ((0 <= lHour) And (lHour <= 24)) Then Exit Function
  
  On Error Resume Next
  lmin = sMin
  If Err.Number <> 0 Then Err.Clear: On Error GoTo 0: Exit Function
  On Error GoTo 0
  If Not ((0 <= lmin) And (lmin <= 59)) Then Exit Function
  
  InStundeMinuteWandeln = True
  
End Function
 
  • #5
Hallo Matjes,

für das späte Feedback bitte ich um Entschudigung.

Der Code ist perfekt.   :1

Besten Dank für deine Hilfe.

Herzliche Grüße und baldige G.....

Odje
 
Thema:

Differenz aus der End- und Anfangszeit, die in einer Zelle stehen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben