|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 autohotey 于 2024-12-20 09:39 编辑
如果找不出错误点可以将公式拆解,或者用公式求值看哪一步错了。
看你确实不太懂,我给你详细讲解一遍。另外如果结果不符合需求,可以做一个效果表出来,即希望能达成什么效果,什么单元格输出什么内容。
错误:
1,大于且等于不是这么用的。应该是A>=B , 而不是A≥B
2,公式包含了中文括号。公式只识别英文括号。
3,and外边不需要加括号。即公式应该是 and(a<b,b>=c),而不是(and(a<b,b>=c))
其实你就三个判断情况:a<0.01,a>1, 0.01≤ a ≤ 1
思路分两步走:
1,先将3个判断情况写出来,分别输出一个结果(结果随便写,保证公式输出内容就行,例如我这边随便写的0,1,2)
可以看出我的公式是没有报错的 (图1) 。正常输出了1。
2,因此就可以进行第二步,将实际需要输出的内容(即保留有效位数),将测试的0,1,2给替换掉(图2)。我这里返回的结果取自你的公式ROUNDUP部分。不过看你文字描述(当计算结果>1时)应该返回百分数才对,你这个返回的都是数值,这个你自己根据实际需求去改吧。
即公式为 F6=
- =IFS((E6/D6*100)<0.01,ROUNDUP(E6/D6*100,1),
- (E6/D6*100)>1,ROUNDUP(E6/D6*100,2),
- AND(E6/D6*100<1,E6/D6*100>=0.01),ROUNDUP(E6/D6*100,3))
复制代码
注意,因为F6是合并单元格,所以F6无法下拉,下拉会导致下边单元格也合并。因此F11只能单独再设置公式(简单,就是将单元格行号由6改成11即可)
即 F11=
- =IFS((E11/D11*100)<0.01,ROUNDUP(E11/D11*100,1),
- (E11/D11*100)>1,ROUNDUP(E11/D11*100,2),
- AND(E11/D11*100<1,E11/D11*100>=0.01),ROUNDUP(E11/D11*100,3))
复制代码
图1:
图2:
|
|