Problem bei Formatierung [hh]:mm im Excel?

Excel - (Microsoft Excel, HM)

3 Antworten

Ich kann das Problem nicht nachstellen. Die Zellformatierung scheint doch bei Deinem Beispiel überall gleich zu sein und in den anderen Zellen wird ja richtig gerechnet -> oder ist das manuell?

Ist das h auch über die Formatierung erzeugt oder steht das wirklich hinter der Zahl? Dann wäre klar, warum die Berechnung schiefgeht.
Zellen formatieren > Benutzer definiert > Typ hh:mm "h" erzeugt das H quasi nur an der Oberfläche, damit bleibt es eine Zahl und die Berechnung sollte gehen.


DeeDee07  24.11.2015, 16:51

In den "funktionierenden" Zellen ist ein Dezimal-Format, kein Uhrzeitenformat. Excel kann in der Standardeinstellung (1900-Datumsformat) keine negativen Zeiten darstellen (außer mit Umwegen via Textfunktionen).

3
Ninombre  24.11.2015, 22:30
@DeeDee07

Danke, das Thema war für mich neu - was dazu gelernt!

0

Hier ein Ereignis-µ, welches das Format  immer hin-und-herschaltet, allerdings unter realer Wertänderung von Zeitstunden [Einheit: 1 Tag = 24h = 1] und Industriestunden [Einheit:  1 Stunde = 1]:

Sub Worksheet_selectionchange(ByVal Target As Range) 'Wechselt zwischen NumberFormat 0,00 und [h]:mm
If Not Intersect(Target, Range("e11:e15")) Is Nothing Then
Debug.Print Target.NumberFormat ' î Î î Bereich anpassen!
If InStr(1, Target.NumberFormat, "[h]") > 0 Then Target.Value = Target.Value * 24: Target.NumberFormatLocal = "0,00 ""Std""": End
If InStr(1, Target.NumberFormat, "0.") > 0 Then Target.Value = Target.Value / 24: Target.NumberFormatLocal = "[h]:mm ""h""": End
MsgBox "falsches Format?"
End If: End Sub ' nicht Worksheet_Change: das ruft sich immer wieder selbst auf durch die Aktion /24 bzw *24

Für Berechnungen ist das sehr gefährlich, aber handhabbar. Evtl die Ergebniszelle mit in den Bereich der umzuwandelnden (Einzel!-)Zellen einbeziehen. (i.F. wird auf E11 bezogen:)

Evtl kann eine zusätzliche Kontrollfunktion noch etwas mehr Sicherheit geben:

=ZELLE("Format";E11)

 Diese Formel in einem extra Bereich (exBer) für jede einzelne an der Rechnung beteiligte Zelle setzen. Das liefert -entgegen den Angaben in der Hilfe!-

S, wenn Zeitformat, und

F2, wenn Industriestundenformat.

Kontroll-Fo:

=Wenn(Und(Zählenwenn(exBer;"S")>0;Zählenwenn(exBer;"F2")>0;" inkompatible Formate ! ";" alle Zellen haben gleiches Format")

Das zweite und dritte if sind -wie bei mir häufig- das einzeilige if, das kein else benötigt und deshalb kein end if braucht. Mehrere Befehle sind jeweils mit : aneinandergehängt (Dabei kein Zeilenumbruch erlaubt vor : End ! (wenn kürzere Zeilen zur Darstellung gewünscht, dann mit Leerzeichen, dann underbar, dann Enter,

also so: ... Then  ...: ... _

...: ...: End)  (anstatt End geht auch Exit Sub oder in einer Schleife zB Exit FOR

"...indem ich die Ist- von den Sollstunden abziehe."

Du rechnest Ist - Soll. Das ist das Eine.

Das Andere ist, dass selbst wenn du Soll - Ist rechnen würdest, negative Werte heraus kommen könnten, nämlich dann, wenn du über das Soll hinaus gearbeitet hast.

Dann bekommst du den dir bekannten Fehler (#). Diesen umgehst du, in dem du die Excel-Optionen veränderst: 

Datei → Optionen → Erweitert → Beim Berechnen der Arbeitsmappe → (x) 1904 Datumswerte verwenden


sms456 
Beitragsersteller
 24.11.2015, 16:29

Danke, jetzt hat es funktioniert!!

1