Variantenauswahl mittels Spreadsheet

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
heilo
Posts: 154
Joined: Sat Jan 21, 2017 5:34 pm

Variantenauswahl mittels Spreadsheet

Postby heilo » Wed Feb 28, 2018 8:49 pm

Guten Abend,
ich möchte mittels einer Tabelle verschiedene Varianten erzeugen.

Leider scheitere ich bei der Variantenauswahl.
In der Zelle O1 habe ich einen Grund-Wert eingetragen.
In den Zeilen 21 bis 29 habe ich einen Multiplikator eingetragen.
Mit der in Zelle J3 eingetragenen Zahl wollte ich die Werte auswählen. 1->Zeile 21; 2->Zeile22; ...9->Zeile 29; bei Wert außerhalb 1 bis 9 sollte der Grundwert übernommen werden.

Da hat auch funktioniert mit der entsprechenden Abfrageformel. Ich mußte allerdings einige Klammern setzen. Nach Bestätigung der Formel waren die Klammern verschwunden, es hat aber funktioniert.
Eingegebene Formel
=J3 == 1 ? O1 * B21 : (J3 == 2 ? O1 * B22 : (J3 == 3 ? O1 * B23 : (J3 == 4 ? O1 * B24 : (J3 == 5 ? O1 * B25 : (J3 == 6 ? O1 * B26 : (J3 == 7 ? O1 * B27 : (J3 == 8 ? O1 * B28 : (J3 == 9 ? O1 * B29 : O1))))))))
Nach Schließen der Zeichnung und neuen Öffnen sieht die Formel folgendermaßen aus:
=((((((((J3 == 1 ? O1 * B21 : J3) == 2 ? O1 * B22 : J3) == 3 ? O1 * B23 : J3) == 4 ? O1 * B24 : J3) == 5 ? O1 * B25 : J3) == 6 ? O1 * B26 : J3) == 7 ? O1 * B27 : J3) == 8 ? O1 * B28 : J3) == 9 ? O1 * B29 : O1
und funktioniert nicht mehr.

Was kann ich tun?

Wie kann ich die Variantenauswahl anders lösen?

Im deutschsprachigen Forum und Internet habe ich keine Lösung finden können. Englisch kann ich leider nicht.

Vielen Dank und viele Grüße
Lothar
User avatar
microelly2
Posts: 4331
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Variantenauswahl mittels Spreadsheet

Postby microelly2 » Wed Feb 28, 2018 9:49 pm

heilo wrote:
Wed Feb 28, 2018 8:49 pm

Eingegebene Formel
=J3 == 1 ? O1 * B21 : (J3 == 2 ? O1 * B22 : (J3 == 3 ? O1 * B23 : (J3 == 4 ? O1 * B24 : (J3 == 5 ? O1 * B25 : (J3 == 6 ? O1 * B26 : (J3 == 7 ? O1 * B27 : (J3 == 8 ? O1 * B28 : (J3 == 9 ? O1 * B29 : O1))))))))
Nach Schließen der Zeichnung und neuen Öffnen sieht die Formel folgendermaßen aus:
=((((((((J3 == 1 ? O1 * B21 : J3) == 2 ? O1 * B22 : J3) == 3 ? O1 * B23 : J3) == 4 ? O1 * B24 : J3) == 5 ? O1 * B25 : J3) == 6 ? O1 * B26 : J3) == 7 ? O1 * B27 : J3) == 8 ? O1 * B28 : J3) == 9 ? O1 * B29 : O1
und funktioniert nicht mehr.

Was kann ich tun?
Wie kann ich die Variantenauswahl anders lösen?
Ich glaube, dass jeder (Freizeit-) Programmierer von FreeCAD zufrieden ist, wenn seine Methoden in den "meisten" Fällen gehen.
"Spitzfindige" Formeln wie deine mit 9 Verzweigungen wird kaum einer erwarten, und dann sind solche Ausdrücke vielleicht nicht getestet.

Man könnte den Fehler beheben (lassen) oder sich nach einer anderen Methodik umschauen.
Leistungsfähiger als Tabellenkalkulationsformeln sind Skripte in Python.
Ich gehe in der Schule nie über 3 Verzweigungen in Formeln hinaus, weil das kaum einer noch versteht.

Was hälst du davon, mal Python zu lernen?
Da erschließen sich ganz andere Welten.

Ein Makro mit einem Dialog mit 10 Auswahlen, welches dann die Daten aus dem Spreadsheet holt ...
Wenn du dich mit der Idee anfreunden kannst, schreib ich mal so einen Auswahldialog ;)
chrisb
Posts: 17608
Joined: Tue Mar 17, 2015 9:14 am

Re: Variantenauswahl mittels Spreadsheet

Postby chrisb » Wed Feb 28, 2018 9:53 pm

Hast Du mal versucht, die Formel auf mehrere Zellen aufzuteilen?
heilo
Posts: 154
Joined: Sat Jan 21, 2017 5:34 pm

Re: Variantenauswahl mittels Spreadsheet

Postby heilo » Wed Feb 28, 2018 10:13 pm

Danke.

Ob ich mit fast 68Jahren noch als Würgesvhlangen- oder Drachenbändiger erfolgreich sein kann, wage ich zu bezweifeln. Habe auch noch andere Hobbys, z Bsp beschäftige ich mich seit 8 Wochen mit einer CNC-gesteuerten Heißklebepistole.
Es war ein Versuch. Hatte vor vielen Jahren mal einen Kurzlehrgang ProE. Dort hatten mich die Familientabellen begeistert. Habe im Beruf auch einige Excel- erstellt, welche am Ende relativ umfangreich waren.
Von Makros habe ich leider auch keine Ahnung.

Wie ich es sinnvoll auf mehrere Zellen aufteilen soll, ohne alles am Ende noch komplizierter zu machen, weiß ich nicht.

Gibt es noch andere Möglichkeiten in FreeCAD Varianten auszuwählen?

Viele Grüße
Lothar
ulrich1a
Posts: 1872
Joined: Sun Jul 07, 2013 12:08 pm

Re: Variantenauswahl mittels Spreadsheet

Postby ulrich1a » Wed Feb 28, 2018 10:18 pm

heilo wrote:
Wed Feb 28, 2018 8:49 pm
Nach Schließen der Zeichnung und neuen Öffnen sieht die Formel folgendermaßen aus:
Dies ist ganz offensichtlich ein schwerer Fehler in der Tabellenkalkulation. Es sollte ein Fehlerreport erstellt werden.

Unabhängig davon scheint die beim Speichern erzeugte Version der Formel beim erneuten Speichern bestehen zu bleiben. Wenn man das gestellte Problem mit einer Formel dieser Art lösen will, ergibt sich damit eine nette Denksportaufgabe: Die Formel muss wohl so aufgestellt werden, dass die Klammern alle vorne landen. Eventuell muss die Logik gedreht werden. Es ist leider etwas spät, so dass ich mich dem Problem jetzt nicht widmen kann. Ich würde aber noch nicht aufgeben.

Ulrich
chrisb
Posts: 17608
Joined: Tue Mar 17, 2015 9:14 am

Re: Variantenauswahl mittels Spreadsheet

Postby chrisb » Wed Feb 28, 2018 10:40 pm

ulrich1a wrote:
Wed Feb 28, 2018 10:18 pm
heilo wrote:
Wed Feb 28, 2018 8:49 pm
Nach Schließen der Zeichnung und neuen Öffnen sieht die Formel folgendermaßen aus:
Dies ist ganz offensichtlich ein schwerer Fehler in der Tabellenkalkulation. Es sollte ein Fehlerreport erstellt werden.
heilo, kannst Du das Beispiel so weit wie möglich eindampfen und dann hier die Datei hochladen und den Text der Formel vor dem abspeichern hier im Text angeben? Dann können wir das mal auf verschiednene Systemen verifizieren.
heilo
Posts: 154
Joined: Sat Jan 21, 2017 5:34 pm

Re: Variantenauswahl mittels Spreadsheet

Postby heilo » Thu Mar 01, 2018 7:48 am

Danke,
daß ihr euch danit beschäftigen wollt.

Hier wie gewünscht die stark vereinfachte Zeichnung mit Tabelle.
Originalformeln in Zeile 6
=J3 == 1 ? O1 * B21 : (J3 == 2 ? O1 * B22 : (J3 == 3 ? O1 * B23 : (J3 == 4 ? O1 * B24 : (J3 == 5 ? O1 * B25 : (J3 == 6 ? O1 * B26 : (J3 == 7 ? O1 * B27 : (J3 == 8 ? O1 * B28 : (J3 == 9 ? O1 * B29 : O1))))))))
=J3 == 1 ? O1 * C21 : (J3 == 2 ? O1 * C22 : (J3 == 3 ? O1 * C23 : (J3 == 4 ? O1 * C24 : (J3 == 5 ? O1 * C25 : (J3 == 6 ? O1 * C26 : (J3 == 7 ? O1 * C27 : (J3 == 8 ? O1 * C28 : (J3 == 9 ? O1 * C29 : O1))))))))
.... bis P6
Die Klammern sollten eigentlich nicht notwendig sein, aber ohne ging die Formel nicht.
Werte in Zeilen 22 bis 29 sind nur willkürlich eingetragen.
Formtest_mit_Tabelle.fcstd
(10.43 KiB) Downloaded 8 times
OS: Ubuntu 16.04.3 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.13205 (Git)
Build type: None
Branch: master
Hash: 4ef00d7be4658a1fdc905699ede2860e002d9996
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0
Locale: German/Germany (de_DE)


Falls es einen besseren Weg gibt, bitte angeben.

Vielen Dank und viele Grüße
Lothar
chrisb
Posts: 17608
Joined: Tue Mar 17, 2015 9:14 am

Re: Variantenauswahl mittels Spreadsheet

Postby chrisb » Thu Mar 01, 2018 7:55 am

Vielen Dank schon mal, ich schau mir's später an.
ulrich1a
Posts: 1872
Joined: Sun Jul 07, 2013 12:08 pm

Re: Variantenauswahl mittels Spreadsheet

Postby ulrich1a » Thu Mar 01, 2018 8:55 pm

Also man kann den Fehler austricksen, wenn die geschachtelte Bedingung wie folgt formuliert wird:

Code: Select all

=A10 != 6 ?( A10 != 5 ? (A10 != 4 ? (A10 != 3 ? (A10 != 2 ? B1 : B2) : B3 ): B4) : B5) : B6
Nach der Eingabe sieht die Formel dann so aus:

Code: Select all

=A10 != 6 ? A10 != 5 ? A10 != 4 ? A10 != 3 ? A10 != 2 ? B1 : B2 : B3 : B4 : B5 : B6
Sie funktioniert aber immer noch, obwohl man als Mensch nicht mehr durchsieht.
Statt auf Gleichheit wird auf Ungleichheit getestet. Damit vertauschen sich die Ergebnisse. Die jeweils nächste geschachtelte Abfrage steht damit im Wahr-Zweig und nicht im Falsch-Zweig. Diese Art der Schachtelung wird akzeptiert und ohne Klammerung von der Tabellenkalkulation notiert und wie gewünscht abgearbeitet. Es fehlen halt die übersichtlichen Klammern.

Ich halte es trotzdem für einen zu beseitigenden Fehler. Ansonsten werde ich das vorläufig in der Dokumentation erwähnen, damit man bis zur Fehlerbehebung gewarnt ist.

Ulrich
heilo
Posts: 154
Joined: Sat Jan 21, 2017 5:34 pm

Re: Variantenauswahl mittels Spreadsheet

Postby heilo » Thu Mar 01, 2018 9:27 pm

Danke Ulrich,

ich werde das morgen mal unter meinen speziellen Bedingungen testen.
Heute ist mein alter Kopf zu müde dafür. Werde dann darüber berichten.

Viele Grüße Lothar