Zeit aus String extrahieren
#11
Das Fehlen der Std. fehlte mir in der Datei als Beispiel (im Forumstext war es, stimmt). Ok.

In B1: benenne Rechne beziehtSichAuf =AUSWERTEN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(time!$A1;"d";"/1+");"h";"/24+");"m";"/1440+");"s";"/86400"))

B1: =Rechne

So können d h m s alle fehlen oder in beliebiger Anordnung stehen.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#12
(27.11.2023, 17:52)LCohen schrieb: Das Fehlen der Std. fehlte mir in der Datei als Beispiel (im Forumstext war es, stimmt). Ok.
Zeile 7 ;) Dadurch habe ich es ja erst bemerkt
Gruß
Michael
Antworten Top
#13
Als UDF & 'named range'


Angehängte Dateien
.xlsb   __evaluate_time_snb.xlsb (Größe: 16,29 KB / Downloads: 1)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#14
Hallo

Da der TE Beratung Resistenz ist, hier eine einfache PQ Lösung, kein VBA und keine Registerformel benötigt wird.


Angehängte Dateien
.xlsx   time.xlsx (Größe: 18,97 KB / Downloads: 4)
Viele Grüße
PIVPQ
Antworten Top
#15
Zitat:Beratung Resistenz
scheint mir eher:

Beratung resistent
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#16
Oder

Code:
Sub M_snb()
  With CreateObject("ADODB.recordset")
      .Open "SELECT '=' & replace(replace(replace(replace(replace(tijd,""d"",""""),""h"",""/24""),""m"",""/1440""),""s"",""/86400""),"" "",""+"") FROM `time$`", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0"""
      Cells(20, 2).CopyFromRecordset .DataSource
  End With
  Cells(20, 2).CurrentRegion = Cells(20, 2).CurrentRegion.Value
End Sub

Und was PQ bei @PIVPQ macht ist nur dieses mit einer anderen Sprache:
Code:
Sub M_snb()
   With CreateObject("ADODB.recordset")
       .Open "SELECT  left(tijd,instr(tijd,""d"")), right(left(tijd,instr(tijd,""h"")),3) ,right(left(tijd,instr(tijd,""m"")),3), right(left(tijd,instr(tijd,""s"")),3) FROM `time$`", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0"""
       sheets("time").Cells(4, 2).CopyFromRecordset .DataSource
   End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#17
Hallo,

Tage:
=WECHSELN(TEIL($A1;WENNFEHLER(MAX(1;SUCHEN("d";$A1)-2);LÄNGE($A1)+1);2);"d";"")
Stunden:
=WECHSELN(TEIL($A1;WENNFEHLER(MAX(1;SUCHEN("h";$A1)-2);LÄNGE($A1)+1);2);"h";"")
Minuten:
=WECHSELN(TEIL($A1;WENNFEHLER(MAX(1;SUCHEN("m";$A1)-2);LÄNGE($A1)+1);2);"m";"")
Sekunden:
=WECHSELN(TEIL($A1;WENNFEHLER(MAX(1;SUCHEN("s";$A1)-2);LÄNGE($A1)+1);2);"s";"")

Gruß, Uwe
Antworten Top
#18
Variante zu #4 mit einstelligen Tageszahlen:
Code:
=WENNFEHLER(--LINKS($A1;FINDEN("d";$A1)-1);"")

für Stunden, Minuten und Sekunden:
Code:
=WENNFEHLER(--TEIL($A1;FINDEN("h";$A1)-2;2);"")
("h" durch "m" bzw. "s" ersetzen)
Antworten Top
#19
Hallo,

eine Alternative: Der Code berechnet die Zeit ([h]:mm:ss)

Code:
Sub T_1()
Dim Ar, Zt As Date

For i = 1 To 7
    Ar = Split(Cells(i, 1))
    For a = 0 To UBound(Ar)
        Select Case Right(Ar(a), 1)
            Case Is = "d": Zt = Val(Ar(a))
            Case Is = "h": Zt = Zt + Val(Ar(a)) / 24
            Case Is = "m": Zt = Zt + Val(Ar(a)) / 1440
            Case Is = "s": Zt = Zt + Val(Ar(a)) / 86400
            Case Else: Stop
        End Select
    Next a
    Cells(i, 2) = Zt
    Zt = 0
Next i
End Sub

16h 12m 53s 16:12:53
16h 27m 35s 16:27:35
02h 46m 26s 2:46:26
16h 27m 35s 16:27:35
1d 13h 31m 07s 37:31:07
16m 25s 0:16:25
01h 00m 11s 1:00:11

mfg
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste