Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Gismo
*
Beiträge: 10
Registriert: Mo, 26.12.2016 21:58

Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Beitrag von Gismo » Sa, 01.04.2017 02:10

Hallo Leute.

Apache OpenOffice 4.1.3
AOO413m1(Build:9783)-Rev. 1761381 / 2016-09-29 02:39:19


Ich bin bei der Erstellung einer Tabelle zur Erfassung der Arbeitszeiten auf ein kurioses Problem gestoßen und beiße mir daran gerade die Zähne aus..

Hauptkriterium ist, dass man die Zeiten ohne Doppelpunkt eingeben kann.
Dies habe ich gelöst durch folgende Zellenformatierung 00":"00.
Dies ermöglicht das die Eingabe einer Zahl (1 bis 4-stellig) aus z.B. 1405 zu 14:05, oder 30 zu 00:30 umgeandelt wird.
Dazu kommt dann noch eine Spalte wo die Pausenzeit eingegeben wird und eine weitere Spalte in der alles miteinander Verrechnet wird.
Und bis hier funktioniert auch alle einwandfrei.

Für die die die Formel der Gesamtberechnung haben wollen/brauchen:
Diese ist allerdings für mein Problem nicht relevant.
Sie sieht zwar nicht gerade praktisch aus, aber funktioniert.

Code: Alles auswählen

Spalte F -> Anfang, Spalte G -> Ende, Spalte H -> Pause
=WENN(UND(ISTZAHL(F8);ISTZAHL(G8))
;WENN(G8<=F8;ZEIT(23;59;0)+ZEIT(0;1;0)
-ZEIT(LINKS(F8;WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0)));RECHTS(F8;WENN(LÄNGE(F8)>1;2;1));0)
+ZEIT(LINKS(G8;WENN(LÄNGE(G8)=4;2;WENN(LÄNGE(G8)=3;1;0)));RECHTS(G8;WENN(LÄNGE(G8)>1;2;1));0)
-ZEIT(LINKS(H8;WENN(LÄNGE(H8)=4;2;WENN(LÄNGE(H8)=3;1;0)));RECHTS(H8;WENN(LÄNGE(H8)>1;2;1));0)
;ZEIT(LINKS(G8;WENN(LÄNGE(G8)=4;2;WENN(LÄNGE(G8)=3;1;0)));RECHTS(G8;WENN(LÄNGE(G8)>1;2;1));0)
-ZEIT(LINKS(F8;WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0)));RECHTS(F8;WENN(LÄNGE(F8)>1;2;1));0)
-ZEIT(LINKS(H8;WENN(LÄNGE(H8)=4;2;WENN(LÄNGE(H8)=3;1;0)));RECHTS(H8;WENN(LÄNGE(H8)>1;2;1));0))
;"--")

Nun wollte ich für die Spalten, in der die Zeiten (oder besser gesagt Zahlen) im Format 00":"00 eingegeben werden, eine Fehlerabfrage erstellen.
Es kann ja sein, dass man versehentlich 2566 hineinschreibt, was dann 25:66 ergeben würde, was natürlich absurd ist.

Dazu will ich die jeweilige Zelle, in der ein falscher Wert eingegeben wird, mit einer bedingten Formatierung Rot einfärben.
Und daran scheiter ich gerade...

Ich habe beispielsweise in einer Zelle 2030 zu stehen was als 20:30 angezeigt wird. Es sind jedoch nur 4 Zeichen.
Nun habe ich folgende Formel zusammengebastelt:

Code: Alles auswählen

=ODER(
LINKS(F8;   WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))  )<0;
LINKS(F8;   WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))  )>23;
RECHTS(F8;  WENN(LÄNGE(F8)>1;2;1)                      )<0;
RECHTS(F8;  WENN(LÄNGE(F8)>1;2;1)                      )>59)
Dies sollte sicherstellen dass die linken beiden Zahlen zwischen 0 und 23 und die rechten beiden Zahlen zwischen 0 und 59 sein sollen, bzw wenn nicht die Zelle Rot einfärben.

Nun wird die Zelle bei 2030 aber trotzdem Rot eingefärbt...
Also habe ich alle vier Abfragen einzeln direkt in die Tabelle geschrieben:

Code: Alles auswählen

=LINKS(F8;  WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0)))
=RECHTS(F8; WENN(LÄNGE(F8)>1;2;1))
ergibt:

Code: Alles auswählen

20
30
Soweit alle in Ordnung.

Alle vier Abfragen, in dem Falle von 2030, sollten FALSCH ergeben.
Jedoch bekomme ich folgende Ausgabe:

Code: Alles auswählen

=LINKS(F8;  WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))  )<0
=LINKS(F8;  WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))  )>23
=RECHTS(F8; WENN(LÄNGE(F8)>1;2;1)                      )<0
=RECHTS(F8; WENN(LÄNGE(F8)>1;2;1)                      )>59
ergibt:

Code: Alles auswählen

FALSCH
WAHR
FALSCH
WAHR
Jetzt stellt sich mir die Frage warum mein OOCalc der Meinung sei dass 20 größer ist wie 23 sowie auch 30 größer ist wie 59....

OOCalc mach dies übrigends auch wenn ich ohne Zellenformatierung arbeite.
Sprich:

Code: Alles auswählen

A1=20
A2=Links(A1;2)=20
A3=Links(A1;2)>23=WAHR

Raffe ich da irgendetwas nicht, oder hab ich da irgendwo 'n Denkfehler drin?
Ich hoffe ihr könnt mir helfen :)

MfG
Patrick

paljass
******
Beiträge: 640
Registriert: Do, 25.10.2012 07:25

Re: Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Beitrag von paljass » Sa, 01.04.2017 07:46

Moin Patrick,
das liegt daran, dass du Text mit Zahlen vergleichst.
Links() und Rechts() ergibt jeweils Text und den vergleichst du mit Zahlen (0,23,0,59).
Richtig wirds, wenn du den Text in Zahlen umwandelst oder die Zahlen in Text, also
=Wert(LINKS(F8; WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))) )>23
oder
=LINKS(F8; WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0)) )>"23"

Ich persönlich würde in diesem Fall die erste Variante bevorzugen, weil ja eigentlich Zahlen verglichen werden soll - und ob das mit der Umwandlung in Text in allen Fällen klappt, hab ich nicht getestet.

Gruß
paljass
EDV ist wie U-Boot fahren - machst du ein Fenster auf, fangen die Probleme an.

Stephan
********
Beiträge: 10101
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Beitrag von Stephan » Sa, 01.04.2017 08:58

Dies habe ich gelöst durch folgende Zellenformatierung 00":"00.
Dies ermöglicht das die Eingabe einer Zahl (1 bis 4-stellig) aus z.B. 1405 zu 14:05, oder 30 zu 00:30 umgeandelt wird.
Da wird nichts umgewandelt und folglich steht auch keine Zeit in der Zelle (Wert: 0,5868...), sondern genau der eingegebene Wert von 1405, dieser wird lediglich optisch formatiert dargestellt.



Gruß
Stephan

Gismo
*
Beiträge: 10
Registriert: Mo, 26.12.2016 21:58

Re: Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Beitrag von Gismo » Sa, 01.04.2017 13:00

paljass hat geschrieben:
Sa, 01.04.2017 07:46
Moin Patrick,
das liegt daran, dass du Text mit Zahlen vergleichst.
Links() und Rechts() ergibt jeweils Text und den vergleichst du mit Zahlen (0,23,0,59).
Richtig wirds, wenn du den Text in Zahlen umwandelst oder die Zahlen in Text, also
=Wert(LINKS(F8; WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0))) )>23
oder
=LINKS(F8; WENN(LÄNGE(F8)=4;2;WENN(LÄNGE(F8)=3;1;0)) )>"23"

Ich persönlich würde in diesem Fall die erste Variante bevorzugen, weil ja eigentlich Zahlen verglichen werden soll - und ob das mit der Umwandlung in Text in allen Fällen klappt, hab ich nicht getestet.

Gruß
paljass
Jaaa!!
Oh man...da hätte ich aber auch selber drauf kommen müssen :D :D
Viele, vielen Dank!
Manchmal sieht man den Wald vor lauter Bäumen nicht mehr ^^
Danke!


Stephan hat geschrieben:
Sa, 01.04.2017 08:58
Dies habe ich gelöst durch folgende Zellenformatierung 00":"00.
Dies ermöglicht das die Eingabe einer Zahl (1 bis 4-stellig) aus z.B. 1405 zu 14:05, oder 30 zu 00:30 umgeandelt wird.
Da wird nichts umgewandelt und folglich steht auch keine Zeit in der Zelle (Wert: 0,5868...), sondern genau der eingegebene Wert von 1405, dieser wird lediglich optisch formatiert dargestellt.



Gruß
Stephan
Haste ja recht ;)
Die richtige Umwandlung findet erst in der Zelle mit der Gesamtberechnugn statt, mit ZEIT()..
War von mir falsch ausgedrückt. Sorry

StefanB
*
Beiträge: 12
Registriert: Do, 08.08.2013 16:02

Re: Bed.Formatierung mit Links()/Rechts() bei Zeitangabe in Textformatierung für Eingabe ohne Doppelpunkt

Beitrag von StefanB » Sa, 08.04.2017 09:06

Hallo Gismo

Habe zwar nichts zu deinem Problem beigetragen, aber wollte nur kurz Danke sagen. Arbeite auch an einem Sheet zur Zeiterfassung und der Doppelpunkt beim Eintippen nervt mich schon lang. Hast mich auf eine Idee gebracht wie ich dies umgehen kann in meinem Sheet.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Yahoo [Bot] und 9 Gäste