Zeit aus Text "extrahieren"

Bild

Betrifft: Zeit aus Text "extrahieren"
von: Fabian
Geschrieben am: 28.08.2015 14:41:58

Halli hallo :-)
Ich stehe aktuell vor folgendem Problem:
Ich habe eine Spalte mit viel Text in jeder Zelle. In jeder dieser Zellen findet sich irgendwo eine Zeitdauer im Format hh:mm:ss. Ich möchte nun daneben eine neue Spalte erstellen, in der nur die Zeiten stehen, die in der anderen Spalte im Text untergehen.
Da wird es doch bestimmt einen Befehl à la Find.Date oder Find.Time o.Ä. geben, um die Zeit zu finden und sie anschließend in einer anderen Zelle einzeln zu speichern.
Wichtig:
- Höchstens eine Zeit pro Zelle
- Nicht in jeder Zeile sind Zeiten
- Ich suche keinen Befehl, der auf der Annahme basiert, dass die Zeit immer an der gleichen Stelle in der Zelle auftaucht.
Ich hoffe, ihr könnt mir helfen.
Viele Liebe Grüße
Fabian

Bild

Betrifft: AW: sollte realisiert werden können ...
von: ... neopa C
Geschrieben am: 28.08.2015 14:47:12
Hallo Fabian,
... aber stelle doch mal ein paar Beispieltextdaten hier ein. Sind noch andere Zahlenwerte oder gar Datums- bzw. Zeitwerte im Text?
Gruß Werner
.. , - ...

Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Sepp
Geschrieben am: 28.08.2015 19:02:36
Hallo Fabian,
so?
Tabelle1

 ABC
1Das ist ein Text mit Zeit 13:47:15 und weiterer Text! 13:47:15
2Das ist ein Text ohne Zeit  
314:08:00 Zeit am Anfag 14:08:00
4Zeit am Ende 17:00:15 17:00:15

Formeln der Tabelle
ZelleFormel
C1=WENNFEHLER(TEIL(A1;SUCHEN("??:??:??";A1); 8)*1;"")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Sepp


Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Fabian
Geschrieben am: 31.08.2015 11:54:41
Ja, genau so etwas suche ich!
Allerdings hatte ich nicht geschrieben, dass ich es für die VBA-Programmierung suche. Ist es möglich, das dort mit ein paar Zeilen zu realisieren?
Liebe Grüße
Fabian

Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Sepp
Geschrieben am: 31.08.2015 20:16:54
Hallo Fabian,
ist mir zwar schleierhaft, warum du VBA bevorzugst, aber bitte.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub ReadTimeFromString()
Dim vntInput As Variant, vntOutput() As Variant, vntItem As Variant
Dim lngI As Long

vntInput = Range("A1:A4") 'Eingabebereich

Redim vntOutput(1 To UBound(vntInput))

For Each vntItem In vntInput
  lngI = lngI + 1
  vntOutput(lngI) = extractTime(CStr(vntItem))
Next

'Ausgabe
Range("B1").Resize(UBound(vntOutput, 1)) = Application.Transpose(vntOutput)
End Sub


Private Function extractTime(Text As String) As Variant
Dim objREGEX As Object, objMatch As Object

On Error GoTo ErrExit

Set objREGEX = CreateObject("VBScript.RegExp")
With objREGEX
  .MultiLine = True
  .Global = True
  .IgnoreCase = True
  .Pattern = "(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))"
  Set objMatch = .Execute(Text)
End With

If objMatch.Count > 0 Then extractTime = CDate(objMatch.Item(0).Value)

Exit Function

ErrExit:
extractTime = ""
End Function


Gruß Sepp


Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Fabian
Geschrieben am: 02.09.2015 08:52:42
Hallo,
ich empfinde VBA als flexibler, außerdem soll das ganze ein großes Programm werden, das ist nur ein Teil davon.
Danke für den Code. Schade, dass er weitestgehend unkommentiert ist, ich kenne die Hälfte der Befehle nicht.
Ich habe jetzt noch den Find-Befehl gefunden, der ja so gesehen tut, was ich will. Kann man nicht mit Find(??:??:??) nach einer Zeit suchen und diese extrahieren? Wie kann ich den Rückgabewert der Find-Funktion weiter verwenden?

Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Sepp
Geschrieben am: 02.09.2015 19:52:49
Hallo Fabian,
und was passt an meinem Code nicht?
Viel ist nicht zu kommentieren, der Bereich mit den Texten wird in ein Array eingelesen und mit der Funktion "extractTime()" mit Hilfe von Regular Expressions der enthaltene Zeitwert ausgelesen. Dieser wird in ein Ausgabe-Array geschrieben und schließlich in die Tabelle zurückgeschrieben.
Mit .Find findest du evtl. die entsprechende Zeile die einen Zeitwert enthält, aber den Zeitwert selbst kannst du damit nicht auslesen.

Gruß Sepp


Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Fabian
Geschrieben am: 03.09.2015 14:23:02
Hallo,
wenn ich deinen Code ausführe, passiert einfach nichts ^^ Ich hab auch schon die entsprechenden Stellen angepasst, aber ohne Ergebnis. Hatte auch zu Beginn gehofft, dass es einen (oder mehrere wenige) Befehl(e) gibt, der/die mir mein Ergebnis liefert/liefern.
Das mit dem Find-Befehl habe ich dann auch herausgefunden, habe mich jetzt für den Mid-Befehl entschieden. Der funktioniert zwar nur, wenn die Zeit immer an der gleichen Stelle steht (was bei mir der Fall ist), liefert mir aber leider keine allgemeingültige Lösung.
Dennoch danke für die Hilfe!
Viele Grüße
Fabian

Bild

Betrifft: AW: Zeit aus Text "extrahieren"
von: Sepp
Geschrieben am: 03.09.2015 18:29:00
Hallo Fabian,
wenn bei dir nichts passiert, dann wird es wohl an falschen Angaben deinerseits liegen.
Dass das Datum immer an der selben Stelle steht, hast du in deinem Eingangspost dezidiert ausgeschlossen.
Lade doch eine Beispieldatei hoch.

Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "mehrere Variable Druckbereiche auf einem blatt"