求一个公式,从几个数中间选三个最小的

从五个数中找出三个最小值

let(a,let(a, value("分公司情况",4,1)-value("市值",2,1),b,value("分公司情况",4,1)-value("分公司情况",4,7),(a+b)/2),b,let(a, value("分公司情况",6,1)-value("市值",4,1),b,value("分公司情况",6,1)-value("分公司情况",6,7),(a+b)/2),c,let(a, value("分公司情况",8,1)-value("市值",6,1),b,value("分公司情况",8,1)-value("分公司情况",8,7),(a+b)/2),d,let(a, value("分公司情况",10,1)-value("市值",8,1),b,value("分公司情况",10,1)-value("分公司情况",10,7),(a+b)/2),e,let(a, value("分公司情况",12,1)-value("市值",10,1),b,value("分公司情况",12,1)-value("分公司情况",12,7),(a+b)/2),a)

在let公式中取最小的三个值,应该怎么取呢

FineReport yzm101920 发布于 2021-5-31 22:33
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
yzm101920Lv3见习互助
发布于2021-6-2 22:17

image.png

let(a, if(fgs~B4 < 0 && fgs~B5 < 4, fgs~B1, ''), a) + "," + 

let(b, if(fgs~C4 < 0 && fgs~C5 < 4, fgs~C1, ''), b) + "," +

 let(c, if(fgs~D4 < 0 && fgs~D5 < 4, fgs~D1, ''), c) + "," +

 let(d, if(fgs~E4 < 0 && fgs~E5 < 4, fgs~E1, ''), d) + "," + 

let(e, if(fgs~F4 < 0 && fgs~F5 < 4, fgs~F1, ''), e)

创建相应的报表表格,得出结果

使用let函数,根据在函数中判断

fgs是报表控件的名称,B4等是内容在单元格的位置

使用if判断得出结果

最佳回答
0
用户a8068717Lv4初级互助
发布于2021-6-1 07:48
能否sql排序?
  • yzm101920 yzm101920(提问者) 这是在公式中使用的let函数,不知道能不能加SQL
    2021-06-01 08:34 
最佳回答
0
shirokoLv6资深互助
发布于2021-6-1 09:04(编辑于 2021-6-1 11:18)

感觉是想到哪写到哪写了这么个公式,不如整理一下需求先,把需求简化之后再写

或者如果你喜欢这么写,不如用单元格存储中间值,看起来也会清晰很多

----

从a,b,c,d,e五个数中取最小的3个,

GREPARRAY(SORTARRAY(ARRAY(a,b,c,d,e)),index<=3)

  • yzm101920 yzm101920(提问者) 效果是一样的啊,一共五个值,a,b,c,d,e let(a,let(a, value(\"分公司情况\",4,1)-value(\"市值\",2,1),b,value(\"分公司情况\",4,1)-value(\"分公司情况\",4,7),(a+b)/2), b,let(a, value(\"分公司情况\",6,1)-value(\"市值\",4,1),b,value(\"分公司情况\",6,1)-value(\"分公司情况\",6,7),(a+b)/2), c,let(a, value(\"分公司情况\",8,1)-value(\"市值\",6,1),b,value(\"分公司情况\",8,1)-value(\"分公司情况\",8,7),(a+b)/2), d,let(a, value(\"分公司情况\",10,1)-value(\"市值\",8,1),b,value(\"分公司情况\",10,1)-value(\"分公司情况\",10,7),(a+b)/2), e,let(a, value(\"分公司情况\",12,1)-value(\"市值\",10,1),b,value(\"分公司情况\",12,1)-value(\"分公司情况\",12,7),(a+b)/2), a+b+c+d+e)
    2021-06-01 10:00 
  • shiroko shiroko 回复 yzm101920(提问者) 你这五个值又是什么呢?你的甲方给你的需求就是五个let求最小吗。。首先从五个let这个限制走出来。。
    2021-06-01 10:01 
  • yzm101920 yzm101920(提问者) 回复 shiroko 五个值是通过let计算出来的,下边是原公式 \"本\"+if($radio=\"m\",\"月\",\"周\")+\"最差分公司为:\"+value(\"分公司情况\",1,1)+\",目前从质量雷达图中看出,与分公司均值对比,三项及时项\"+let(a, value(\"分公司情况\",4,1)-value(\"市值\",2,1), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分; 与最好分公司比较,三项及时项\"+let(a, value(\"分公司情况\",4,1)-value(\"分公司情况\",4,7), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分、 催修与解决率\"+let(a, value(\"分公司情况\",6,1)-value(\"分公司情况\",6,7), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分、 重投投诉率\"+let(a, value(\"分公司情况\",8,1)-value(\"分公司情况\",8,7), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分、 装机满意度\"+let(a, value(\"分公司情况\",10,1)-value(\"分公司情况\",10,7), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分、 维修满意度\"+let(a, value(\"分公司情况\",12,1)-value(\"分公司情况\",12,7), if(a>0,\"提升\",if(a=0,\"持平\",\"下降\"))+ round(abs(a),2))+\"分。综合评定:\"+value(\"分公司情况\",1,1)+ \"需重点提升的方向为:\"+let(a,let( a, value(\"分公司情况\",4,1)-value(\"市值\",2,1),b,value(\"分公司情况\",4,1)-value(\"分公司情况\",4,7),(a+b)/2), b,let(a, value(\"分公司情况\",6,1)-value(\"市值\",4,1),b,value(\"分公司情况\",6,1)-value(\"分公司情况\",6,7),(a+b)/2), c,let(a, value(\"分公司情况\",8,1)-value(\"市值\",6,1),b,value(\"分公司情况\",8,1)-value(\"分公司情况\",8,7),(a+b)/2), d,let(a, value(\"分公司情况\",10,1)-value(\"市值\",8,1),b,value(\"分公司情况\",10,1)-value(\"分公司情况\",10,7),(a+b)/2), e,let(a, value(\"分公司情况\",12,1)-value(\"市值\",10,1),b,value(\"分公司情况\",12,1)-value(\"分公司情况\",12,7),(a+b)/2), rank(a,b,c,d,e,1))
    2021-06-01 10:42 
  • shiroko shiroko 回复 yzm101920(提问者) 这么多value看的头都大了,去用sql算
    2021-06-01 11:16 
  • shiroko shiroko 回复 yzm101920(提问者) 算了给你一个5取3的公式模式,你自己嵌套把。。
    2021-06-01 11:18 
  • 2关注人数
  • 792浏览人数
  • 最后回答于:2021-6-2 22:17
    请选择关闭问题的原因
    确定 取消
    返回顶部