Reescribiendo una fórmula de múltiples IF anidados que es demasiado profunda


17

Escribí una fórmula simple para verificar el valor de una celda. Desafortunadamente, la fórmula es demasiado larga para mi versión de Excel 2007. El error es:

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

Inglés: no se puede ingresar la fórmula especificada porque usa más niveles de anidamiento que los permitidos en el formato de archivo actual

¿Alguna idea de cómo acortar la fórmula?

"WENN" significa "SI" en alemán.

   =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)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

13
Su pregunta sería mucho más legible si hubiera estructurado la fórmula (hay una edición pendiente con respecto a esto) y, en mi humilde opinión, más importante, si describe en palabras lo que quiere lograr. Tal vez tenemos un problema xy aquí.
mpy

1
la última línea me recuerda una broma
kmdreko

Respuestas:


65

Creo que la fórmula es equivalente a:

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

Ahora que Kevin ha reformateado la fórmula, puedo ver claramente que la fórmula es correcta en todos los casos.

Gracias al comentario del interrogador, puedo afirmar que la fórmula alemana equivalente es:

=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))

Funciona genial !!! thx: utilicé de.excel-translator.de/translator para traducir la fórmula. En alemán parece=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna el

Use VBA y cree una función definida por el usuario.
user1750995

Un poco triste que esto omita la pregunta general y solo resuelva este ejemplo en particular.
tubería el

La fórmula parece correcta, pero la respuesta real es que esto debe hacerse dentro de una tabla de búsqueda como dice tevlyn. Intentar hacer esto con una declaración If es una mala práctica.
WhatEvil

55
@pipe, @WhatEvil: el interlocutor quería reducir el tamaño de su IFdeclaración y, debido a la estructura de sus datos, le di la respuesta obvia (a un matemático) y estoy totalmente en desacuerdo con que es, en cualquier sentido, una práctica incorrecta o mala. . Obviamente, se necesitaría una tabla de búsqueda para una función menos lineal, pero es excesivo para estos datos y difícilmente puede considerarse óptimo: un cálculo directo siempre es mejor que una búsqueda cuando esta última puede evitarse.
AFH

21

Ponga todos sus valores de umbral en un rango en una hoja de trabajo y use una fórmula de búsqueda con una coincidencia aproximada.

Ordene sus datos de forma ascendente por el valor de la columna de búsqueda. La columna de búsqueda debe ser la primera columna de la tabla de búsqueda si desea usar VLookup. Si está contento de usar un combo de índice / coincidencia, la columna de búsqueda puede estar en cualquier lugar de la tabla.

La siguiente captura de pantalla tiene una tabla de búsqueda de muestra en las celdas A1 a B6. La tabla se ordena ascendente por los valores en la columna A. Esto es importante . Si la tabla no está ordenada ascendente, la siguiente fórmula no funcionará.

El valor en la celda E2 no coincide exactamente con ninguno de los valores de la columna A. La fórmula de Vlookup encontrará el siguiente valor más pequeño (es decir, 50) y devolverá el resultado de la columna 2 de la tabla de búsqueda para esta coincidencia aproximada. Tenga en cuenta que para una coincidencia aproximada, el cuarto parámetro de VLookup debe ser "VERDADERO" o 1.

Aquí está la fórmula:

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

Y la captura de pantalla:

ingrese la descripción de la imagen aquí

El nombre alemán para Vlookup es SVerweis (creo), y debe reemplazar las comas con punto y coma en Excel alemán. No sé qué es "VERDADERO" en Excel alemán, pero puede usar un 1 para VERDADERO y un 0 para FALSO.

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

Hoffentlich klappt's !!


Ich hoffe auch! Permítanme leer esto, me parece mucho trabajo. gracias - te dejo saber si soy capaz de hacerlo funcionar :)
evavienna

Completar la tabla de números no es mucho trabajo si los números están espaciados de manera uniforme. Ingrese los dos primeros números, selecciónelos y arrastre el controlador de relleno.
teylyn

TRUEes WAHRy FALSEes FALSCH.
IQV

¿Y por qué un voto negativo?
teylyn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.