Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Änderung Format aus ISO 6801

Änderung Format aus ISO 6801
02.02.2019 11:33:59
Rob
Hallo zusammen
Projektaufgaben werden auf einer Webseite erfasst. Mittels json werden diese ganzen Informationen über power query in Excel eingelesen. Die registrierten Arbeitsstunden werden in einem ISO 6801 Format geliefert, mit denen man aber keine weiteren Berechnungen so einfach machen kann.
Beispiele wären:
PT2H30M
PT30M
PT4H
Mit Formeln allein in Excel bin ich nicht bis zum gewünschten Ziel gekommen. Daher würde ich in Richtung vba oder ein Script für power query gehen. Für power query habe ich bisher noch nie was gemacht, vba ist schon ein paar Jahre.
Jetzt bin ich mir nur nicht sicher, was sich mehr für sowas eignet, power query oder vba? Oder wäre es gar nur mit Formeln in Excel zu lösen?
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderung Format aus ISO 6801
02.02.2019 11:59:35
Günther
Moin,
ich würde das wahrscheinlich mit Power Query lösen. Aber auch eine "Zwischenbearbeitung" mit VBA sollte zielführend sein.
Gruß
Günther
AW: Änderung Format aus ISO 6801
02.02.2019 14:20:03
Rob
Dann befasse ich mich damit mal.
Danke
AW: VBA
02.02.2019 14:37:06
Fennek
Hallo,
ein Ansatz für das gezeigte Format:

Sub F_en()
With CreateObject("vbscript.regexp")
.Global = True
.ignorecase = False
.Pattern = "GT(\d{1,2}H)(\d{1,2}M)"
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Tim = 0
Ti = .Replace(Cells(i, 1), "$1 $2")
If Left(Ti, 2) = "GT" Then Ti = Mid(Ti, 3)
Tm = Split(Ti)
For t = LBound(Tm) To UBound(Tm)
If Right(Tm(t), 1) = "H" Then Tim = Val(Tm(t)) * (1 / 24)
If Right(Tm(t), 1) = "M" Then Tim = Tim + Val(Tm(t)) * (1 / (60 * 24))
Next t
Cells(i, 2) = Tim
Cells(i, 2).NumberFormat = "hh:mm"
Next i
End With
End Sub
Falls noch Tage, Wochen usw gezeigt werden, sind vermutlich Anpassungen nötig.
mfg
https://www.herber.de/bbs/user/127371.xlsm
Anzeige
AW: VBA (etwas vereinfacht)
02.02.2019 18:22:04
Fennek

Sub F_en2()
With CreateObject("vbscript.regexp")
.Global = True
.ignorecase = False
.Pattern = "(\d{1,2}H)(\d{1,2}M)"
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Ti = .Replace(Cells(i, 1), "$1 + $2")
If Left(Ti, 2) = "GT" Then Ti = Mid(Ti, 3)
Ti = Replace(Replace(Ti, "H", " / 24 "), "M", " / 1440 ")
Cells(i, 6) = Format(Evaluate(Ti), "hh:mm")
Next i
End With
End Sub

Anzeige
AW: VBA (etwas vereinfacht)
02.02.2019 18:48:41
Rob
Besten Dank für den Ansatz. Hatte mich jetzt erstmal nur mit power query beschäftigt, aber mit vba komme ich wohl schneller ans Ziel.
AW: VBA (etwas vereinfacht)
02.02.2019 18:48:43
Rob
Besten Dank für den Ansatz. Hatte mich jetzt erstmal nur mit power query beschäftigt, aber mit vba komme ich wohl schneller ans Ziel.
AW: VBA (etwas vereinfacht)
02.02.2019 23:15:02
Günther
Das ist doch klar, Rob!
Mit einer (praktisch) fertig gelieferten Lösung hast du erheblich weniger Zeitaufwand als wenn du dir das selber erarbeiten musst. - Für mich ist ein Forum in erster Linie "Hilfe zur Selbsthilfe", was auf Dauer gesehen enorm hilft, dass sich Fragesteller eher und besser "abnabeln" können und auf der erarbeiteten Basis weitere Fortschritte machen werden.
Gruß
Günther
Anzeige
AW: Muda
03.02.2019 10:03:10
Fennek
Der Code von gestern war typisch menschlich "warum den einfach, wenn es auch noch komplizierter geht"
Dieser Code hat die Nachteile:
- leicht zu entwickeln
- leicht zu warten, auch ohne weitreichende VBA-Kenntnisse

function F_ISO(c0)
h = instr(1,c0,"H")
m = instr(1,c0, "M")
if h then
ti = val(mid(c0,3,h-3)) / 24
else
h = 2
endif
if m then	ti = ti + val(mid(c0, h+1)) / 1440
F_ISO = format(ti, "hh:mm")
end function

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige