Ich habe eine Spalte mit dem WertExcel VBA - Finden Sie heraus Unterschied in Stunden
09:00 - 21:00
Der Versuch, um herauszufinden, wie kann ich den Unterschied in Stunden erhalten, das heißt. für dieses Beispiel 12
.
Ich habe eine Spalte mit dem WertExcel VBA - Finden Sie heraus Unterschied in Stunden
09:00 - 21:00
Der Versuch, um herauszufinden, wie kann ich den Unterschied in Stunden erhalten, das heißt. für dieses Beispiel 12
.
Sie diese Funktion nutzen zu können
Function GetHourDifference(cell As Range) As Long
GetHourDifference = Hour(Split(cell.Value, "-")(1)) - Hour(Split(cell.Value, "-")(0))
End Function
in Ihrem Haupt-Code ausgenutzt werden als
MsgBox GetHourDifference(Range("a1")) '<--| if cell "A1" has value "09:00 - 21:00" it returns: 12
@ user1049961 - Seien Sie sich bewusst, dass die Lösung nur den Stundenanteil der beiden Zeiten subtrahiert, d. H. Die Minuten vollständig ignoriert. So werden sowohl 09:00 - 21:59 als auch 09:59 - 21:00 als 12 Stunden gemeldet, obwohl der erste 12 Stunden und 59 Minuten und der zweite nur 11 Stunden und 1 Minute ist. – YowE3K
folgt, wenn Ihr 09.00 - 21.00
in Zelle B7, dann funktioniert dies:
=TIME(RIGHT(B7,5),RIGHT(B7,2),)-TIME(LEFT(B7,5),MID(B7,4,2),)
sehr rohe Gewalt, wie es davon ausgeht, dass die ti Ich bin immer 00.00
und keine anderen Zeichen werden jemals enthalten sein.
Ich habe es gerade noch einmal versucht, mit Zelle B7, die das angegebene Beispiel und meinen Ausdruck wie gezeigt enthält und es funktioniert - Ändern des Ergebnisses wie die Beispielzeiten bearbeitet werden. Wie können Sie antworten, dass "es annimmt, die Zeit ist immer 00.00" - haben Sie es tatsächlich getestet, wie ich zweimal getan habe ... –
Option Explicit
Sub Macro1()
Dim txtDate As String
Dim i As Integer
Dim varDateDif As Variant, split1 As Variant, split2 As Variant
' Cell with times
txtDate = Range("A2").Value
' Split the cell using the delimiter -
varDateDif = Split(txtDate, "-")
For i = 0 To LBound(varDateDif)
split1 = varDateDif(i) ' First time
split2 = varDateDif(i + 1) ' Second time
Next i
' Difference in hours
Range("B2").Value = Abs(CDate(split1) - CDate(split2))
' Difference in minutes
Range("C2").Value = DateDiff("n", split1, split2)
End Sub
fragt das OP speziell nach dem Unterschied in Stunden, also denke ich nicht, dass Minuten notwendig sind. Ich denke auch, dass dies eine bessere Antwort wäre, wenn Sie eine Erklärung anstelle eines Code-Dumps hinzufügen würden. – CallumDA
Es wurde als Bonusinformation hinzugefügt, da das OP es nützlich finden könnte. Kommentare zur Klärung hinzugefügt. – Niclas
Wenn Sie eine Formel-Lösung suchen, würde ich mit dem folgenden gehen:
=HOUR(RIGHT(C24,5))-HOUR(LEFT(C24,5))
Welche solange Ihre Werte sind immer im Format vorgesehen funktioniert.
Wenn Sie einen VBA-Lösung suchen ich mit der @ user3598756
gehen würden Sie für eine VBA suchen oder Lösung übertreffen? – CallumDA
Wenn Sie nach einer VBA-Lösung suchen, scheint die 'DateDiff'-Funktion genau das zu sein, was Sie brauchen. Diese Funktion gibt die Differenz zwischen zwei Daten in der gewählten Einheit von Sekunden bis Jahren zurück. Sie sagen nicht, wie 9:00 und 21:00 Uhr gehalten werden. Wenn sie in Zellen gehalten werden, werden sie wahrscheinlich als Daten festgehalten. Excel hält Daten als Doppel. Der ganzzahlige Teil ist die Anzahl der Tage seit dem 1.1.1900, und der Bruchteil ist SecondsSinceMidnight/SecondsInDay. –