Przepisywanie formuły wielu zagnieżdżonych IF, która jest zbyt głęboka

17

Napisałem prostą formułę, aby sprawdzić wartość komórki. Niestety formuła jest za długa dla mojej wersji programu Excel 2007. Błąd jest następujący:

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

Polski: Nie można wprowadzić określonej formuły, ponieważ używa ona więcej poziomów zagnieżdżenia niż jest to dozwolone w bieżącym formacie pliku

Masz pomysł, jak skrócić formułę?

„WENN” oznacza po niemiecku „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
źródło
13
Twoje pytanie byłoby o wiele bardziej czytelne, gdybyś sformułował formułę (oczekuje na to edycja) - i, co ważniejsze, jeśli opisujesz słowami, co chcesz osiągnąć. Może mamy tutaj problem xy .
mpy
1
ostatnia linia przypomina mi żart
kmdreko

Odpowiedzi:

65

Myślę, że formuła jest równoważna z:

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

Teraz, gdy Kevin sformatował formułę, widzę dość wyraźnie, że formuła jest poprawna we wszystkich przypadkach.

Dzięki komentarzowi pytającego mogę stwierdzić, że równoważna niemiecka formuła to:

=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
AFH
źródło
Działa niesamowicie !!! thx - użyłem de.excel-translator.de/translator do przetłumaczenia formuły. Po niemiecku wygląda to=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna
Użyj VBA i utwórz funkcję zdefiniowaną przez użytkownika.
user1750995
Trochę smutne, że pomija to ogólne pytanie i rozwiązuje tylko ten konkretny przykład.
rura
Formuła wydaje się poprawna, ale prawdziwa odpowiedź brzmi: należy to zrobić w tabeli odnośników, jak mówi tevlyn. Próba zrobienia tego za pomocą instrukcji If jest złą praktyką.
WhatEvil
5
@pipe, @WhatEvil - Pytający chciał zmniejszyć rozmiar swojego IFoświadczenia, a ze względu na strukturę jego danych udzieliłem (matematykowi) oczywistej odpowiedzi i całkowicie nie zgadzam się z tym, że jest to w jakikolwiek sposób nieprawidłowa lub zła praktyka . Oczywiście potrzebna byłaby tabela przeglądowa dla mniej liniowej funkcji, ale dla tych danych jest ona nadmierna i nie można jej uznać za optymalną: bezpośrednie obliczenie jest zawsze lepsze niż przegląd, gdy można tego uniknąć.
AFH,
21

Umieść wszystkie wartości progowe w zakresie w arkuszu i użyj formuły wyszukiwania z przybliżonym dopasowaniem.

Posortuj dane rosnąco według wartości kolumny odnośnika. Kolumna odnośników musi być pierwszą kolumną tabeli odnośników, jeśli chcesz użyć VLookup. Jeśli z przyjemnością użyjesz kombinacji Indeks / Dopasowanie, kolumna odnośnika może znajdować się w dowolnym miejscu w tabeli.

Poniższy zrzut ekranu zawiera przykładową tabelę wyszukiwania w komórkach A1 do B6. Tabela jest posortowana rosnąco według wartości z kolumny A. Jest to ważne . Jeśli tabela nie zostanie posortowana rosnąco, to następująca formuła nie będzie działać.

Wartość w komórce E2 nie jest dokładnym dopasowaniem dla żadnej z wartości w kolumnie A. Formuła Vlookup znajdzie następną najmniejszą wartość (tj. 50) i zwróci wynik z kolumny 2 tabeli odnośników dla tego przybliżonego dopasowania. Zauważ, że dla przybliżonego dopasowania czwartym parametrem VLookup musi być „PRAWDA” lub 1.

Oto wzór:

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

I zrzut ekranu:

wprowadź opis zdjęcia tutaj

Niemiecka nazwa Vlookup to SVerweis (myślę) i trzeba zastąpić przecinki średnikami w niemieckim Excelu. Nie wiem, co to jest „PRAWDA” w niemieckim Excelu, ale możesz użyć 1 dla PRAWDA i 0 dla FAŁSZ.

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

Hoffentlich klappt's !!

teylyn
źródło
Ich hoffe auch! Pozwól, że przeczytam to - wygląda na to dla mnie dużo pracy. dzięki
daję
Wypełnianie tabeli liczb nie jest dużym nakładem pracy, jeśli liczby są równomiernie rozmieszczone. Wprowadź dwie pierwsze cyfry, wybierz je i przeciągnij uchwyt wypełniania.
teylyn
TRUEjest WAHRi FALSEjest FALSCH.
IQV
I dlaczego głosowanie negatywne?
teylyn