excel中递进函数if函数嵌套问题

如下图,我要表示当B2<=5时,且ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2))<B2时,
C2=ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2))+0.15;
当B2<=5时,且ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2))>=B2时,
C2=ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2));
当B2>5时, 且ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)<B2时
C2=ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)+0.3
当B2>5时,且ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)>=B2时,
C2=ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)
请问 我写的函数 哪里不对?该怎样改?

  函数用法:if(判断真假,真时显示,假时显示),if套用,“真时显示”和“假时显示”的部分可以分别套用if().

  =IF(B2<=5,IF(ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2)<B2,ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2)+0.15,ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2)),IF(ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)<B2,ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)+0.3,ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)))



  上边公式,应该有误,经过 万年金刚钻 的提示我也看到了raundbetween()的缺点,每一个它都会显示不同的数据,所以改进了公式,加了辅助单元格,就只显示一回,randbetween()

  E2公式:=IF(B2<=5,IF(C2<B2,C2+0.15,C2),IF(D2<B2,D2+0.3,D2))

  C2公式:=ROUND((B2+RAND()*(RANDBETWEEN(-11,11)/100)),2)

  D2公式:=ROUND((B2+RAND()*(RANDBETWEEN(-26,26)/100)),2)


  

追问

谢谢,但是数据处理的时候,我需要根据C2的结果,直接右拉计算出D2E2F2等等的结果,同时依据C2直接下拉算出C3、D3、E3等的结果,需要模仿添加的数据太多了,使用辅助单元格还是不能解决问题。

追答

  因为每一个randbetween()显示的数字都不同,所以只有用一个,辅助单元格可以放入右边空白列。平时隐藏。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-23

注意:楼主的公式中,RANDBETWEEN(-11,11)、RANDBETWEEN(-26,26)各出现了多次

看着似乎同一个RANDBETWEEN(-11,11),但是实际上,它们在同一个公式中出现几次时,值是不同的。比如在条件判断中,RANDBETWEEN(-11,11)可能是一个负值,从而IF判断为<B2,但是在进入了<2的部分进行运算时,RANDBETWEEN(-11,11)会再次生成随机数,而这次的随机数可能生成的是正数。。

楼主可能需要重新结构性规划这个公式的处理,而不是试图找出公式有什么不对

建议,在辅助列先固化RANDBETWEEN:比如在E2输入公式:

=RANDBETWEEN(-11-IF(B2>5,15,0),11+IF(B2>5,15,0))

这将生成一个依据B2的大小产生的介于【-11,11】或【-26,26】之间的随机数并固化在单元格里

然后,在C2简化原公式为:

=ROUND((B2+RAND()*E2/100),2)+IF(SIGN(E2)=1,0,0.15*IF(B2<=5,1,2))

附件可参考

追问

谢谢,但是还是不行啊,我需要C2完成后,D2\E2\F2等都可以直接拉出来

谢谢,但是还是不行啊,我需要C2完成后,D2\E2\F2等都可以直接拉出来

追答

D2\E2\F2填充时使用一个固定的与B2相同的随机范围,还是变成按照C2重新计算?既然是要拉动,那你就要说明后面的数据是如何取值的,包括,引用B2是不是改变。

本回答被网友采纳
相似回答