Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Stunden splitten

Stunden splitten
22.04.2009 09:10:38
bernie
Hallo Leute,
ich bräuchte dringend Hilfe. In einem Arbeitszeitblatt habe ich die Stunden, welche für einen Monat zur Nachtzeit anfallen, addiert z.B. 144:00 (Zellformat [hh:]:mm).
Nun möchte ich diese Stunden per VBA-Makro so aufbereiten lassen, daß jede Zahl in eine separate Zelle übertragen wird.
A1 = 1
B1 = 4
C1 = 4
D1 = 0
E1 = 0
Verständlicherweise können die Stunden auch mal kleiner sein.
Nur - das bekomme ich nicht hin. Hat jemand eine Ahnung, wie man diese Stunden splittet?
Für eine gute Hilfe wäre ich sehr dankbar
Bernie
https://www.herber.de/bbs/user/61347.xls

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Stunden splitten
22.04.2009 09:22:35
Erich
Hallo Bernie,
eine Möglichkeit (Formel von C4 nach rechts kopieren):
 ABCDEFG
2144:00      
3       
4  14400

Formeln der Tabelle
ZelleFormel
C4=LINKS(RECHTS(TEXT($A2;"[h]mm"); 6-SPALTE(A1)); 1)
D4=LINKS(RECHTS(TEXT($A2;"[h]mm"); 6-SPALTE(B1)); 1)
E4=LINKS(RECHTS(TEXT($A2;"[h]mm"); 6-SPALTE(C1)); 1)
F4=LINKS(RECHTS(TEXT($A2;"[h]mm"); 6-SPALTE(D1)); 1)
G4=LINKS(RECHTS(TEXT($A2;"[h]mm"); 6-SPALTE(E1)); 1)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Stunden splitten - VBA
22.04.2009 10:18:03
Erich
Hi Bernie,
hab gerade gesehen - du wolltest das ja in VBA:

Sub StdEinzeln()
Dim strT As String, cc As Long
strT = Replace(Cells(2, 1).Text, ":", "")
For cc = Len(strT) To 1 Step -1
Cells(4, cc + 7 - Len(strT)) = Mid(strT, cc, 1)
Next cc
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Stunden splitten - VBA
22.04.2009 10:58:45
bernie
Hallo Erich,
habe das getestet - läuft genial.
Vielen Dank für die super Hilfe.
Bernie
AW: noch ein wenig einfacher ...
22.04.2009 11:08:36
Erich
Hi Bernie,
... sieht es aus, wenn die Schleife einfach vorwärts läuft, also:
For cc = 1 To Len(strT)
statt
For cc = Len(strT) To 1 Step -1
Danke für deine Rückmeldung und Grüße von Erich aus Kamp-Lintfort
Anzeige
Stunden splitten Zellen zusammengefügt
22.04.2009 12:14:55
bernie
Hallo Erich,
alles läuft super, nur ein kleiner Haken.
Ich hatte vergessen, daß ich für den Druck auf ein Formular Zellen zusammenfügen musste.
Hier läuft das Makro nicht.
Kannst Du vielleich hier auch behilflich sein?
Im voraus schon mal besten Dank
bernie
https://www.herber.de/bbs/user/61352.xls
AW: mit verbundenen Zellen (iiieehh!!!)
22.04.2009 12:37:16
Erich
Hi Bernie,
probier mal

Option Explicit  ' immer zu empfehlen
Sub StdEinzeln()
Dim strT As String, cc As Long
strT = Replace(Cells(2, 1).Text, ":", "")
For cc = 1 To Len(strT)
Cells(4, 3 * cc + 5 - Len(strT)) = Mid(strT, cc, 1)
Next cc
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Verbundene Zellen sind des Programmierers Tod!

Anzeige
AW: mit verbundenen Zellen (iiieehh!!!)
22.04.2009 20:16:38
bernie
Hallo Erich,
bei der Zeit von 144:00 (von links beginnend, wie in Deinem VBA beschrieben) funktioniert das tadellos.
Nur müsste das Ganze von rechts beginnend ablaufen, da ich auch kleinere Stunden (z.B 7:00) habe.
Vielleicht hast Du da auch eine geniale Idee.
Habe es selbst versucht (Deine 1. Formel umgebaut), haut aber nicht hin.
Ich bin halt noch sehr in der Lernphase.
Viele Grüsse
bernie
AW: mit verbundenen Zellen (iiieehh!!!)
22.04.2009 23:52:12
Erich
Hi Bernie,
so sollte es auch für weniger Stunden funzen:

Option Explicit
Sub StdEinzeln2()
Dim strT As String, cc As Long
strT = Replace(Cells(2, 1).Text, ":", "")
For cc = 1 To Len(strT)
Cells(4, 3 * (cc + 5 - Len(strT))) = Mid(strT, cc, 1)
Next cc
End Sub

Wenn es 1000 Std. oder mehr werden können, ist links eine Spalte zu wenig,
dann müsstest du die Zeile
Cells(4, 3 * (cc + 5 - Len(strT))) = Mid(strT, cc, 1)
ersetzen durch
Cells(4, Application.Max(1, 3 * (cc + 5 - Len(strT)))) = Mid(strT, cc, 1)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: und wieder etwas einfacher
23.04.2009 08:58:22
Erich
Guten Morgen, Bernie,
hier noch zwei Varianten:

Option Explicit
Sub StdEinzeln3()
Dim strT As String, cc As Long, pp As Long
strT = Replace(Cells(2, 1).Text, ":", "")
pp = 15                       ' Startposition
For cc = Len(strT) To 1 Step -1
Cells(4, pp) = Mid(strT, cc, 1)
pp = pp - 3                ' 3 nach links
Next cc
End Sub
Sub StdEinzeln4()
Dim strT As String, cc As Long, pp As Long
strT = Replace(Cells(2, 1).Text, ":", "")
pp = 15
' Leeren nicht gebrauchter Zellen
For cc = Len(strT) + 1 To 5
Cells(4, 3 * (6 - cc)).MergeArea.ClearContents
Next cc
' Ausfüllen
For cc = Len(strT) To 1 Step -1
Cells(4, pp) = Mid(strT, cc, 1)
pp = Application.Max(1, pp - 3) ' bei ab 1000 Std.
Next cc
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Perfect Stunden splitten
23.04.2009 09:25:46
bernie
Hallo Erich,
das ist absolut perfekt. Vielen Dank für die super Hilfe.
Konnte Dein Makro gut nachvollziehen und in mein Stundenblatt einbauen - genial.
Grüsse aus dem südwestlichen Teil Deutschlands.
bernie

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige