if dynamisch? SUMMEWENNS? Suche Rat

Bild

Betrifft: if dynamisch? SUMMEWENNS? Suche Rat
von: Wusel
Geschrieben am: 06.06.2015 20:14:32

Hallo lieber Experten,
ich habe ein Problem, bei dem ich mir schwer tue es überhaupt zu beschreiben, deshalb gleich von Anfang an mit Beispieldatei.
Eigentlich suche ich eine Möglichkeit um Folgendes zu realisieren:
For x=5 to LastRow
Wenn BEDINGUNG1 bis BEDINGUNG5 erfüllt, dann nimm den Wert aus SpalteX multipliziere ihn mit dem Wert in SpalteY und summiere. Die Summe Schreibe in Tabellenblatt "Bla" Zelle "sowieso"
next x
Soweit nicht das Problem. Was für mich das Problem ausmacht ist, dass es nicht immer alle Bedingungen gibt(1) mal gibt es nur Bedingung 3 und 5; mal gibt es 1 bis 3 etc. UND dass die Operatoren von der Benutzereingabe abhängig sind(2). Sprich die Bedingungen sind nicht immer "Wenn Wert1 gleich Wert2", sondern je nach Nutzereingabe wird daraus eben auch "Wenn Wert1 größer Wert2". Ich weiß einfach nicht, wie ich meinen Code so flexibel gestalten kann, dass er damit umgehen kann.
Ich habe bereits eine Funktion, die mir die einfache Version davon realisiert. Neu hinzugekommen sind eben die beiden oben beschriebenen Probleme (1)+(2), die ich jetzt irgendwie da unterkriegen muss.
Soweit das Problem :) Für die Helfer, die sich die Beispieltabelle angucken:
-Wählt man im TB-Portfoliodarstellung in der CB das Portfolio "FlexAnalyse" aus erscheint eine Maske(UFFLEXANALYSE). Hier gibt der Nutzer die Bedingungen ein. Sie werden in eine Tabelle im TB-Prüftabellen unter FlexAnalyse gespeichert. Auf diese Werte soll zugegriffen werden Prüftabellen!FlexAnalyse.
-Im Modul "misc" findet sich die Funktion PFFlexCalc (sie ist eine Kopie der "einfachen Variante" PFCalc(Die führt im Prinzip genau durch was zu tun ist kann aber nur Bedingungen abprüfen wie "Wenn String1 =String2 dann summiere") Ich habe die Funktion PFFlexCalc mit Kommentaren versehen. Die entsprechende Stelle ist durch '----------------------- gekennzeichnet. Etwas weiter unten kommt eine IF-Abfrage (s.Kommentar) hier müssten im Prinzip alle vorhandenen Bedingungen abgeprüft werden, aber eben genau dafür fehlt mir die Idee wie?
Ich danke allen, die sich die Mühe machen sich das anzuschauen schon im Voraus! Wenn etwas unklar ist einfach fragen :)
Beste Grüße
Wusel
https://www.herber.de/bbs/user/98068.zip

Bild

Betrifft: Hat denn keiner eine Idee?
von: Wusel
Geschrieben am: 07.06.2015 19:50:08
Der Name ist Programm :)

Bild

Betrifft: AW: if dynamisch? SUMMEWENNS? Suche Rat
von: Klexy
Geschrieben am: 08.06.2015 10:57:19
Ich verstehe nicht, warum deine Bedingungen bei Zeile 5 anfangen (For x=5 to LastRow) wenn die Bedingungen in der FlexAnalyse in Zeile 4 anfangen.
Außerdem schreibst du nicht, was passieren soll wenn es nur 3 und 5 oder 1 bis 3 gibt.
Das ist eigentlich eine Sache von IF/AND/OR oder evtl. CASE.
Wenn die Operatoren von der Benutzereingabe anhängig sind, musst du das auch in einer IF-Prüfung abfangen.

Bild

Betrifft: Da muss es doch was geben...?
von: Wusel
Geschrieben am: 08.06.2015 12:18:03
Hallo klexy und danke für deine Antwort!
Wenn ich Deine Frage nach dem x=5 richtig verstehe, hast Du da etwas übersehen. Die Bedingungen für die FlexAnalyse beginnen in Zeile 4, aber in der Funktion PFFlexAnalyse werden diese NOCH! nicht ausgelesen - weil ich nämlich nicht weiß wie ich das machen soll :) In dieser Funktion wird über andere Tabellenblätter geloopt. Ich vermute Du sprichst von einem Loop über die Objektdaten. Diese beginnen auch in Zeile 5 (Aus dem vollständigen Namen von LastRowXXX ist auch ersichtlich, wo die Musik spielt)
Wenn die Bedingungen leer sind sollen sie behandelt werden, als wären sie gar nicht da. Die Sache mit IF ist meiner Meinung nach die Holzhammermethode. Da muss dann ja jede mögliche Kombination der 5Bedingungen (leer J/N, größer/kleiner/gleich) in ein IF-Statement gepackt werden. Das wären ja 20Zeilen+! Und die Variante mit 5 Bedingungen war ursprünglich mal als variable Anzahl an Bedingungen gedacht - das funktioniert mit If dann gar nicht, oder? Da muss es doch was anderes geben, zumal ich ja, zum Beispiel bei Funktionen wie =SUMMEWENNS(), ganz bequem alle Bedingungen in Strings packen kann und die dann da rein feuern kann. Ich suche quasi eine Möglichkeit für:
IF Bedingung1 in FlexAnalyse vorhanden then
strBEDINGUNG = Bedingung1
End if
IF Bedingung2 in FlexAnalyse vorhanden then
strBEDINGUNG = strBEDINGUNG & Bedingung2
End if
IF strBEdingung then....
Gibt es so etwas nicht? :( Hoffe es wird jetzt verständlicher, was ich suche. Ich bin weiterhin für jeden Tipp sehr dankbar!
Grüße
Wusel

Bild

Betrifft: AW: Da muss es doch was geben...?
von: Klexy
Geschrieben am: 08.06.2015 14:06:05
Ich hab den Code jetzt nicht komplett analysiert.
Aber wenn du Bedingungen hast, musst du die definieren, und zwar alle.
Wenn Person & Geburtstag & Email, dann Geburtstagsmail
Wenn Person & Geburtstag & keine Email, dann Geburtstagsbrief
Wenn Person & Geburtstag & Mann & VIP, dann Krawatte
Wenn Person & Geburtstag & Frau & VIP, dann Blumen
Wenn Person & Geburtstag & Frau & VIP & über60, dann Pralinen
usw.
Da wirst du nicht drumrum kommen.
Aber was du willst, ist anscheinend eher ein Aufsummieren.
Du willst also aus den Strings aller Werte aus der Flexanalyse einen kombinierten String machen?
Dann If Bedingung1 <> "" Then usw.
Also: Wenn das Feld Bedingung1 etwas enthält, soll es hinten an den String strBEDINGUNG angehängt werden? Wenn alle Bedingungen durch sind, enthält der String strBEDINGUNG alle Teilstrings (wenn vorhanden)?

Bild

Betrifft: Erledigt
von: Wusel
Geschrieben am: 08.06.2015 18:50:10
Hallo nochmal,
ich habe es eingesehen, dass ich wohl alles festlegen muss und weil auch die Zeit ein Bisschen drängt habe ich mir jetzt eine Funktion geschrieben, die alle Bedingungen abprüft, sobald eine falsch ist abbricht und mit "False" zurück kommt. Die prüfe ich mit IF-Then ab. Problem gelöst, wenn ich mir auch gewünscht hätte, für sowas eine "Standard"-Funktion zu nutzen :)
Danke nochmal für Deine Zeit und Mühe Klexy. Im Endeffekt hast Du mich auf den richtigen Weg gebracht :)
Grüße
Wusel

Bild

Betrifft: AW: Erledigt
von: Klexy
Geschrieben am: 10.06.2015 12:50:50
Sobald etwas Standard ist, hat sich die Wirklichkeit längst weiterentwickelt, die blöde Sau!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "if dynamisch? SUMMEWENNS? Suche Rat"