重写多个嵌套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

TRUE是WAHR并且FALSE是FALSCH。
— 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.