[gelöst] Länge einer Formel oder Formel falsch?

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Pit Zyclade
Beiträge: 1307
Registriert: Mo 12. Nov 2012, 16:59

[gelöst] Länge einer Formel oder Formel falsch?

Beitrag von Pit Zyclade » Mi 17. Okt 2018, 20:40

Hallo, ihr Fleißigen (und Schlauen),
Ich wollte aus einer Tabellenspalte, die Referenzwerte enthält, die minimalen und maximalen in gesonderte Spalten extrahieren.
Typische Einträge sind z.B.
12 - 24
(leere Zelle)
< 20
> 33

Resultieren soll:
12
(leer)
(leer) , weil <20 dann das Maximum wäre, nicht das Minimum
33

Dazu habe ich für die Spalte "von" (=minimaler Wert) die Formel (für die Zelle in der "von"-Spalte in der 35. Zeile) geschrieben:
=WENN(E35="";"";WENN(FINDEN(" - ";E35;1)>0;TEIL(E35;1;FINDEN(" - ";E35;1));WENN(FINDEN("> ";E35;1)>0;TEIL(E35;FINDEN("> ";E35;1)+2;LÄNGE(E35));"")))
In Teilen klappt das, aber nicht, wenn ich alle drei Möglichkeiten abdecken will und ich habe ein Brett vor dem Kopf:
Fragen:
1. Fehler in der Formel?
2. Es findet ein Umbruch statt, leider. Ist der Schuld, also die Zeile zu lang?
3. Gibt es eine prinzipielle Längenbeschränkung?

Danke für Antworten
Zuletzt geändert von Pit Zyclade am Do 18. Okt 2018, 19:09, insgesamt 1-mal geändert.
LO 5.4.7.2 (x64) / AOO 4.1.5 / Windows 7 prof. 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.



Helmut_S
Beiträge: 221
Registriert: Di 9. Feb 2016, 19:27

Re: Länge einer Formel oder Formel falsch?

Beitrag von Helmut_S » Do 18. Okt 2018, 12:22

Hallo Pit, hier eine 1. Rate zu deiner Formel.
Zu lang dürfte die Formel nicht sein, denn dann würdest du Fehler 512 "Formel zu lang" - bekommen. Laut Hilfe schluckt der Calc-Compiler 8192 Zeichen. Zeilenumbruch in der Adressleiste sehe ich auf meinem Monitor (23") auch keinen, wenn ich das Calc-Fenster genügend groß - ca. 2/3 aufziehe.
Einen Fehler zumindest konnte ich finden. Es ist die Auto-Wortergänzungs- Funktion die aus einem kurzen "-" ein langes "-- " macht (bei mir zumindest). daher wird 12 - 24 nicht gefunden. Auch die Leerzeilen werden richtig angezeigt. Dann aber ist Schluss mit lustig. Hinunterziehen der Formel ergibt bei < 20 und >33 Fehler 519 "Wert!" also irgendwas mit Text anstelle von Zahl muss daran Schuld sein.
Vielleicht hilft dir das (ein Stückchen zumindest) weiter.

Gruß Helmut
Dateianhänge
LangeFormel.ods
(10.29 KiB) 7-mal heruntergeladen
OpenSUSE Leap 15, (Win10-64),
LO 6.1.2

Pit Zyclade
Beiträge: 1307
Registriert: Mo 12. Nov 2012, 16:59

Re: Länge einer Formel oder Formel falsch?

Beitrag von Pit Zyclade » Do 18. Okt 2018, 13:57

Danke Helmut_S,
Aber dass möglicherweise das Suchziel nicht optimal ist, hatte ich bereits durch Überarbeitung der Tabelle und Vereinheitlichung ausgeschlossen.

Nein, es ist die Kombination von WENN und FINDEN. Denn FINDEN liefert bei keinem Fund weder eine Zahl, noch einen Wahrheitswert, der in der Kombination mit WENN nutzbar wäre. So bringt
=WENN(FINDEN("> ";E1;1);"Gefunden";"Nicht gefunden")
niemals ein "Nicht gefunden", sondern immer #WERT!
Das ist kurios und ich muß mir eine kompliziertere Lösung suchen, womit ich mein Ziel erreichen kann.
WENN_FINDEN.ods
(10.58 KiB) 4-mal heruntergeladen
LO 5.4.7.2 (x64) / AOO 4.1.5 / Windows 7 prof. 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

LORI
Beiträge: 75
Registriert: Di 5. Feb 2013, 14:31
Wohnort: DE-BW-Nord

Re: Länge einer Formel oder Formel falsch?

Beitrag von LORI » Do 18. Okt 2018, 14:24

Hi Piet, für - kann ich Dir nicht helfen, vllt nützt dazu die AW von Helmut_S was (DH!, auf das Ersetzen von - durch -- muss man auch erst mal kommen!).

Für < und > sowie Leerschlag kannst Du es versuchen mit =Wechseln(Wechseln(Wechseln(A1;"<";"");">";"");" ";"")
das einbauen anstelle der ;wenn...finden-Formel.
Wechseln liefert bei nicht-Auftreten keinen Fehler, ohne 4.Argument(n-tes Auftreten) wechselt es ALLE solchen Zeichen aus, hier jedes davon gegen nichts.
Wechseln ist eine der wenigen Funktionen, die GROß-klein unterscheidet, und auch sonst häufig ganz praktisch.. probier also mal

=WENN(E35="";"";WENN(FINDEN(" - ";E35;1)>0;TEIL(E35;1;FINDEN(" - ";E35;1);Wechseln(Wechseln(Wechseln(E35;"<";"");">";"");" ";""))))

Ist nur geringfügig kürzer, aber die Klammern sind leichter zu überschauen (nicht getestet, muss weg)

Sehe grad noch Deine Erwiderunf mit Fehler bei Nichtfinden.

Zwei Möglichkeiten: einbetten in Wenn(Nicht(istfehler(finden(...)));Teil...
Oder (auf die Schnelle):
Wennfehler(Teil(E35;1;Finden(" - ";E35;1) oder so ähnlich ;Wechseln(...

Pit Zyclade
Beiträge: 1307
Registriert: Mo 12. Nov 2012, 16:59

Re: Länge einer Formel oder Formel falsch?

Beitrag von Pit Zyclade » Do 18. Okt 2018, 14:26

Habe eine Lösung gefunden.
=WENN(NICHT(ISTFEHLER(FINDEN("> ";$C2;1)));"Gefunden";"Nicht gefunden")
WENN_FINDEN_1.ods
(10.54 KiB) 11-mal heruntergeladen
Nur ist diese Formel schon sehr lang und macht die Formel beim Berücksichtigen der anderen 3 Möglichkeiten wesentlich unhandlicher.
LO 5.4.7.2 (x64) / AOO 4.1.5 / Windows 7 prof. 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

balu
Beiträge: 317
Registriert: Mi 1. Jun 2011, 16:21

Re: Länge einer Formel oder Formel falsch?

Beitrag von balu » Do 18. Okt 2018, 14:48

Hallo Pit,
=WENN(FINDEN("> ";E1;1);"Gefunden";"Nicht gefunden")
Bitte hau mich nicht, aber ich weiss nicht (oder nicht mehr) warum man bei =SUCHEN() oder =FINDEN() nicht mit der normalen und einfachen Logik in einer =WENN() arbeiten kann.

Was ich aber mit sicherheit weiss, ist folgendes.
Du musst =SUCHEN() oder =FINDEN() in eine Fehlerüberprüfung einbauen, und dementsprechend auch deine gesamte Formel umstrukturieren.
Hier die geänderte Formel.
=WENN(ISTFEHLER(FINDEN("> ";E1;1));"Nicht gefunden";"Gefunden")

MIST DRÄCK!
Bin einfach zu langsam.
:oops:
=WENN(NICHT(ISTFEHLER(FINDEN("> ";$C2;1)));"Gefunden";"Nicht gefunden")
Wenn schon, dann nimm lieber meine Variante.

Falls das Problem mit dem langen Bindestrich (--)auftreten kann, dann such nicht nach *-*, sondern nimm das Codezeichen dafür, und der wäre:
=WENN(ISTFEHLER(FINDEN(ZEICHEN(150);E1;1));"Nicht gefunden";"Gefunden")
ZEICHEN 150 = langer Bindestrich
ZEICHEN 45 = kurzer Bindestrich, oder auch das Minuszeichen.
ZEICHEN 60 = <
ZEICHEN 62 = >



Gruß
balu

balu
Beiträge: 317
Registriert: Mi 1. Jun 2011, 16:21

Re: Länge einer Formel oder Formel falsch?

Beitrag von balu » Do 18. Okt 2018, 18:54

Hallo Pit,

ich hätte da einen momentanigen Formelvorschlag für dich, der aber mindestens das folgende voraussetzt.

1.
Der lange Bindestrich (ZEICHEN 150) darf nicht vorkommen.

2.
Das kleiner Zeichen *<* steht immer am Anfang.
Und ferner soll generell bei diesem Zeichen die Formelzelle leer bleiben.

3.
Das größer Zeichen *>* steht auch immer am Anfang.


Die Vorgabe mit den drei "Sonderzeichen", wie hier zu sehen,
12 - 24
< 20
> 33
sieht auf den ersten Blick wohl banal aus. Aber wie Du ja schon selbst festgestellt hat, wird eine Formel dafür recht unübersichtlich.

Ich hatte ja vorhin, fast genau so wie Du, auf die Kombination ISTFEHLER(FINDEN()) hingewiesen. Und normalerweise müsste man für diese beiden Zeichen *<* oder *>* auch eine ISTFEHLER(FINDEN()) kombination erstellen. Jedoch würde dadurch die Formel noch mal um ein ganzes Stück länger werden.

ABER!!
Hier setzte ich "Trick 17" an.
Mit

Code: Alles auswählen

=CODE(A1)
z.B. in der Zelle B1 wird der Wert des aller ersten Zeichen in der Zelle A1 ausgelesen. Und wenn dort beispielsweise folgendes drin steht,

Code: Alles auswählen

1# wasser
dann bekommt man als Ergebnis in der Zelle B1 das zu sehen. Und die 49 steht für die Zahl 1.

Wenn jetzt das kleiner *<* oder größer *>* Zeichen immer am Anfang steht, dann kann man auf die vorhin genannte Kombination verzichten, und stattdessen einfach den =CODE() abfragen. Und das würde dann als auszugsweises Beispiel wie folgt aussehen.

Code: Alles auswählen

WENN(CODE(A4)=60;"-";WENN(CODE(A4)=62....
Ohne diesen kleinen Trick würde das ja wie folgt aussehen.

Code: Alles auswählen

WENN(NICHT(ISTFEHLER(FINDEN("<";A4)));"-"...
Den Rest kannst Du dir wohl sicherlich selbst vorstellen. Da wird aus einer langen Formel eine Mega-Monsterformel.

So, und nun zeige ich dir meine lange Formel, die die gegebenheiten berücksichtigt, so fern die Punkte 1 bis 3 eingehalten werden.
=WENN(ODER(A1="";CODE(A1)=60);"-";WENN(CODE(A1)=62;WERT(TEIL(A1;FINDEN(" ";A1;2)+1;LÄNGE(A1)));WENN(ISTFEHLER(FINDEN("-";A1));"-";WERT(LINKS(A1;FINDEN("-";A1)-2)))))
Die Rot hervorgehobenen Stellen sind diejenigen, die eine Zelle mit dem Minuszeichen füllen, wenn eine Bedingung nicht zutrifft. Du kannst das Minuszeichen rausnehmen, dann ist halt die Zelle leer, oder aber durch etwas anderes ersetzen.


So, ich hoffe Du hast mich so weit verstanden, und hoffe das Du den Formelvorschlag nutzbringend anwenden kannst.

Viel Glückl und Erfolg. :)



Gruß
balu

Pit Zyclade
Beiträge: 1307
Registriert: Mo 12. Nov 2012, 16:59

Referenzwerte-Minimum-Maximum (Re: Länge einer Formel oder Formel falsch?)

Beitrag von Pit Zyclade » Do 18. Okt 2018, 19:07

Ich merke, ich habe eure Aufmerksamkeit geweckt. Da ich mit sehr,sehr wichtigen Dingen abgelenkt wurde, habe ich in den Zeitsplittern dazwischen an meinem Problem selbst weitergearbeitet und eine für mich ausreichende Lösung (die aber nicht eure Genauigkeit erreicht hat, was den langen Strich usw. betrifft) gefunden.
Referenzwerte_Minimum_Maximum .ods
(13.51 KiB) 7-mal heruntergeladen
Danke für Mitarbeit
LO 5.4.7.2 (x64) / AOO 4.1.5 / Windows 7 prof. 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.



Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste