Excel automatisch Zeitformat

atti123

Cadet 4th Year
Registriert
Aug. 2004
Beiträge
115
Hi

ich habe folgendes Problem.

Ich habe eine Excel-Tabelle in die ich zwei Zeiten eintrage, z.B.

A1 - 7:30
B1 - 8:00
C1 - Ergebnis 0,50 (Ausgabe muss als Dezimalzahl sein)

Soweit alles kein Problem, nun is der Mensch ja von Natur aus faul :evillol: und ich habe keine Lust immer diesen ":" da zwischen zu schreiben.

Ich will also "730" eingeben und Excel soll dann ein "7:30" daraus machen.

Normal sind die Felder ja mit "HH:MM" formatiert, dann bekomme ich aber 00:00 als Ausgabe.
Habe dann ##:## probiert, hier ist die Ausgabe "7:30" nur ist das Format dann Zahl und nicht Zeit und das Endergebnis ist irgendwie Murks :freak:

Meine Frage ist also, wie setze ich das um ^^

Ich hoffe es ist alles verständlich, bin schon etwas müde ^^

\\edit: vll noch dazu, ich nutze OpenOffice
 
Setz den : in Anführungszeichen, dann sollte es klappen (zumindest bei Excel ist das so).

##":"##
 
Versuche es mal mit VBA und dem Code...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 1 Then 'nur für spalte a
    Select Case Target.Value
        Case Is > 999
            Target.Offset(0, 1).Value = CDate(Left(Target.Value, 2) & ":" & Right(Target.Value, 2))
        Case Is > 99
            Target.Offset(0, 1).Value = CDate(Left(Target.Value, 1) & ":" & Right(Target.Value, 2))
       Case Else
            Target.Offset(0, 1).Value = CDate("00:" & Right(Target.Value, 2))
    End Select
Target.Offset(0, 1).NumberFormat = "hh:mm"
End If
End Sub
Zeile als Uhrzeit Formatieren.

Schau dir einfach mal die Tabelle an, sehe Anhang
 

Anhänge

Moin,

@ Entilzha: Unter Excel wird der Code funktionieren. Aber OO-Calc versteht da nur "Bahnhof".

@ atti: Ich mache das so, dass ich bei der Autokorrektur eingegeben habe, dass 2 Kommas (,,) durch einen Doppelpunkt ersetzt werden. dann bleibe ich auf der Zehnertastatur, wenn ich 7,,30 eingebe und automatisch wird das in 7:30 als korrekte Zeit umgewandelt, mit der ich dann natürlich auch rechnen kann.
 
Hi

erstmal danke für eure Tips.

@Mr. Snoot: habe es gerade mal probiert, leider klappt es nicht.

@Entilzha: sieht ja interessant aus, nur leider weiß ich nicht wo ich mit dem Code hin soll. Deine Tabelle im Anhang macht im Grunde genommen das was ich will. Problematisch ist nur das ich (soweit ich das verstanden habe) die "730" in A1 schreibe und "7:30" in B1 als Ergebnis bekomme. Ich müsste also eine neue Spalte in die Tabelle einbauen, damit passt sie nicht mehr auf eine A4-Seite und ich hätte im Ausdruck eine überflüssige Spalte. Schön wäre also wenn ich in A1 die "730" eingeben und daraus eine "7:30" wird :D

@cpt. Nemo: so ähnlich mach ich es momentan auch. Habe bei meiner Tastatur (Razer Lycosa) die Num-Taste zum Doppelpunkt gemacht :) Nur dient die Tabelle aber nicht nur mir, sondern auch Kollegen die diese Möglichkeit nicht haben, und denen zu erklären in der Autokorrektur aus ",," ein ":" machen zu lassen (ganz nebenbei guter Tipp eigentlich) klappt wahrscheinlich auch nicht ^^ Der Wunsch nach der automatischen Formatierung kam von einigen Kollegen. Ich dachte das wäre kein großes Ding. Wohl falsch gedacht :D

Aber ich gebe die Hoffnung noch nicht auf. Vll findet sich ja noch etwas :)
 
Moin Atti,

in EXCEL funzt dieser Code exakt so, wie du es brauchst:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim x As Variant
   Dim y As String
   Dim z As String
   
   On Error Resume Next
      If Target.Column = 1 Then 'Spalte A
         x = Target.Value
         y = CStr(x)
         z = Left(y, Len(y) - 2) & ":" & Right(y, 2)
      
         Target.Value = TimeValue(z)
      End If
End Sub
In OO-Calc wird das wohl nicht laufen, auch nicht im Kompatibilitätsmodus. Es wären also noch einige Anpassungen eines OO-Fans und -Wissenden :cool_alt: erforderlich.

[EDIT] Ich habe eben noch die Original-Excel-Datei hoch geladen. Falls du Excel zur Verfügung hast, kannst du ja mal checken, wie das läuft. [/EDIT]
 

Anhänge

Zuletzt bearbeitet: (Datei angehängt)
Hi

Also, ich hab mir das ganze jetzt mal in Excel angeschaut und dort macht es tatsächlich genau das was es soll ^^ Jetzt frage ich mich nur, wenn man das ganze jetzt an OO anpasst, funktioniert das dann noch in Excel? Die ganze Sache scheint tatsächlich schwieriger zu sein als ich mir das gedacht habe :freak:

Noch eine Frage zu dem Code. Wie sage ich dem auf welche Spalten das angewendet werden soll? (es sind mehrere) Habe mich mit diesem Zeug leider nie beschäftigt ^^ dann sind wenigstens die Kollegen mit Excel schon mal glücklich :D
 
Moin Atti,

atti123 schrieb:
Also, ich hab mir das ganze jetzt mal in Excel angeschaut und dort macht es tatsächlich genau das was es soll ^^
Ja ...
Jetzt frage ich mich nur, wenn man das ganze jetzt an OO anpasst, funktioniert das dann noch in Excel?
Also, wenn du das in OO öffnest, versucht Calc zwar, das zu interpretieren bzw. zu übersetzen, aber das klappt nicht. Vom Code her brauchst du ganz klar 2 Versionen. Und die laufen nicht in 1 (eins) Workbook! Also je eine Datei für Excel und Calc erforderlich.
Die ganze Sache scheint tatsächlich schwieriger zu sein als ich mir das gedacht habe
Ja ...
Noch eine Frage zu dem Code. Wie sage ich dem auf welche Spalten das angewendet werden soll? (es sind mehrere)
Na endlich mal was leichtes :evillol:
Code:
If Target.Column = 1 [B][COLOR="Sienna"]Or Target.Column= 3 Or Target.Column= 27[/COLOR][/B] Then 'Spalte A, C, ...
Also, ich habe nicht einen einzigen Kunden mit OO, wo ich Code einsetzen müsste. Sonst könnte ich die gewiss helfen. Aber Mr. Goo... ist recht hilreich, wenn du Forum OpenOffice Basic eingibst. Dort einfach mal anfragen und den Excel-Code anpassen lassen. Kurz dazu schreiben, was der Code warum macht und dass er in Excel sauber läuft.
 
Hi

habe mal deinen Rat befolgt und bin bei openoffice.info gelandet. Dort hat es jemand mit ner Formel und der Formatierung ##":"## gelöst.

Die Formel ist wie folgt..

Code:
=REST((LINKS(B1;LÄNGE(B1)-2)/24+RECHTS(B1;2)/1440-LINKS(A1;LÄNGE(A1)-2)/24-RECHTS(A1;2)/1440);1)*24

Ich habe absolut keinen Plan warum aber sowohl Excel als auch OO scheinen es zu verstehen :evillol:

Habe es nur kurz getestet, werde es Später in meine Tabelle einbauen und mal gucken was passiert :)
 
Aber damit hast du doch auch die Extraspalte, die du nicht wolltest :confused_alt:

sonst hättest du diese Lösung auch schon eher haben können :D
 
Moin atti,

Habe es nur kurz getestet, werde es Später in meine Tabelle einbauen und mal gucken was passiert
Na ja, ich bin in manchen Dingen Perfektionist und versuche, alle denkbaren Möglichkeiten zu bedenken. Gelingt nicht immer, aber ein blindes Huhn findet bekanntlich auch mal ein Korn ... :evillol: Probiere doch einmal 0:05 - 0:45 aus, da "meckert" zumindest Excel. Und das ist auch logisch. Das ließe sich wahrscheinlich noch mit der TEXT()-Funktion ändern, aber dadurch wird die Formel auch nicht übersichtlicher.

... Und es funzt in beiden Welten, weil die Tabellenblatt-Funktionen gleich sind bzw. entsprechend übersetzt werden.

Das mit der Formatierung ##:## kann ich nicht so ganz nachvollziehen, denn in einem Beispiel (Excel) ergibt 300 - 730 das Ergebnis 5. OK, gerundet sind das natürlich 5 Stunden, aber das ist doch nicht im Sinne des Erfinders! - Das Aussehen (!) der Zeiten in der Stunde nach Mitternacht kannst du besser so formatieren: 00":"00 oder #0":"00, dann sehen die Zeiten (beispielsweise 0:05) auch aus, wie die Zeit, welche du gemeint hast.


@ Mr. Snoot: Wenn die genannte Formel in der Ergebnisspalte steht, dann geht das schon in vielen Fällen (ab 1:00). Und ich mag gar nicht daran denken, wenn die Zeiten über Mitternacht hinaus gehen ...
 
Zuletzt bearbeitet:
Aber er will doch die Zeiten eintragen - also kann in diesen Zellen ja nicht gleichzeitig die Formel drinstehen.

Oder ich hab da was falsch verstanden :)
 
Hi

@Mr. Snoot: nein hab ich nicht, die Sache sieht jetzt so aus..

A1 - 730 --> 7:30
B1 - 800 --> 8:00
C1 - die Formel = 0,50

Die Formatierung ##":"## in A1 und B1 macht natürlich den ":" zwischen die Zahlen :)

@cpt. Nemo: die Zeiten Spielen sich eig nur zwischen 7:30 und 19:00 ab, dafür sollte es doch gehn oder? Ich werde meine Tabelle mal mit der Formel "ausstatten" und mal gucken wie sich das ganze so macht ^^

Und für Excel habe ich ja jetzt nen Funktionierenden Code, also kann ich ja auch für Excel so eine Lösung bauen :cool_alt:

fals sich für OO-Calc noch was ergibt halte ich euch auf dem laufenden, muss ja alles seine Ordnung haben ^^
 
Mr. Snoot schrieb:
[..] Oder ich hab da was falsch verstanden :)
Vielleicht ...
Aber ein File sagt mehr als 1.000 Worte :D

@atti: klar, solange es zwischen 1:00 und 23:59:59 liegt. Sonst gibt es Probs. :(

Ein Tipp noch: Du hast anhand des Codes erkannt, was da passieren wird. Das sollte dich animieren, dich einmal vermehrt mit dem OO-Basic auseiander zu setzten. Ohne Ironie: Dann verstehst du auch, warum das was (auch falsch) läuft! Und du kannst viel mehr erreichen!
 

Anhänge

Zuletzt bearbeitet: (Ergänzt, weil sehr schnelle Antworten)
Zurück
Oben