重写多个嵌套IF的公式,该公式太深


17

我写了一个简单的公式来检查单元格的值。不幸的是,该公式对于我的Excel 2007版本来说太长了。错误是:

德语:Angegebene Formel kann nicht eingegeben werden,da sie mehr als 64 Verschachtelungsebenen verwendet。

英文:无法输入指定的公式,因为它使用的嵌套级别超过当前文件格式所允许的嵌套级别

知道如何缩短公式吗?

“ WENN”在德语中意为“ 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)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

13
如果您已经构造了公式,那么您的问题就更容易理解了(有关此问题的悬而未决的编辑)-而且,恕我直言,更重要的是,如果您用文字描述想要完成的话。也许我们这里有一个xy问题
mpy

1
最后一行让我想起一个玩笑
kmdreko '18

Answers:


65

我认为公式等于:

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

现在,凯文重新格式化了公式,我可以很清楚地看到该公式在所有情况下都是正确的。

感谢提问者的评论,我可以说等效的德国公式为:

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

很棒!!!thx-我用de.excel-translator.de/translator来翻译公式。在德国,它看起来像=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna '18

使用VBA并创建用户定义的函数。
user1750995 '18

有点可悲的是,这跳过了一般性的问题,仅解决了此特定示例。
管道

公式似乎是正确的,但真正的答案是,这应该像tevlyn所说的那样在查找表中完成。尝试使用If语句执行此操作是不好的做法。
WhatEvil

5
@pipe,@WhatEvil-发问者想要减小IF陈述的大小,并且由于他的数据的结构,我给(给数学家)明显的答案,我完全不同意这在任何意义上都不正确或不正确的做法。显然,线性函数较少时需要查找表,但是对于这些数据而言,它是过大的,几乎不能认为是最佳的:直接计算总是比可以避免后者的查找好。
AFH

21

将所有阈值放在工作表上的范围内,并使用近似匹配的查找公式。

按查询列的值升序对数据进行排序。如果要使用VLookup,则查找列必须是查找表的第一列。如果您乐意使用“索引/匹配”组合,则查找列可以在表中的任何位置。

下面的屏幕快照在单元格A1至B6中有一个示例查找表。该表按A列中的值升序排列。这很重要。如果表未按升序排序,则以下公式将不起作用。

E2单元格中的值与A列中的任何值都不完全匹配。Vlookup公式将找到下一个最小值(即50),并将针对此近似匹配从查找表的第2列返回结果。请注意,对于近似匹配,VLookup的第四个参数必须为“ TRUE”或1。

这是公式:

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

和截图:

在此处输入图片说明

Vlookup的德语名称是SVerweis(我认为),并且您需要在German Excel中用分号替换逗号。我不知道德语Excel中的“ TRUE”是什么,但是可以将1表示为TRUE,将0表示为FALSE。

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

霍芬蒂克·克拉普特(Hoffentlich Klappt)!


太棒了!让我仔细阅读一下-对我来说似乎是很多工作。thx-我让您知道我是否能够使它工作:)
evavienna '18

如果数字间隔均匀,则填写数字表的工作量并不大。输入前两个数字,选择它们并拖动填充手柄。
teylyn '18

TRUEWAHR并且FALSEFALSCH
IQV

为什么要投票?
teylyn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.