永洪社区

标题: 格间计算iif有多个条件怎么写 [打印本页]

作者: kenneth    时间: 2023-11-2 11:40
标题: 格间计算iif有多个条件怎么写
在用格间计算的时候, 当指标编码为图中那几个的时候,就执行第一个公式 不然第二个,但是现在执行的都是第二个公式,像图片这样写起不了作用吗
iif(cell(1,2)==['L0-IND1','L2-IND8','L1-IND4',
iif(left(1)==0,0,left(2)/left(1)),iif(left(1)==0,0,1-(left(2)-left(1))/left(1)))



作者: yhdata_lyaa    时间: 2023-11-2 13:12
或 和 与,||   和&& 这样写看看
作者: yhdata_yzm    时间: 2023-11-2 13:13
原因在于判断里具体的值不能等于数组对象,需要用indexof去判断值是不是在数组里
作者: kenneth    时间: 2023-11-2 13:50
yhdata_lyaa 发表于 2023-11-2 13:12
或 和 与,||   和&& 这样写看看

iif(cell(1,2)=='L0-IND1'||cell(1,2)=='L2-IND8'||cell(1,2)=='L1-IND4',
iif(left(1)==0,0,left(2)/left(1)),iif(left(1)==0,0,1-(left(2)-left(1))/left(1)))    改成这样  但还是没有起作用
作者: kenneth    时间: 2023-11-2 13:51
yhdata_yzm 发表于 2023-11-2 13:13
原因在于判断里具体的值不能等于数组对象,需要用indexof去判断值是不是在数组里 ...

请问indexof这个怎么用呀
作者: yhdata_lyaa    时间: 2023-11-2 13:56
kenneth 发表于 2023-11-2 13:51
请问indexof这个怎么用呀
是嵌套了三个iff么,用if ...else 会清晰一点

楼上说的indexof用法参考
ndexOf
indexOf(string, substring)
返回substring在string中的索引位置,如果未找到substring,则返回0。
indexOf("hello world", "o")=4


作者: kenneth    时间: 2023-11-2 14:00
yhdata_lyaa 发表于 2023-11-2 13:56
是嵌套了三个iff么,用if ...else 会清晰一点

楼上说的indexof用法参考

格间计算可以用if。。else吗

作者: yhdata_lyaa    时间: 2023-11-2 14:03
kenneth 发表于 2023-11-2 14:00
格间计算可以用if。。else吗

可以的


作者: kenneth    时间: 2023-11-2 14:59
yhdata_lyaa 发表于 2023-11-2 14:03
可以的

试了一下  还是不得行  能帮忙看看吗if(cell(1,2)=='L0-IND1'){
iif(left(1)==0,0,left(2)/left(1))
}else if(cell(1,2)=='L2-IND8'){
iif(left(1)==0,0,left(2)/left(1))
}else if(cell(1,2)=='L1-IND4'){
iif(left(1)==0,0,left(2)/left(1))
}else{
iif(left(1)==0,0,1-(left(2)-left(1))/left(1))}



作者: yhdata_lyaa    时间: 2023-11-2 15:10
是全部的代码了吗,当前是什么效果呢,有没有报错?
截图看看完整的自由表绑定情况
作者: kenneth    时间: 2023-11-3 10:56
yhdata_lyaa 发表于 2023-11-2 15:10
是全部的代码了吗,当前是什么效果呢,有没有报错?
截图看看完整的自由表绑定情况 ...

就是判断那个指标编码为那几个值的时候    就用哪个公式     没报错  但是也没有起作用

作者: yhdata_lyaa    时间: 2023-11-3 11:11
kenneth 发表于 2023-11-3 10:56
就是判断那个指标编码为那几个值的时候    就用哪个公式     没报错  但是也没有起作用
...

debug看看进去到if条件里了吗
作者: yhdata_jr8TRILq    时间: 2023-11-5 11:43
学习
作者: kenneth    时间: 2023-11-6 13:45
yhdata_lyaa 发表于 2023-11-3 11:11
debug看看进去到if条件里了吗

直接debug 报错了

作者: yhdata_lyaa    时间: 2023-11-6 13:47
kenneth 发表于 2023-11-6 13:45
直接debug 报错了

不是,在if条件里,谁便debug看看有没有进去执行,
比如debug(1)
作者: kenneth    时间: 2023-11-6 13:58
本帖最后由 kenneth 于 2023-11-6 14:02 编辑
yhdata_lyaa 发表于 2023-11-6 13:47
不是,在if条件里,谁便debug看看有没有进去执行,
比如debug(1)

这样子吗 一直报false
if(debug(cell(1,2)=='L0-IND1')){
iif(left(1)==0,0,left(2)/left(1))
}else if(debug(cell(1,2)=='L2-IND8')){
iif(left(1)==0,0,left(2)/left(1))
}else if(debug(cell(1,2)=='L1-IND4')){
iif(left(1)==0,0,left(2)/left(1))
}else{
iif(left(1)==0,0,1-(left(2)-left(1))/left(1))}


作者: yhdata_lyaa    时间: 2023-11-6 14:02
kenneth 发表于 2023-11-6 13:58
这样子吗
iif(debug(cell(1,2)==['L0-IND1','L2-IND8','L1-IND4']),
iif(left(1)==0,0,left(2)/left(1)) ...

不是给其他脚本括起来,单独写在一个位置
if(a>0){
debug(1)
left(2)/left(1)
}
作者: kenneth    时间: 2023-11-6 14:22
yhdata_lyaa 发表于 2023-11-6 14:02
不是给其他脚本括起来,单独写在一个位置
if(a>0){
debug(1)

能麻烦帮忙看看么 就是合计那个地方的

作者: yhdata_lyaa    时间: 2023-11-6 16:19
这样写不行哦
扩展以后不是只有cell(1,2)一个,cell(1,2)只是第一个扩展出来的单元格,扩展后还有cell(1,3),cell(1,4)


而且格间计算扩展出来的计算是一样的

作者: kenneth    时间: 2023-11-6 16:26
yhdata_lyaa 发表于 2023-11-6 16:19
这样写不行哦,
扩展以后不是只有cell(1,2)一个,cell(1,2)只是第一个扩展出来的单元格,扩展后还 ...

那我想实现这种写法的话怎么弄啊 因为我之前全是分开写的 实在太慢了  我想优化一哈
作者: yhdata_lyaa    时间: 2023-11-6 17:03
kenneth 发表于 2023-11-6 16:26
那我想实现这种写法的话怎么弄啊 因为我之前全是分开写的 实在太慢了  我想优化一哈 ...

都是指标编码,为什么计算方法不一样呀
还是分开写嘛




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4