Umschreiben einer zu tiefen Formel aus mehreren verschachtelten IFs

17

Ich habe eine einfache Formel geschrieben, um den Wert einer Zelle zu überprüfen. Leider ist die Formel für meine Excel 2007-Version zu lang. Der Fehler ist:

German: Die angegebene Formel kann nicht eingegeben werden, da sie mehr als 64 Verschachtelungsebenen verwendet.

Deutsch: Die angegebene Formel kann nicht eingegeben werden, da mehr Verschachtelungsebenen verwendet werden, als im aktuellen Dateiformat zulässig sind

Irgendeine Idee, wie man die Formel verkürzt?

"WENN" bedeutet auf Deutsch "IF".

   =WENN(N7>=100000000;0;
    WENN(N7>=99000000;1;
    WENN(N7>=98000000;2;
    WENN(N7>=97000000;3;
    WENN(N7>=96000000;4;
    WENN(N7>=95000000;5;
    WENN(N7>=94000000;6;
    WENN(N7>=93000000;7;
    WENN(N7>=92000000;8;
    WENN(N7>=91000000;9;
    WENN(N7>=90000000;10;
    WENN(N7>=89000000;11;
    WENN(N7>=88000000;12;
    WENN(N7>=87000000;13;
    WENN(N7>=86000000;14;
    WENN(N7>=85000000;15;
    WENN(N7>=84000000;16;
    WENN(N7>=83000000;17;
    WENN(N7>=82000000;18;
    WENN(N7>=81000000;19;
    WENN(N7>=80000000;20;
    WENN(N7>=79000000;21;
    WENN(N7>=78000000;22;
    WENN(N7>=77000000;23;
    WENN(N7>=76000000;24;
    WENN(N7>=75000000;25;
    WENN(N7>=74000000;26;
    WENN(N7>=73000000;27;
    WENN(N7>=72000000;28;
    WENN(N7>=71000000;29;
    WENN(N7>=70000000;30;
    WENN(N7>=69000000;31;
    WENN(N7>=68000000;32;
    WENN(N7>=67000000;33;
    WENN(N7>=66000000;34;
    WENN(N7>=65000000;35;
    WENN(N7>=64000000;36;
    WENN(N7>=63000000;37;
    WENN(N7>=62000000;38;
    WENN(N7>=61000000;39;
    WENN(N7>=60000000;40;
    WENN(N7>=59000000;41;
    WENN(N7>=58000000;42;
    WENN(N7>=57000000;43;
    WENN(N7>=56000000;44;
    WENN(N7>=55000000;45;
    WENN(N7>=54000000;46;
    WENN(N7>=53000000;47;
    WENN(N7>=52000000;48;
    WENN(N7>=51000000;49;
    WENN(N7>=50000000;50;
    WENN(N7>=49000000;51;
    WENN(N7>=48000000;52;
    WENN(N7>=47000000;53;
    WENN(N7>=46000000;54;
    WENN(N7>=45000000;55;
    WENN(N7>=44000000;56;
    WENN(N7>=43000000;57;
    WENN(N7>=42000000;58;
    WENN(N7>=41000000;59;
    WENN(N7>=40000000;60;
    WENN(N7>=39000000;61;
    WENN(N7>=38000000;62;
    WENN(N7>=37000000;63;
    WENN(N7>=36000000;64;
    WENN(N7>=35000000;65;
    WENN(N7>=34000000;66;
    WENN(N7>=33000000;67;
    WENN(N7>=32000000;68;
    WENN(N7>=31000000;69;
    WENN(N7>=30000000;70;
    WENN(N7>=29000000;71;
    WENN(N7>=28000000;72;
    WENN(N7>=27000000;73;
    WENN(N7>=26000000;74;
    WENN(N7>=25000000;75;
    WENN(N7>=24000000;76;
    WENN(N7>=23000000;77;
    WENN(N7>=22000000;78;
    WENN(N7>=21000000;79;
    WENN(N7>=20000000;80;
    WENN(N7>=19000000;81;
    WENN(N7>=18000000;82;
    WENN(N7>=17000000;83;
    WENN(N7>=16000000;84;
    WENN(N7>=15000000;85;
    WENN(N7>=14000000;86;
    WENN(N7>=13000000;87;
    WENN(N7>=12000000;88;
    WENN(N7>=11000000;89;
    WENN(N7>=10000000;90;
    WENN(N7>=9000000;91;
    WENN(N7>=8000000;92;
    WENN(N7>=7000000;93;
    WENN(N7>=6000000;94;
    WENN(N7>=5000000;95;
    WENN(N7>=4000000;96;
    WENN(N7>=3000000;97;
    WENN(N7>=2000000;98;
    WENN(N7>=1000000;99;
    WENN(N7>=500000;100;0)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
evavienna
quelle
13
Ihre Frage wäre viel lesbarer, wenn Sie die Formel strukturiert hätten (dazu steht eine Bearbeitung aus) - und, meiner Meinung nach, wichtiger, wenn Sie in Worten beschreiben, was Sie erreichen wollen. Vielleicht haben wir hier ein xy-Problem .
mpy
1
letzte Zeile erinnert mich an einen Witz
kmdreko

Antworten:

65

Ich denke, die Formel ist äquivalent zu:

=IF(OR(N7>=100000000,N7<500000),0,100-INT(N7/1000000))

Jetzt, da Kevin die Formel neu formatiert hat, kann ich ziemlich deutlich sehen, dass die Formel in allen Fällen korrekt ist.

Dank des Kommentars des Fragestellers kann ich feststellen, dass die äquivalente deutsche Formel lautet:

=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
AFH
quelle
Funktioniert super !!! thx - ich habe de.excel-translator.de/translator benutzt , um die Formel zu übersetzen. Auf Deutsch sieht es aus wie=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna
Verwenden Sie VBA und erstellen Sie eine benutzerdefinierte Funktion.
user1750995
Ein bisschen traurig, dass dies die allgemeine Frage überspringt und nur für dieses spezielle Beispiel löst.
Rohr
Die Formel scheint korrekt zu sein, aber die eigentliche Antwort lautet, dass dies in einer Nachschlagetabelle erfolgen sollte, wie es Tevlyn sagt. Der Versuch, dies mit einer If-Anweisung zu tun, ist eine schlechte Praxis.
WhatEvil
5
@pipe, @WhatEvil - Der Fragesteller wollte die Größe seiner IFAussage reduzieren , und aufgrund der Struktur seiner Daten gab ich die (einem Mathematiker) naheliegende Antwort und bin völlig anderer Meinung, dass es sich in irgendeiner Weise um eine inkorrekte oder schlechte Praxis handelt . Für eine weniger lineare Funktion wäre natürlich eine Nachschlagetabelle erforderlich, diese Daten sind jedoch zu umfangreich und können kaum als optimal angesehen werden: Eine direkte Berechnung ist immer besser als eine Nachschlagetabelle, wenn letztere vermieden werden kann.
AFH
21

Legen Sie alle Schwellenwerte in einem Bereich auf einem Arbeitsblatt ab und verwenden Sie eine Suchformel mit einer ungefähren Übereinstimmung.

Sortieren Sie Ihre Daten aufsteigend nach dem Wert der Nachschlagespalte. Die Suchspalte muss die erste Spalte der Suchtabelle sein, wenn Sie VLookup verwenden möchten. Wenn Sie gerne eine Index / Match-Kombination verwenden, kann sich die Nachschlagespalte an einer beliebigen Stelle in der Tabelle befinden.

Der folgende Screenshot enthält eine Beispielsuchtabelle in den Zellen A1 bis B6. Die Tabelle ist aufsteigend nach den Werten in Spalte A sortiert. Dies ist wichtig . Wenn die Tabelle nicht aufsteigend sortiert ist, funktioniert die folgende Formel nicht.

Der Wert in Zelle E2 entspricht keinem der Werte in Spalte A. Die Vlookup-Formel ermittelt den nächstkleineren Wert (dh 50) und gibt das Ergebnis aus Spalte 2 der Nachschlagetabelle für diese ungefähre Übereinstimmung zurück. Beachten Sie, dass für eine ungefähre Übereinstimmung der vierte Parameter von VLookup "TRUE" oder 1 sein muss.

Hier ist die Formel:

=VLOOKUP(E2,$A$1:$B$6,2,TRUE)

Und der Screenshot:

Bildbeschreibung hier eingeben

Der deutsche Name für Vlookup ist SVerweis (glaube ich), und Sie müssen Kommas in deutschem Excel durch Semikolons ersetzen. Ich weiß nicht, was "WAHR" in deutschem Excel ist, aber Sie können eine 1 für WAHR und eine 0 für FALSCH verwenden.

=SVerweis(E2;$A$1:$B$6;2;1)

Hoffentlich klappt's !!

Teylyn
quelle
Ich hoffe auch! Lassen Sie mich das durchlesen - es sieht nach viel Arbeit für mich aus. thx - ich lass es dich wissen, wenn ich es zum
Laufen
Das Ausfüllen einer Zahlentabelle ist nicht sehr aufwendig, wenn die Zahlen gleichmäßig verteilt sind. Geben Sie die ersten beiden Zahlen ein, wählen Sie sie aus und ziehen Sie den Füllpunkt.
Teylyn
TRUEist WAHRund FALSEist FALSCH.
IQV
Und warum eine Gegenstimme?
Teylyn