Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Indirekte Formel Auswahl

Forumthread: Indirekte Formel Auswahl

Indirekte Formel Auswahl
15.12.2024 21:26:43
Excelix
Hallo Profis,

kennt jemand eine Möglichkeit eine Formel indirekt anzusprechen ?

Folgendes (etwas vereinfachtes Beispiel): Ich habe eine große Anzahl von Rundungsregeln. Die Rundungsregeln habe ich über eigene "Functions" benutzerspezifisch definiert und dabei durchnummeriert, z. B. "RundeMal_"[Zähler] (mit Zähler 01-99). Die Formeln haben die üblichen Argumente Soweit alles klar.

Nun möchte ich aber ohne Hilfszellen / Spalten etc. und ohne 100 einzelne wenn dann-Regeln eine Formel "indirekt" ansprechen. Also z. B. benutze die Formel "RundeMal_49"&Argumente, in einem anderen Sachverhalt der nächsten Zelle "RundeMal_75"&Argumente. Den Zähler kann ich natürlich vorher zeilenspezifisch je Sachverhalt ermitteln. Mit Kombinationen aus Indirekt("RundeMal_" & Zähler) komme ich nicht weiter - vermutlich stehe ich aber auf dem Schlauch.

Gruß aus Gallien
Anzeige

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Indirekte Formel Auswahl
15.12.2024 21:33:01
Onur
Warum hast du nicht statt 99 verschiedenen eine einzige Function "RundeMal" mit dem Parameter Nr? Also
=RundeMal(01) bis RundeMal(99)?
AW: Indirekte Formel Auswahl
16.12.2024 00:23:01
{Boris}
Hi,

theoretisch geht das mit der alten Excel4Macrofunktion AUSWERTEN (ist über Namen ansprechbar) in Kombination mit einer als Text vorliegenden (verketteten) Formel.
Zeig doch mal bitte ein Beispiel - dann bau ich es mal ein und man kann sehen, ob es überhaupt wirklich praktikabel ist.
Und bitte keine 99 Functions - 3 Stück genügen.

VG, Boris
Anzeige
AW: Indirekte Formel Auswahl
16.12.2024 00:35:18
{Boris}
Hi,

so kann das dann aussehen.

Userbild

Wichtig ist im Prinzip nur die fertige Formel in TEXTform - hier in E2 und E3.
Den Namen Berechnen musst Du so definieren wie angegeben.
Und das Ergebnis der Formeln in TEXTform erhältst Du mit exakt dieser Schreibweise (Formel aus C6):

=WAHL(1;Berechnen;E2)

Die einzige Variable in der Formel ist E2 - alles andere muss genau so lauten.
Wenn Du das Ergebnis aus Tabelle21D10 haben möchtest, dann:

=WAHL(1;Berechnen;Tabelle2!D10)

VG, Boris
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 20:50:39
Excelix
Danke & "CHAPEAU !!!", das ist es. Diesmal war das Lösungswort auf dem Pilgerpfad gen Osten nicht "Sesam öffne Dich", sondern "Auswerten / Eval".

Bin echt beeindruckt, das hast Du in 12 Min. gebastelt ?
AW: Indirekte Formel Auswahl
16.12.2024 14:23:27
daniel
Hi

Wäre es dann nicht sinnvollerer du schreibst nur ein RundeMal, welches dann aber intern ale 99 Varianten enthält und du übergibst die Variant, die verwendet werden soll, als weiteren Parameter?
Dieser kann dann beliebig berechnet werden.

Also nicht:

Function RundeMal01(a;b)

... Code01
End function

Function RundeMal02(a;b)
... Code02
End function

Function RundeMal03(a;b)
... Code03
End function


Sondern:

Function RundeMal(x;a;b)

Select case x
Case 1
Code01
Case 2
Code02
Case 3
Code03
Case Else
End Select
End function


Gruß Daniel


Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 20:46:28
Excelix
Danke für den konstruktiven Vorschlag, sieht natürlich deutlich professioneller aus.
Meine Sorge ist, dass ich die Funktionalität in einer grossen Anzahl von Zellen (40 Jahre x 500+ Zeilen als rd. 20.000 Zellen) benötige. Damit würde ich 20.000 x 100 Abfragen durchlaufen, obwohl ich im voraus schon festlegen kann, welche Formel ("x") gilt. Durch das direkte "Anspringen" versuche ich den "Auswahllauf" aus Performance-Gründen zu vermeiden . Das könnte meinen "Atari" ins Grab bringen.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 20:53:17
Onur
Erkläre doch bitte mal, WARUM du glaubst, dass du 99 verschiedene benutzerdefinierte Funktionen brauchst.
Ich glaube nämlich, dass du irgendwo einen Denkfehler hast und es viel zu kompliziert machst.
AW: Indirekte Formel Auswahl
17.12.2024 21:53:39
Excelix
Um bei dem Beispiel "Runden" zu bleiben:
Nimm an, Du willst einen Maschinenpark überwachen. Es handelt sich um rd. 500 Geräte, z. t. mechanisch, optisch, mit/ohne Werkzeuge, thermisch, manche mit Betriebsmitteleinsatz (z. B. Öl oder Schmiermittel), vielleicht aber auch nur ein Auto oder Drucker. Hinzu kommen kaufmännische Aspekte wie "Restwert" oder "Steuerwert" bzw. "Wiederbeschaffungskosten", aber auch Betriebskosten. Tlw. können einige der Maschinen vom gleichen Typ sein, aber sie unterscheiden sich ggf. in Baujahr oder Anschaffungsjahr oder Betriebszeit. Es können auch jederzeit Maschinen neu angeschafft werden oder aber abgehen.

Bei der Beurteilung bzw. Analyse habe ich erstmal 40 Zeiträume (in diesem Fall 40 Jahre) vorgesehen. Allerdings können für jeden Zeitraum unterschiedliche Bedingungen (z. B. Umweltschutz & Ölverlust, Bedienpersonal & Sicherheit oder kaufmännische Aspekte Steuersatz und interner Zinsfuss etc.) gelten.

Natürlich gelten bei der Analyse unterschiedliche Formeln für die Bewertung je Maschinentyp. Im Maximalfall bin ich derzeit bei rd. 30 Argumenten/Maschine, allerdings können diese im Datentyp je Argument_01 bis _30 variieren, z.B. benötige ich bei der Maschine_227 eine Jahreszahl als Argument_02, bei einer anderen Maschine_439 steht als Argument_02 vielleicht eine Gleitkommazahl. Wenn ich die Argumente nicht auf 30 begrenze und als variant definiere, benötige ich deutlich mehr Argumente und die Wartung wird unübersichtlich. Die Formellogik selbst ist tlw. simpel, tlw. aber auch komplex.

Bisher habe ich mich für die Lösung entschieden, die Argumente als variant zu definieren und über formelspezifische Definitionen selektiv zu nutzen. Im Prinzip funktioniert das auch ganz gut - aber langsam komme ich an die "8.192 Zeichen"- Schranke für Formeln (schäm - passiert mir das erste Mal), und auch daher der Gedanke die "wenn" durch selektiv angesprungene Formeln zu ersetzen.

Bessere konstruktive Vorschläge natürlich immer willkommen.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 22:15:19
BoskoBiati2
Hi,

jemand der an die 8192-Zeichen-Grenze stößt, macht definitiv was falsch. Das habe ich vor Jahren schon mal jemand bewiesen!
Es würde sehr helfen, wenn Du mal Butter bei die Fische gibst, spricheine Mustertabelle zeigst, mit den Monsterformeln.

Gruß

Edgar
AW: Indirekte Formel Auswahl
17.12.2024 22:29:21
Onur
Und das auch noch mit Excel365....
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 22:41:56
Excelix
Ich denke Deine Antwort hilft sicher vielen weiter ...
AW: Indirekte Formel Auswahl
17.12.2024 22:54:18
Onur
Was soll eigentlich
WENN(UND($AB25=4);

???
Wozu das UND ? Warum nicht einfach
WENN($AB25=4;

Wozu hast du so viele verschachtelte WENN? Kennst du WENNS noch nicht ?
"Excel gut"? Bist du sicher ?
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 23:14:24
Onur
Statt z.B. DAS
=WENN(A1=0;"A";WENN(A1=1;"B";WENN(A1=2;"C";WENN(A1=3;"D";"E"))))

kannst du das schreiben:
=WENNS(A1=0;"A";A1=1;"B";A1=2;"C";A1=3;"D";WAHR;"E")
AW: Indirekte Formel Auswahl
17.12.2024 23:15:04
Excelix
Das "Und" ist ebenfalls historisch gewachsen, war mir zu Beginn nicht sicher ob ich ausser der Formel-Nr. noch andere Argumente benötige (z. B. bei Verbot von Technologien, Herstellen oder deren Länder, Sanction party list). Benötige das im Moment tatsächlich nicht - aber die Ersparnis von 5 Zeichen (bzw. 16*5 = 80) raubt mir nicht den Schlaf.

Mit "wenns" statt "wenn" in der Startzeile bewegen wir uns in der gleichen Grössenordnung.

Die anderen Wenn(Und()) dienen der Formelauswahl.

Danke aber für den Hinweis: Werde meine Excel-Kenntnisse im Profil auf "Anfänger" korrigieren.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 23:25:05
Onur
Und das
VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)

kommt 12x vor - wenn du es in eine Let-Variable packen würdest, wären es 11x40 Zeichen=440 Zeichen weniger. Und es geht so weiter....
AW: Indirekte Formel Auswahl
17.12.2024 23:37:29
Onur
INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25
kommt 6x vor. 5x75=375 Zeichen.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 23:57:49
Onur
Parameter!$S$2:$BF$2

kommt 13x vor - 12x20=240 Zeichen
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))

kommt 27x vor - 26x47=1222 Zeichen
usw usw
AW: Indirekte Formel Auswahl
17.12.2024 23:36:58
BoskoBiati2
Hi,

in dem Fall eher so:

=WAHL(a1+1;"A";"B";"C";"D";"E")

=ZEICHEN(A1+64)


Gruß

Edgar
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 23:42:45
Onur
DAS hat ja nix mit seinem Fall zu tun, da seine Zahlen nicht von 1 bis 5 gehen, das war doch nur ein Beispiel von mir, wie mann WENNS einsetzen könnte.
Ich hätte auch 1;3;7;11 und "A"; "Z"; "T" und "QWERTZ" nehmen können.
AW: Indirekte Formel Auswahl
17.12.2024 22:38:16
Excelix
Naja - der Gedanke, dass das mit 8.192 Zeichen sicher nicht besonders gut ist, war ja ein Anlass für die Frage.

Hier mal ein Beispiel für die Formeln:
Kurze Erklärung: Ganz oben stehen Grundbedingungen für die Anwendung , ob die nachfolgenden Formeln angewandt werden sollen. Falls die Formeln angewandt werden, steht in "AB25=x") die Definition der Formel-Nr. die verwendet werden soll.

Achtung: Die Formellogik ist natürlich je Formelnummer anders. Auch die Datentypen der angesprochenen Argumente einer Spalte kann unterschiedlich sein.
Das Ganze soll funktionieren, wenn die Formel über 40 Spalten und rd. 500 Zeilen kopiert wird.
_______________________________________________________________________________________________________________________________________________________________________________________
=WENN($W25>"OK";"";WENN($AB25="?";"?";WENN(ODER($M25>WERT("31.12."&EF$27);$N25
RUNDEN(WENN($AF25="C";-1;1)*
WENN(UND($AB25=0);0;
WENN(UND($AB25=1);
WENN(JAHR($M25)=EF$27;$T25/12*$AI25;
WENN(JAHR($N25)=EF$27;$T25*((1+$K25)^((EF$27-JAHR($M25))))/12*$AJ25;
$T25*(1+$K25)^(EF$27-JAHR($M25))));
WENN(UND($AB25=2);
WENN(JAHR($M25)=EF$27;$AI25*($T25*(1+$K25)^(EF$27-JAHR($M25)));
WENN(JAHR($N25)=EF$27;$AJ25*($T25*(1+$K25)^(EF$27-JAHR($M25)));
($T25*(1+$K25)^(EF$27-JAHR($M25)))));
WENN(UND($AB25=3);
WENN(JAHR($M25)=JAHR($N25);0;
WENN(JAHR($M25)=EF$27;-WENN(ANZAHL($S25)=0;$J25;($J25*(1+$K25)^BRTEILJAHRE($M25;$S25;2))))+
WENN(JAHR($S25)=EF$27;$AI25*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25;
WENN(JAHR($N25)=EF$27;$AJ25*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25;
INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25)));
WENN(UND($AB25=4);
WENN(JAHR($M25)=EF$27;$T25*$AI25;
WENN(JAHR($N25)=EF$27;($T25*(1+$K25)^(EF$27-JAHR($M25)))*$AJ25;
($T25*(1+$K25)^(EF$27-JAHR($M25)))));
WENN(UND($AB25=5);WENN(UND(JAHR($N25)=EF$27);$Q25;0);
WENN(UND($AB25=6);WENN(UND(JAHR($M25)=EF$27);$T25;0);
WENN(UND($AB25=7);WENN(JAHR($M25)=EF$27;$T25/12*$AI25-$AI25*INDEX(Personalisierung!$Q$114:$Q$132;VERGLEICH($P25;Personalisierung!$A$114:$A$132;0))/12;
WENN(JAHR($N25)=EF$27;$T25*((1+$K25)^(EF$27-JAHR($M25)))/12*$AJ25-$AJ25*INDEX(Personalisierung!$Q$114:$Q$132;VERGLEICH($P25;Personalisierung!$A$114:$A$132;0))/12;
$T25*((1+$K25)^(EF$27-JAHR($M25)))-INDEX(Personalisierung!$Q$114:$Q$132;VERGLEICH($P25;Personalisierung!$A$114:$A$132;0))));
WENN(UND($AB25=8);"nicht ausgeprägt";
WENN(UND($AB25=9);WENN(JAHR($N25)=EF$27;$S25;0)*WENN(BRTEILJAHRE($M25;$N25;1)$P25;1;0);
WENN(UND($AB25=10);
WENN(JAHR($M25)=EF$27;$AI25*NETTOARBEITSTAGE(WERT("01.01."&JAHR(EF$27));WERT("31.12."&JAHR(EF$27)))*(MIN($J25;INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)))*INDEX(Parameter!$S$162:$BF$162;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1))+MAX($J25-INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1));0)*INDEX(Parameter!$S$163:$BF$163;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)));
WENN(JAHR($N25)=EF$27;$AJ25*NETTOARBEITSTAGE(WERT("01.01."&JAHR(EF$27));WERT("31.12."&JAHR(EF$27)))*(MIN($J25;INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)))*INDEX(Parameter!$S$162:$BF$162;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1))+MAX($J25-INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1));0)*INDEX(Parameter!$S$163:$BF$163;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)));
NETTOARBEITSTAGE(WERT("01.01."&JAHR(EF$27));WERT("31.12."&JAHR(EF$27)))*(MIN($J25;INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)))*INDEX(Parameter!$S$162:$BF$162;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1))+MAX($J25-INDEX(Parameter!$S$160:$BF$160;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1));0)*INDEX(Parameter!$S$163:$BF$163;VERGLEICH(EF$27;Parameter!$S$2:$BF$2;1)))));
WENN(UND($AB25=11);
WENN(JAHR($M25)=EF$27;$T25*$AI25;
WENN(JAHR($N25)=EF$27;($T25*((1+$K25)^((EF$27-JAHR($M25))-1)))*(1-BRTEILJAHRE($N25;WERT("31.12."&JAHR($N25));1));
$T25*((1+$K25)^((EF$27-JAHR($M25))))));
WENN(UND($AB25=12);
WENN(JAHR($M25)=EF$27;WENN($P25="endfällig";0; $J25*$K25*$AI25);
WENN(JAHR($N25)=EF$27;WENN($P25="endfällig";$J25*((1+$K25)^BRTEILJAHRE($M25;$N25;4));$J25*$K25*$AJ25);
WENN($P25="endfällig";0; $J25*$K25)));
WENN(UND($AB25=13);
WENN(JAHR($M25)=JAHR($N25);$J25*$R25-KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;$P25;WENN(RECHTS($L25;1)="A";1;0));
WENN(JAHR($M25)=EF$27;$J25*$R25
-WENN(JAHR($S25)=EF$27; KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&JAHR($S25));4);0)*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));WENN(RECHTS($L25;1)="A";1;0));0);
WENN(JAHR($S25)=EF$27; KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&JAHR($S25));4);0)*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));WENN(RECHTS($L25;1)="A";1;0));
WENN(JAHR($N25)=EF$27; -KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&JAHR($N25)-1);4)
*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));0)+1;$P25;WENN(RECHTS($L25;1)="A";1;0))
-WENN(JAHR($S25)=EF$27;KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&JAHR($S25));4);0)*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));WENN(RECHTS($L25;1)="A";1;0));0);
-KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&EF$27-1);4)*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));0)+1;AUFRUNDEN(BRTEILJAHRE($S25;WERT("31.12."&EF$27-1);4)*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));0)+1+INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));WENN(RECHTS($L25;1)="A";1;0))))));
WENN(UND($AB25=14);
WENN(JAHR($M25)=JAHR($N25);$J25*$R25+KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;$P25;WENN(RECHTS($L25;1)="A";1;0));WENN(JAHR($M25)=EF$27;$J25*$R25;0)
+WENN(JAHR($S25)=EF$27;$AI25*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25+KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;1;$AI25*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));WENN(RECHTS($L25;1)="A";1;0));
WENN(JAHR($N25)=EF$27;$AJ25*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25+KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;$P25-$AJ25*INDEX(Master!$L$3:$R$3;
VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;WENN(RECHTS($L25;1)="A";1;0));
INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))*$Q25+KUMZINSZ($K25/INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0));$P25;$J25;MAX(1;(EF$27-JAHR($S25)+$AI25-1)*
INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))+1);MIN($P25;(EF$27-JAHR($S25)+$AI25-0)*INDEX(Master!$L$3:$R$3;VERGLEICH(LINKS($L25;LÄNGE($L25)-4);Periode;0))+0);WENN(RECHTS($L25;1)="A";
1;0)))));
WENN(UND($AB25=15);
WENN(JAHR($M25)=JAHR($N25);$J25*$R25+WENN(JAHR($S25)=EF$27;$T25*$AI25;0);
WENN(JAHR($M25)=EF$27;$J25*$R25+WENN(JAHR($S25)=EF$27;-$T25*$AI25;0);
WENN(JAHR($N25)=EF$27;WENN(JAHR($S25)=EF$27;$T25*$AH25;0);
$T25)));
WENN(UND($AB25=16);
WENN(JAHR($M25)=JAHR($N25);$Q25-$J25*(1-$R25);
WENN(JAHR($M25)=EF$27;$J25*(1-$R25);
WENN(JAHR($N25)=EF$27;$Q25-$J25;0)));
)))))))))))))))));2))))
_______________________________________________________________________________________________________________________________________________________________________________________

Natürlich lassen sich hier nach diesem Prinzip noch "Teile optimieren". Aber ein besseres Konzept wäre natürlich willkommen.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 22:44:39
Onur
Und was hat DAS nun wieder mit den benutzerdefinierten Funktionen zu tun?
Benutzt du etwa diese Monsterformeln UND benutzerdefinierten Funktionen mit bis zu 30 Parametern ?
AW: Indirekte Formel Auswahl
17.12.2024 22:54:36
Excelix
Nein, um die Monsterformel aufzulösen will ich Sie ja in in dieser Bewertungsperspektive (es gibt noch weitere) 16 Einzelformeln (können noch mehr werden) auflösen, die ich dann selektiv anspringen kann. Die Monsterformel ist natürlich nicht in einem Guss entstanden, sondern historisch gewachsen.
Bei den Benutzerdefinierten Funktionen sehe ich im Moment keine (praktikable) andere Lösung, als standardisiert 30 Parameter zu übergeben, dann aber selektiv je Formel ein- oder eben nicht einzusetzen.
Anzeige
AW: Indirekte Formel Auswahl
17.12.2024 23:31:50
daniel
Man kann die Parameter Optional machen, dann muss man sie nicht eingeben.

Man kann ein ParamArray für die Übergabe verwenden.
Da kannst du dann 1-30 Parameter Werte übergeben, die in VBA in einem Array stehen.

Gruß Daniel
AW: Indirekte Formel Auswahl
15.12.2024 22:15:05
Excelix
Danke für die Antwort.

Aber ich denke, dann würde ich das Problem mit den wenn-Abfragen nur in die Functions verlagern. Da die Regeln weder identisch sind noch immer die gleiche Anzahl an Argumenten haben, würde das eine Wartung ziemlich komplex machen.
Aber vielleicht habe ich die Deine Antwort auch nicht richtig verstanden - ich lerne gerne dazu.

Gruß
Excelix
Anzeige
AW: Indirekte Formel Auswahl
15.12.2024 22:24:23
Onur
Das Problem mit den Argumenten hättest du auch in deiner Wunschlösung. Wie genau würdest du denn überhaupt die Argumente übergeben wollen, wenn es mit INDIREKT geklappt hätte ?
Wie du sagst, sind es ja jedes Mal verschiedene Anzahl von Argumenten. Da ist doch völlig sinnlos, sowas indirekt machen zu wollen.
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18